Similar presentations:
10_dstu_langchain
1.
Langchain2.
Определение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 History12.
Концепции. Memory13.
Концепции. 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 calling16.
Концепции. Tool calling17.
Концепции. Structured Output18.
Концепции. 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.
Концепции. Retrieval21.
Концепции. Text splitters22.
Концепции. Embedding models23.
Концепции. Vector Stores24.
Концепции. Retriever25.
Концепции. Retrieval Augmented Generation(RAG)
26.
Концепции. Agents27.
Концепции. 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.
ExtraCommand
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