Запись архива

Создание ИИ-агента на Python с помощью LangChain: пошаговое руководство

Практическое руководство по созданию автономного ИИ-агента с использованием LangChain. Выбор фреймворка, настройка инструментов, памяти и выполнение задач.

Скриншот кода ИИ-агента на Python с использованием библиотеки LangChain
Скриншот кода ИИ-агента на Python с использованием библиотеки LangChain
Fırtına Haber.png | by Fırtına Haber | wikimedia_commons | CC BY-SA 4.0

Автономные ИИ-агенты — одна из самых востребованных тем в современной разработке. Вместо того чтобы вручную писать цепочки вызовов LLM, разработчики всё чаще передают агенту задачу, а он сам решает, какие инструменты задействовать, как разбить задачу на шаги и когда остановиться. LangChain остаётся одним из самых зрелых фреймворков для таких сценариев. В этой статье — практический гайд по созданию агента на Python, выбору подходящего фреймворка и типичным подводным камням.

Что такое ИИ-агент и зачем он нужен

ИИ-агент — это программа, которая использует языковую модель для принятия решений: выбирает, какой инструмент вызвать, в каком порядке, и когда задача выполнена. В отличие от простого чат-бота, агент может выполнять действия — искать в интернете, запускать код, обращаться к базам данных. LangChain предоставляет готовые классы `AgentExecutor`, `Tool` и `Memory`, которые позволяют собрать такого агента за несколько десятков строк.

Выбор фреймворка: сравнение популярных вариантов

Перед тем как погружаться в код, стоит оценить доступные инструменты. Ниже — таблица с тремя популярными фреймворками для создания агентов.

Фреймворк Язык Поддержка мультиагентов Основные особенности
LangChain Python/JS Да (через LangGraph) Большая экосистема, интеграции с десятками LLM и инструментов, встроенные агенты (ReAct, OpenAI functions)
CrewAI Python Да (из коробки) Децентрализованная архитектура, роли, задачи, делегирование. Проще для многопоточных сценариев
AutoGen (Microsoft) Python Да Гибкая настройка диалогов между агентами, поддержка групповых чатов, человеко-в-контуре

Для одиночного агента с простыми инструментами LangChain — самый документированный и стабильный выбор. Для сложных мультиагентных систем стоит присмотреться к CrewAI или AutoGen.

Установка и базовая настройка

Установите пакет LangChain и выбранный провайдер LLM. В примере используем OpenAI, но можно заменить на любой другой:

bash
pip install langchain langchain-openai

Создайте файл `agent.py` и импортируйте необходимые модули:

python
from langchain.agents import initialize_agent, Tool, AgentType
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory

Укажите API-ключ через переменную окружения `OPENAI_API_KEY`.

Создание инструментов

Инструмент — это функция, которую агент может вызвать. В LangChain инструмент задаётся через класс `Tool` с именем, описанием и функцией-обработчиком. Пример: поиск в базе знаний (имитация) и калькулятор.

python
def search_database(query: str) -> str:
# Имитация поиска
return f”Результаты поиска по запросу: {query}”

def calculator(expression: str) -> str:
return str(eval(expression))

tools = [
Tool(name=”SearchDB”, func=search_database, description=”Поиск в локальной базе данных”),
Tool(name=”Calculator”, func=calculator, description=”Выполнение арифметических операций”)
]

Описание инструмента критически важно — агент использует его для принятия решения. Чем точнее описание, тем выше вероятность правильного выбора.

Добавление памяти и инициализация агента

Память позволяет агенту помнить контекст предыдущих шагов. `ConversationBufferMemory` хранит всю историю диалога.

python
memory = ConversationBufferMemory(memory_key=”chat_history”, return_messages=True)

llm = OpenAI(temperature=0, model_name=”gpt-4″)

agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True
)

Тип агента `CONVERSATIONAL_REACT_DESCRIPTION` подходит для диалоговых сценариев. Альтернативы: `ZERO_SHOT_REACT_DESCRIPTION` (для одноразовых задач) и `OPENAI_FUNCTIONS` (более эффективен, но требует модели с поддержкой функций).

Запуск и тестирование

Теперь можно отправить агенту задачу:

python
response = agent.run(“Найди в базе данных информацию о LangChain, затем посчитай 2+2.”)
print(response)

В консоли вы увидите цепочку рассуждений агента (Action, Action Input, Observation, Thought). Важно: если агент выбирает неверный инструмент, проверьте описания и температуру модели.

Подводные камни и рекомендации

Температура модели. Для агентов, работающих с инструментами, лучше использовать низкую температуру (0.0–0.2), чтобы уменьшить случайные ответы.
2. Ограничение числа шагов. По умолчанию агент может делать до 15 итераций. Можно задать параметр `max_iterations` в `initialize_agent`.
3. Обработка ошибок. Если инструмент возвращает исключение, агент может зациклиться. Рекомендуется оборачивать функции в try/except и возвращать понятное сообщение об ошибке.
4. Безопасность. Агент с доступом к выполнению кода или внешним API может нанести ущерб. Всегда ограничивайте права инструментов и используйте изолированное окружение.

Что дальше

После того как базовый агент заработал, можно расширить его: добавить поиск в интернете через `SerpAPI`, интеграцию с базой данных через SQL, или подключить память через `ConversationSummaryMemory` для экономии токенов. LangChain продолжает активно развиваться — следите за обновлениями в официальной документации. Если вы планируете мультиагентную архитектуру, изучите LangGraph или CrewAI: они предоставляют более гибкие механизмы для координации.