Настройка AI-агентов с помощью LangChain: пошаговое руководство для разработчиков

Пошаговое руководство по созданию и настройке AI-агентов на базе LangChain: от установки до развёртывания. Практические примеры для российских LLM и API.

Редакционная обложка COMRAD404: Настройка AI-агентов с помощью LangChain: пошаговое руководство для разработчиков
Редакционная обложка COMRAD404: Настройка AI-агентов с помощью LangChain: пошаговое руководство для разработчиков
Редакционная тематическая обложка COMRAD404

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

Что такое AI-агент в LangChain

В терминах LangChain агент — это сущность, которая получает задачу, выбирает последовательность действий (инструментов) и выполняет их, возвращая результат. В отличие от простой цепочки (chain), агент может динамически решать, какие инструменты вызвать, и перебирать варианты, если что-то пошло не так.

Основные компоненты:
— LLM — модель, которая принимает решение. Для российских разработчиков доступны YandexGPT, GigaChat (Сбер) и другие, работающие через API.
— Инструменты — функции, которые агент может вызывать: поиск в интернете, чтение файлов, выполнение кода, запросы к государственным или корпоративным API.
— Память — хранит контекст диалога или историю вызовов. Для российских проектов особенно важно учитывать требования к хранению данных (ФЗ-152).
— Исполнитель (executor) — цикл, который управляет вызовами и обработкой ошибок.

Установка и первый агент с YandexGPT

Установка LangChain выполняется через pip:

bash
pip install langchain langchain-openai langchain-yandex

Для работы с YandexGPT потребуется API-ключ из Yandex Cloud. Его можно передать через переменную окружения `YANDEX_API_KEY` или указать в коде.

Простой агент, который может отвечать на вопросы и выполнять арифметику:

python
from langchain_yandex import YandexLLM
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import tool

llm = YandexLLM(model=»yandexgpt/latest», temperature=0)

@tool
def calculator(expression: str) -> str:
«»»Выполняет математическое выражение.»»»
return str(eval(expression))

tools = [calculator]

agent = create_react_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

result = agent_executor.invoke({«input»: «Сколько будет 25 * 4 + 10?»})
print(result[«output»])

Этот код создаёт агента с одним инструментом — калькулятором. При запросе агент решает, нужно ли использовать калькулятор, и если да, вызывает его. Для GigaChat используйте аналогичный класс из `langchain_gigachat`.

Выбор инструментов: пример с курсом ЦБ РФ

Ключевая задача при настройке AI-агента — правильно подобрать инструменты. В LangChain есть встроенные наборы: для поиска в интернете (DuckDuckGo), работы с файлами, выполнения Python-кода (PythonREPL) и доступа к базам данных. Но для российских проектов часто нужны инструменты, работающие с локальными данными.

При создании собственного инструмента важно:
— Дать понятное описание на русском языке — LLM использует его для выбора правильного инструмента.
— Обрабатывать ошибки внутри инструмента, чтобы агент не «зависал».
— Не передавать конфиденциальные данные в открытом виде.

Пример инструмента для получения курса валют от Центрального банка России:

python
import requests
import xml.etree.ElementTree as ET

@tool
def get_cbr_rate(currency: str) -> str:
«»»Возвращает курс валюты по данным ЦБ РФ. currency — трёхбуквенный код, например USD, EUR, CNY.»»»
url = «http://www.cbr.ru/scripts/XML_daily.asp»
try:
response = requests.get(url, timeout=5)
root = ET.fromstring(response.content)
for valute in root.findall(«Valute»):
char_code = valute.find(«CharCode»).text
if char_code.upper() == currency.upper():
value = valute.find(«Value»).text
name = valute.find(«Name»).text
return f»{name}: {value} руб.»
return «Валюта не найдена»
except Exception as e:
return f»Ошибка при получении курса: {str(e)}»

Этот инструмент можно добавить в список tools агента. Описание на русском помогает YandexGPT корректно выбирать его при запросе «Какой сегодня курс доллара?».

Сравнение LangChain с другими фреймворками

Фреймворк Язык Тип агентов Популярность (GitHub stars) Гибкость Поддержка российских LLM
LangChain Python react, plan-and-execute, custom 95k+ Высокая Есть (YandexGPT, GigaChat)
CrewAI Python ролевые агенты с очередями задач 25k+ Средняя Требуется доработка
AutoGen Python диалоговые агенты, multi-agent 35k+ Высокая Через OpenAI API (не для YandexGPT)
Semantic Kernel C#, Python плагинная архитектура 22k+ Средняя Только через OpenAI

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

Типичные ошибки и их решение

Агент зацикливается. Если модель не может найти правильный инструмент, она может повторять один и тот же вызов. Решение: ограничить максимальное количество итераций (`max_iterations=5`) и добавить fallback-инструмент, например возврат сообщения «Не удалось выполнить запрос».
2. Некорректное описание инструмента. LLM может вызвать не тот инструмент, если описание нечёткое. Используйте конкретные глаголы и примеры в описании. Для YandexGPT лучше писать описания на русском.
3. Утечка контекста. Память агента не должна содержать чувствительные данные. Используйте отдельные сессии или очищайте историю после каждого запроса.
4. Ошибки в коде инструмента. Если инструмент выбрасывает исключение, агент может остановиться. Обёртывайте вызовы в try-except и возвращайте понятное сообщение об ошибке, как в примере с ЦБ РФ.

Что проверить перед развёртыванием

Перед тем как запускать агента в продуктивной среде, протестируйте его на наборе сценариев. Убедитесь, что:
— агент корректно обрабатывает неполные или противоречивые запросы (например, «привет» или «что-то про валюту»);
— инструменты не вызывают внешние сервисы без лимитов – для API ЦБ РФ установите таймаут и кэширование;
— стоимость вызовов LLM укладывается в бюджет (YandexGPT тарифицируется по токенам, можно ограничить количество шагов);
— данные не хранятся дольше необходимого – особенно если агент работает с персональными данными.

LangChain — это активный проект с частыми обновлениями. При появлении новых версий проверяйте changelog: в версии 0.3 изменили API для агентов, и старый код может потребовать адаптации. Официальная документация и примеры на GitHub остаются лучшим источником для актуальной информации. Для российских разработчиков также полезен канал LangChain в Telegram и сообщество в Habr.