Урок 9Фреймворки

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-вызовов: сгенерируй идею → напиши план → создай черновик.

Без техники
Без техники
Промпт
Напиши код, который последовательно вызывает LLM 3 раза: генерация идеи, создание плана, написание черновика.
Ответ
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)
Токены:38/165
Время:580ms
Качество:
С LangChain
С техникой
Промпт
Реализуй ту же цепочку (идея → план → черновик) с помощью LangChain. Покажи, как фреймворк упрощает оркестрацию.
Ответ
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
  • Легко добавить новый шаг или заменить модель
🧠LangChain заменяет ручную оркестрацию декларативным пайплайном
👁️LCEL (LangChain Expression Language) позволяет связывать шаги оператором |
👁️Фреймворк добавляет стриминг, логирование и retry автоматически
Код более читаемый и расширяемый, чем ручная оркестрация
Токены:52/280
Время:2400ms
Качество:
Почему это работает

Фреймворк не меняет логику — он упрощает оркестрацию. Вместо ручного "склеивания" вызовов вы описываете цепочку декларативно и получаете стриминг, логирование и retry бесплатно.

1 / 2

Квиз по уроку

1 из 3

1.Что такое «цепочка» (chain) в фреймворке LangChain?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Связанные уроки:Building AgentsArchitectures

Этот урок — часть структурированного курса по LLM.

Мой путь обучения