1.33M

10_dstu_langchain

1.

Langchain

2.

Определение
Langchain – это фреймворк, который помогает облегчить
интеграцию LLM в приложения.
Старт проекта стоялся в 2022 году

3.

Чем хорош langchain?
• Стандартизация интерфейсов
• Оркестрация
• Наблюдаемость и оценка

4.

Архитектура

5.

Структура библиотеки
• Langchain-core – базовые абстракции и язык выражения Langchain
• Integrations – интеграционные пакеты, такие как langchain-ai,
langchain-qdrant, etc. Пакеты написаны как командой langchain,
так и разработчиками интеграций
• Langchain – цепи, агенты и стратегии поиска, которые составляют
архитектуру приложения
• Langgraph – создание приложения путем моделирования шагов в
виде ребер и узлов

6.

Структура библиотеки
• Langchain-community – сторонние интеграции,
поддерживываемые сообществом
• Langserve – деплой langchain как REST-приложение
• LangSmith – платформа разработчика, которая позволяет debug,
тестировать, оценивать и контролировать приложения с LLM

7.

Концепции. Chat Models
• Базовый интерфейс – BaseChatModel - реализует поддержку асинхронного
программирования, стриминг, батчинг и т.д.

8.

Концепции. Chat Models
• Стандартные параметры большинства моделей:
Параметр
Описание
model
Имя или идентификатор модели, которую
temperature
Управляет случайностью выхода модели. Более высокое значение (например, 1,0) делает ответы
более креативными, в то время как более низкое значение (например, 0,0) делает их более
детерминированными и сфокусированными.
timeout
Максимальное время (в секундах), чтобы дождаться ответа от модели, прежде чем отменить запрос.
max_tokens
Ограничивает общее количество токенов (слова и пунктуация) в ответе.
stop
Определяет стоп -последовательности, которые указывают, когда модель должна прекратить
генерировать токены. Например, можно использовать определенные строки для сигнала конца
ответа.
max_retries
Количество попыток для получения ответа
api_key
Ключ API, необходимый для аутентификации с поставщиком моделей.
base_url
URL -адрес конечной точки API, где отправляются запросы. Обычно это предоставляется
поставщиком модели и необходимо для руководства вашими запросами.

9.

Концепции. Messages
• Сообщения - это единица общения с моделями
• Каждое сообщение включает в себя роль и контент

10.

Концепции. Messages
Роли
Описание
system
Используется для того, чтобы рассказать модели чата, как вести себя и как
предоставить генерацию. Не поддерживается всеми поставщиками моделей чата.
user
Используется пользователем, взаимодействующим с моделью, обычно в форме
текста или другого интерактивного ввода.
assistant
Используется для ответа модели, который может включать текст или запрос на вызов
инструментов.
tool
Сообщение, используемое для передачи результатов обращения инструмента
обратно в модель после получения внешних данных или обработки. Используется с
моделями чата, которые поддерживают вызов инструмента.
function (legacy)
Это устаревшая роль, соответствующая API унаследованной функции Openai. Вместо
этого следует использовать роль tool.

11.

Концепции. Chat History

12.

Концепции. Memory

13.

Концепции. Tools
• Все инструменты имплементируют интерфейс BaseTool
• Ключевые атрибуты, которые соответствуют схеме инструмента:
• name: имя инструмента.
• description: Описание того, что делает инструмент.
• args: свойство, которое возвращает схему JSON для аргументов
инструмента.
• Ключевые методы выполнения функции, связанной с
инструментом:
• invoke: вызывает инструмент с данными аргументами.
• ainvoke: вызывает инструмент с данными аргументами, асинхронно.

14.

Концепции. Tools
• Пример создания инструмента:
from langchain_core.tools import tool
@tool
def multiply(a: int, b: int) -> int:
"""Multiply two numbers."""
return a * b

15.

Концепции. Tool calling

16.

Концепции. Tool calling

17.

Концепции. Structured Output

18.

Концепции. Structured Output
• Пример объявления схемы:
from pydantic import BaseModel, Field
class ResponseFormatter(BaseModel):
"""Always use this tool to structure your response to the user."""
answer: str = Field(description="The answer to the user's question")
followup_question: str = Field(description="A followup question the
user could ask")
llm.with_structured_output(ResponseFormatter)

19.

Концепции. Document loaders
• Базовый класс BaseLoader
• Пример:
from langchain_community.document_loaders.csv_loader import
CSVLoader
loader = CSVLoader(
... # <-- Integration specific parameters here
)
data = loader.load()

20.

Концепции. Retrieval

21.

Концепции. Text splitters

22.

Концепции. Embedding models

23.

Концепции. Vector Stores

24.

Концепции. Retriever

25.

Концепции. Retrieval Augmented Generation
(RAG)

26.

Концепции. Agents

27.

Концепции. Prompt templates
• Пример:
from langchain_core.prompts import ChatPromptTemplate
prompt_template = ChatPromptTemplate([
("system", "You are a helpful assistant"),
("user", "Tell me a joke about {topic}")
])
prompt_template.invoke({"topic": "cats"})

28.

Полезные ссылки
• https://python.langchain.com/docs/introduction/

29.

Extra
Command
Link
Команда 1
https://langchainai.github.io/langgraph/tutorials/code_assistant/langgraph_code_assistant/#setup
Команда 2
https://langchain-ai.github.io/langgraph/tutorials/customer-support/customersupport/#populate-the-database
Команда 3
https://langchain-ai.github.io/langgraph/tutorials/sql-agent/
Команда 4
https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag/#nodes-andedges
English     Русский Rules