langchain

LangChain — open-source фреймворк для Python и JavaScript, предназначенный для создания приложений на основе больших языковых моделей. Он предоставляет стандартизированные абстракции для цепочек вызовов LLM, интеграции с векторными базами данных, инструментами и агентами, позволяя быстро собирать сложные AI-приложения из готовых компонентов.

Зачем появился LangChain

В 2022 году разработчики столкнулись с одними и теми же задачами при создании LLM-приложений: как передать историю диалога, как подключить поиск по документам, как вызвать внешний инструмент, как структурировать промпт. LangChain (Harrison Chase, октябрь 2022) предложил готовые строительные блоки, устранив необходимость писать boilerplate-код для каждого проекта заново. Фреймворк стал одним из самых быстро набравших звёзды репозиториев в истории GitHub.

Основные концепции LangChain

Модели и провайдеры

LangChain предоставляет единый интерфейс к десяткам LLM-провайдеров: OpenAI, Anthropic, Google, Cohere, Ollama (локальные модели), Azure OpenAI. Смена провайдера требует минимального изменения кода — замены класса модели.

Промпт-шаблоны (PromptTemplate)

Параметризованные шаблоны с переменными подстановки. ChatPromptTemplate для диалоговых моделей поддерживает системный промпт, историю сообщений и пользовательский ввод. Few-shot промпты собираются из динамически выбранных примеров.

Chains (цепочки)

Последовательности вызовов, где выход одного компонента служит входом следующего. LCEL (LangChain Expression Language) позволяет объявлять цепочки декларативно: chain = prompt | llm | output_parser. Поддерживает параллельное выполнение, ветвление, fallback.

Retrieval и Vector Stores

Встроенная интеграция с десятками векторных баз (Chroma, Qdrant, Pinecone, Weaviate, FAISS). Document Loaders загружают PDF, Word, HTML, Notion, базы данных. Text Splitters разбивают документы на чанки. Весь RAG-пайплайн собирается за несколько строк кода.

Агенты и инструменты

Агент выбирает, какой инструмент вызвать исходя из задачи, интерпретирует результат и продолжает рассуждение. Стандартные инструменты: Wikipedia, DuckDuckGo Search, Python REPL, Shell, SQL Database. Кастомный инструмент создаётся через декоратор @tool над обычной Python-функцией.

Memory

Модули памяти сохраняют историю диалога: ConversationBufferMemory (полная история), ConversationSummaryMemory (суммаризованная), ConversationVectorStoreMemory (семантический поиск по истории).

LangGraph

Расширение LangChain для построения stateful агентных систем в виде графа состояний. Узлы — функции или LLM-вызовы, рёбра — условные переходы. LangGraph позволяет строить циклы, ветвления, параллельные ветки и human-in-the-loop точки. Стал де-факто стандартом для продвинутых агентных архитектур.

LangSmith

Платная платформа для отладки, тестирования и мониторинга LangChain-приложений. Трассировка каждого вызова с деревом шагов, задержками и токенами. Набор тестов (datasets + evaluators) для регрессионного тестирования промптов. Интеграция с LangGraph для мониторинга агентных сессий.

Типичный стек RAG-приложения на LangChain

  1. Загрузка документов: PyPDFLoader, WebBaseLoader.
  2. Разбивка: RecursiveCharacterTextSplitter.
  3. Эмбеддинги: OpenAIEmbeddings или открытая модель через HuggingFaceEmbeddings.
  4. Векторное хранилище: Chroma.from_documents().
  5. Ретривал и генерация: RetrievalQA или кастомная LCEL-цепочка.

Критика и альтернативы

LangChain критикуют за чрезмерную сложность абстракций, непрозрачность отладки и частые breaking changes. Альтернативы: LlamaIndex (специализация на RAG и индексировании данных), Haystack (enterprise NLP pipelines), DSPy (оптимизация промптов), прямое использование SDK провайдера без фреймворка. Для простых задач прямой вызов API OpenAI с минимальными обёртками часто предпочтительнее.

Частые вопросы

  • Нужен ли LangChain для создания RAG-приложения?

    Нет. LangChain ускоряет прототипирование через готовые интеграции, но добавляет слой абстракции. Для простого RAG достаточно SDK провайдера эмбеддингов, клиента векторной базы и OpenAI API. LangChain выигрывает при сложных пайплайнах с агентами, ветвлением и многими интеграциями.

  • Что лучше: LangChain или LlamaIndex?

    LlamaIndex сильнее специализирован на индексировании и запросах к данным (RAG, structured data). LangChain универсальнее: агенты, цепочки, широкий спектр интеграций. На практике их часто комбинируют. Для чистого RAG по документам LlamaIndex нередко предпочтительнее; для агентных систем — LangGraph.

  • Поддерживает ли LangChain русский язык?

    Да — фреймворк языконезависим. Промпты можно писать на русском, для эмбеддингов использовать мультиязычные модели (multilingual-e5, BGE-M3), в качестве LLM подключить YandexGPT или любую модель через OpenAI-совместимый API.

Не хватает деталей?

Напишите, что уточнить по теме «langchain» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться