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
- Загрузка документов: PyPDFLoader, WebBaseLoader.
- Разбивка: RecursiveCharacterTextSplitter.
- Эмбеддинги: OpenAIEmbeddings или открытая модель через HuggingFaceEmbeddings.
- Векторное хранилище: Chroma.from_documents().
- Ретривал и генерация: 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 необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).