LangChain что это: из чего состоит и когда он действительно нужен
Объясняем, что такое LangChain и из каких пакетов он состоит, для каких задач он полезен и в каких случаях хватит обычного OpenAI SDK. Сравниваем код и расходы.
5 мин · · разработка · агенты
LangChain что это: открытая библиотека для Python (есть и версия для JavaScript), которая даёт общий набор «кирпичиков» для приложений на больших языковых моделях: единый интерфейс к моделям разных поставщиков, инструменты, агентов, работу с документами и поиском. Название часто встречается в туториалах, поэтому новички решают, что без него никак. Это не так. Дальше по порядку: из каких частей состоит экосистема, для чего LangChain нужен на практике и когда проще обойтись официальным SDK. Описание следует документации LangChain (docs.langchain.com); пакеты развиваются быстро, поэтому детали сверяйте с ней.
Что такое LangChain и из чего он состоит
Под словом «LangChain» обычно понимают несколько связанных продуктов. По документации они делятся так:
| Часть | Что это | Когда нужна |
|---|---|---|
langchain | Основной пакет: модели, сообщения, инструменты, create_agent, middleware, структурированный вывод | Для агента и типовых сценариев |
Пакеты интеграций (langchain-openai, langchain-anthropic и другие) | Подключение к конкретным поставщикам моделей | Всегда, когда нужен вызов модели |
langchain-core | Базовые абстракции: Document, векторные хранилища, интерфейсы | Подтягивается автоматически |
langchain-text-splitters | Разбиение текстов на фрагменты | Для RAG и суммаризации |
| LangGraph | Низкоуровневая среда выполнения и оркестрация для графов, где есть и детерминированные шаги, и агентные | Для сложных потоков с состоянием |
| Deep Agents | Готовая «обвязка» для долгих задач: файловая система, субагенты, суммаризация контекста | Для автономных многошаговых агентов |
| LangSmith | Трассировка, отладка и оценка | Для наблюдаемости, по желанию |
Главная идея, которую подчёркивает документация: агент это модель плюс обвязка. Модель в цикле вызывает инструменты, пока задача не решена, а LangChain даёт промпт, инструменты и middleware вокруг этого цикла. Сама библиотека модели не содержит: вы подключаете любую модель, у которой есть интеграция или OpenAI-совместимый адрес.
LangChain для чего: типичные задачи
- Единый интерфейс к моделям. Один и тот же код
llm.invoke(...)работает с разными поставщиками, а модель меняется одной строкой. - Агенты с инструментами.
create_agentберёт на себя цикл «модель, вызов функции, результат, снова модель». - Структурированный ответ. Объект Pydantic вместо текста:
with_structured_outputилиresponse_formatу агента. - RAG. Загрузчики документов, сплиттеры, векторные хранилища и ретриверы.
- Надёжность. Готовые middleware для повторов, лимитов вызовов и суммаризации истории.
- Наблюдаемость. Трассировка шагов через LangSmith.
Один и тот же вызов: OpenAI SDK и LangChain
Чтобы понять разницу, сравните минимальный вызов. Сначала официальный SDK. Для OpenAI-формата адрес Zukko заканчивается на /v1:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zukko.pro/v1",
api_key=os.environ["ZUKKO_API_KEY"],
)
reply = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "Объясни, что такое токен, в двух предложениях."}],
)
print(reply.choices[0].message.content)Теперь то же самое в LangChain:
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-6.1-sol",
base_url="https://api.zukko.pro/v1",
api_key=os.environ["ZUKKO_API_KEY"],
)
print(llm.invoke("Объясни, что такое токен, в двух предложениях.").content)Для одного вызова обе версии равноценны: LangChain здесь лишь добавляет слой над тем же запросом к /v1/chat/completions. Выгода появляется, когда вызовов много и они связаны. Вот агент с функцией-инструментом:
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def convert_to_usd(rub: float, rate: float) -> float:
"""Перевести рубли в доллары по заданному курсу (рублей за доллар)."""
return round(rub / rate, 2)
agent = create_agent(
model=llm,
tools=[convert_to_usd],
system_prompt="Ты помощник по расчётам. Арифметику делай через инструменты.",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "Сколько долларов 15 000 рублей при курсе 90?"}]}
)
print(result["messages"][-1].content)Чтобы собрать такой цикл на чистом SDK, вам нужно самому разбирать tool_calls, выполнять функции и добавлять результаты в историю (это разобрано в статье ИИ-агент на Python с нуля). Это не сложно, но бойлерплейта прибавляется.
Когда LangChain нужен, а когда хватит SDK
| Ситуация | Что выбрать |
|---|---|
| Один запрос, чат с историей, стриминг | Достаточно OpenAI SDK или Anthropic SDK |
| Скрипт, который дёргает модель в паре мест | SDK, меньше зависимостей |
| Нужна смена поставщика модели без переписывания кода | LangChain или сам шлюз с общим форматом |
| Агент с несколькими инструментами и ограничениями шагов | LangChain (create_agent) |
| Автономный агент для долгих задач с файлами | Deep Agents |
| RAG с загрузчиками, сплиттерами и хранилищами | LangChain или специализированная библиотека |
| Сложный граф с ветвлением и сохранением состояния | LangGraph |
Честные минусы LangChain: больше зависимостей, больше слоёв при отладке (ошибка может прийти из любого из них), быстрые изменения API между версиями. Если задача укладывается в несколько обращений к модели, дополнительный слой не окупится. Для задач вокруг индексации данных есть и другие библиотеки, например LlamaIndex. А кому нужен только единый адрес и формат, помогает сам шлюз: он принимает запросы в OpenAI- и Anthropic-форматах для любой модели каталога.
Как подключить Zukko к LangChain
Правило простое: интеграции на основе OpenAI-формата получают base_url с /v1, а ключ fetch_... берётся из кабинета. Любую модель из каталога можно подставить в параметр model; актуальный список возвращает GET https://api.zukko.pro/v1/models. Подробная инструкция с переменными окружения: LangChain: как указать наш base_url.
Влияет ли LangChain на расходы
Сам LangChain токены не добавляет: платите вы за запросы к модели. Но у типовых сценариев есть скрытая цена. Агент вызывает модель несколько раз и каждый раз отправляет накопленную историю; суммаризация истории делает отдельные вызовы; повторы при ошибках оплачиваются как обычные запросы. Пример с формулой на gpt-6.1-sol (0.27 / 1.32 за 1M на 18 октября 2026); объёмы токенов условные, это допущение для иллюстрации:
- Один вызов: 1 000 входных и 300 выходных токенов: 1000 × 0.27 + 300 × 1.32 = 270 + 396 = 666 миллионных долей доллара, то есть $0.000666.
- Агент из пяти вызовов: входы 1 000, 1 300, 1 600, 1 900 и 2 200 (сумма 8 000), по 100 выходных (сумма 500): 8000 × 0.27 + 500 × 1.32 = 2160 + 660 = 2820, то есть $0.00282.
Для Claude в OpenAI-формате весь вход идёт по цене входа. Скидка за кэш у Claude возможна только в Anthropic-формате, а у GPT чтение кэша видно в обоих. Чтобы агент не ушёл в минус, ограничивайте шаги и заводите отдельный ключ с дневным лимитом: как ограничить расход ключа.
Частые вопросы
LangChain бесплатный?
Библиотека с открытым исходным кодом, но запросы к моделям платные. LangSmith и другие сервисы вокруг имеют собственные условия, смотрите на сайте LangChain. Цены на модели в Zukko указаны за 1M токенов, список через GET /v1/models.
Нужен ли LangChain, чтобы пользоваться Claude или GPT через API?
Нет. Достаточно официального SDK или обычного HTTP-запроса. LangChain нужен, когда вы строите агента, RAG или хотите единую обвязку.
Чем LangChain отличается от LangGraph и Deep Agents?
LangGraph это низкоуровневая среда выполнения, LangChain даёт агента с настраиваемой обвязкой, а Deep Agents это готовый «из коробки» вариант для долгих задач на их основе.
Работает ли LangChain с моделями не от OpenAI?
Да, через интеграции конкретных поставщиков или через любой OpenAI-совместимый адрес с ChatOpenAI и base_url. Поддержку нужных возможностей (инструменты, структурированный вывод) у выбранной модели проверьте на своих задачах.
Попробуйте оба варианта кода выше на одном ключе: создайте его в кабинете, а клиентские примеры смотрите в справочнике по Python.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Промпт-инъекция: что это и как защитить бота и агентаОбъясняем, как работает промпт-инъекция через пользовательский ввод и чужие документы, и какие меры снижают ущерб: изоляция данных, права инструментов, лимиты ключа.
- Claude Code YOLO: режимы разрешений и работа без подтвержденийОтдельного режима YOLO в Claude Code нет, зато есть шесть режимов разрешений и гибкие правила. Разбираем, как перестать нажимать «Да» и не лишиться файлов.
- Claude Code: чек-лист лучших практик для ежедневной работыПривычки, которые делают работу с Claude Code предсказуемой: короткий CLAUDE.md, план перед правками, мелкие задачи, проверка результата и контроль расхода.
- MCP-сервер на Java: минимальный пример с одним инструментомПишем минимальный MCP-сервер на Java с одним инструментом, регистрируем его в Claude Code и учимся находить причину, если агент его не видит.