LangChain и LlamaIndex
Фреймворки для LLM
Проблема: Создавать агентов с нуля — это изобретать велосипед каждый раз. Нужно писать код для вызова инструментов, памяти, цепочек, обработки ошибок... А когда переходишь на другую LLM, переписываешь всё заново.
Решение: Использовать фреймворк
Фреймворки вроде LangChain дают готовые компоненты для типичных паттернов агентов. Это как разница между LEGO и деревянными кубиками, вырезанными вручную. Из коробки вы получаете адаптеры для вызова функций, агентов ReAct и пайплайны RAG.
Представьте это как LEGO против деревянных кубиков:
- 1. Деревянные кубики (с нуля): Вырезаешь каждую деталь сам, придумываешь свои соединения, полная гибкость но медленно, сложно делиться с другими
- 2. LEGO (фреймворк): Стандартные детали готовы, легко соединяются, быстро строить всё ещё гибко, все понимают систему
Что дают фреймворки
- Абстракции: Единый интерфейс для разных LLM (OpenAI, Claude и др.)
- Компоненты: Готовые инструменты, системы памяти, ретриверы
- Цепочки: Способы комбинировать вызовы LLM последовательно
- Агенты: Готовые паттерны вроде ReAct, plan-and-execute
- Интеграции: Подключение к базам данных, API, векторным хранилищам
Интересный факт: LangChain начался как проект на выходных и стал одним из самых популярных AI-репозиториев на GitHub за считанные месяцы! Он доказал, что разработчикам нужны стандартные строительные блоки для AI-приложений. Сейчас есть много альтернатив: LlamaIndex, Semantic Kernel, Haystack — каждый со своими сильными сторонами.
Попробуйте сами!
Исследуй интерактивное сравнение ниже, чтобы увидеть, как фреймворки упрощают разработку агентов. Сравни написание кода с нуля и использование абстракций фреймворка!
Попробуй сам
Интерактивное демо этой техники
Создай цепочку LLM-вызовов: сгенерируй идею → напиши план → создай черновик.
from openai import OpenAI
client = OpenAI()
# Шаг 1
idea = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Придумай идею для статьи"}]
).choices[0].message.content
# Шаг 2
plan = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Напиши план для: {idea}"}]
).choices[0].message.content
# Шаг 3
draft = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Напиши черновик по плану: {plan}"}]
).choices[0].message.content
print(draft)
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(model="gpt-4")
parser = StrOutputParser()
# Определяем шаги как промпт-шаблоны
idea_prompt = ChatPromptTemplate.from_template(
"Придумай идею для статьи на тему: {topic}"
)
plan_prompt = ChatPromptTemplate.from_template(
"Напиши план статьи по идее:\n{idea}"
)
draft_prompt = ChatPromptTemplate.from_template(
"Напиши черновик по плану:\n{plan}"
)
# Собираем цепочку с помощью LCEL
chain = (
idea_prompt | llm | parser
| (lambda idea: {"idea": idea})
| plan_prompt | llm | parser
| (lambda plan: {"plan": plan})
| draft_prompt | llm | parser
)
# Запуск — одна строка
result = chain.invoke({"topic": "AI в образовании"})
print(result)
Преимущества LangChain:
- Декларативная цепочка вместо императивного кода
- Встроенный стриминг, логирование, retry
- Легко добавить новый шаг или заменить модель
Фреймворк не меняет логику — он упрощает оркестрацию. Вместо ручного "склеивания" вызовов вы описываете цепочку декларативно и получаете стриминг, логирование и retry бесплатно.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения