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:

bash
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:

bash
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. Выгода появляется, когда вызовов много и они связаны. Вот агент с функцией-инструментом:

bash
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.