
Автономные ИИ-агенты — одна из самых востребованных тем в современной разработке. Вместо того чтобы вручную писать цепочки вызовов 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: они предоставляют более гибкие механизмы для координации.