LangChain, LlamaIndex, SmolAgents, Pydantic AI — сравнение 5 фреймворков для создания агентов на Python. Код для каждого. Плюсы/минусы.
LangChain — самый популярный фреймворк для создания цепочек вызовов LLM и агентов. С 2025 года включает LangGraph для конечных автоматов и LangSmith для мониторинга. Идеален для сложных многошаговых агентов с разветвлённой логикой.
# Установка pip install langchain langchain-openai from langchain_openai import ChatOpenAI from langchain.agents import create_agent from langchain.tools import tool # 1. Определяем инструмент @tool def get_order_status(order_id: str) -> str: """Получить статус заказа по ID.""" # В реальном коде: запрос к БД return f"Заказ {order_id}: в доставке" # 2. Создаём LLM llm = ChatOpenAI(model="gpt-4o-mini", temperature=0) # 3. Создаём агента с инструментом agent = create_agent(llm, [get_order_status]) result = agent.invoke({ "input": "Проверь статус заказа ORD-7721" }) print(result["output"]) # → Заказ ORD-7721: в доставке # Плюсы: # + Огромная экосистема (интеграции со всем) # + LangGraph — графы состояний для агентов # + LangSmith — продакшен-мониторинг # Минусы: # - Высокий порог входа, много абстракций # - Частые breaking changes между версиями # - Тяжёлый для простых задач
LlamaIndex (бывший GPT Index) — фреймворк для RAG (Retrieval Augmented Generation) и агентов над данными. Если ваш агент должен искать по документам, базе данных или API — это выбор №1.
# Установка pip install llama-index llama-index-llms-openai from llama_index.core import ( VectorStoreIndex, SimpleDirectoryReader, Settings ) from llama_index.llms.openai import OpenAI # 1. Загружаем документы из папки documents = SimpleDirectoryReader( "./docs" ).load_data() # 2. Настраиваем LLM Settings.llm = OpenAI(model="gpt-4o-mini") # 3. Строим индекс index = VectorStoreIndex.from_documents(documents) # 4. Создаём агента-поисковика query_engine = index.as_query_engine() response = query_engine.query( "Какие гарантийные сроки на продукт X?" ) print(response) # → Ответ на основе содержимого документов # Плюсы: # + Лучший RAG из коробки (индексация, retrieval) # + 20+ типов загрузчиков данных # + Агенты умеют работать с БД, API, файлами # Минусы: # - Заточен под RAG, не универсальный оркестратор # - Большой вес зависимостей
SmolAgents (2025) от HuggingFace — библиотека, которая делает создание агентов максимально простым. Код агента умещается в 10 строк. Идеально для прототипирования и обучения. Поддерживает любые модели через HuggingFace Hub.
# Установка pip install smolagents from smolagents import CodeAgent, tool, LiteLLMModel # 1. Определяем модель (любой провайдер через LiteLLM) model = LiteLLMModel( model_id="openai/gpt-4o-mini", api_key="sk-proj-..." ) # 2. Определяем инструмент @tool def calculator(expression: str) -> float: """Вычислить математическое выражение.""" return eval(expression, {"__builtins__": {}}, {}) # 3. Создаём агента (5 строк!) agent = CodeAgent( tools=[calculator], model=model, ) # 4. Запускаем result = agent.run( "Посчитай (15 * 73 + 220) / 5 и объясни результат" ) print(result) # → 263.0 с объяснением шагов # Плюсы: # + Максимальная простота (10 строк на агента) # + CodeAgent пишет и выполняет Python-код # + Поддержка любых моделей через Hub # Минусы: # - Молодой проект, меньше интеграций # - Не для продакшена (пока)
Pydantic AI (от создателя Pydantic Сэмюэля Колвина) — фреймворк, который делает ставку на строгую типизацию ответов модели. Если вам нужны структурированные выходные данные (JSON-схемы, Pydantic-модели) — это лучший выбор.
# Установка pip install pydantic-ai from pydantic import BaseModel from pydantic_ai import Agent # 1. Описываем структуру ответа class WeatherReport(BaseModel): city: str temperature: float conditions: str humidity: int # 2. Создаём агента со строгим output-форматом agent = Agent( 'openai:gpt-4o-mini', result_type=WeatherReport, # ← модель автоматически вернёт это system_prompt='Ты метеоролог. Всегда указывай city, temperature, conditions, humidity.', ) # 3. Запрос — получаем строго типизированный ответ result = agent.run_sync('Какая погода в Берлине?') print(f"Тип: {type(result.data)}") # →print(f"Город: {result.data.city}") # → Берлин print(f"Температура: {result.data.temperature}°C") # Плюсы: # + Строгая типизация ответов (Pydantic) # + Валидация на лету, авто-retry при ошибках # + Поддержка function calling # Минусы: # - Меньше готовых интеграций # - Не для сложной оркестрации агентов
Иногда фреймворк не нужен. OpenAI Assistants API — это управляемый сервис: ассистенты с сохранением контекста, автоматическим вызовом инструментов (Code Interpreter, File Search, Function Calling) и управлением тредами (историей диалогов).
# Установка pip install openai from openai import OpenAI import time client = OpenAI() # 1. Создаём ассистента assistant = client.beta.assistants.create( name="Data Analyst", instructions="Ты аналитик данных. Используй code_interpreter для анализа.", model="gpt-4o", tools=[{"type": "code_interpreter"}] ) # 2. Создаём тред (диалог) thread = client.beta.threads.create() # 3. Добавляем сообщение client.beta.threads.messages.create( thread_id=thread.id, role="user", content="Посчитай среднее, медиану и std для чисел: 23,45,12,67,34,89,15,41" ) # 4. Запускаем выполнение run = client.beta.threads.runs.create_and_poll( thread_id=thread.id, assistant_id=assistant.id ) # 5. Читаем ответ if run.status == "completed": messages = client.beta.threads.messages.list(thread_id=thread.id) print(messages.data[0].content[0].text.value) # Плюсы: # + Нулевая инфраструктура (OpenAI хранит состояние) # + Code Interpreter — песочница Python из коробки # + File Search — векторный поиск по файлам # Минусы: # - Vendor lock-in (только OpenAI) # - $0.03/GB/день за хранение файлов # - Меньше гибкости, чем фреймворки
Выбор фреймворка зависит от задачи. Вот cheat-sheet для быстрого принятия решения:
# Когда что выбирать: # 🟢 Нужен простой агент с парой инструментов # → SmolAgents — 10 строк кода и готово # 🔵 Агент должен искать по документам/БД # → LlamaIndex — лучший RAG из коробки # 🟣 Нужны строго структурированные ответы # → Pydantic AI — типизация + валидация # 🟡 Сложный многошаговый агент с ветвлением # → LangChain + LangGraph — конечные автоматы # 🔴 Не хотите управлять инфраструктурой # → OpenAI Assistants API — serverless агенты # Комбо-подход (production): # LangChain (оркестрация) + LlamaIndex (RAG) + Pydantic AI (типизация)
Python-экосистема для AI-агентов в 2026 году разнообразна и зрела. LangChain остаётся стандартом для сложных оркестраций, LlamaIndex незаменим для RAG, Pydantic AI даёт строгую типизацию там, где она критична. SmolAgents — находка для прототипирования и обучения. OpenAI Assistants API — выбор для тех, кто не хочет управлять состоянием. Не существует «лучшего» фреймворка — есть правильный инструмент под конкретную задачу. Начните с малого: SmolAgents для прототипа, затем LangChain/LlamaIndex для продакшена. И помните: агент на 50 строк кода часто решает задачу лучше, чем фреймворк на 5000 строк.