AI Agents: автономные системы с LLM
aiagentsllmautomationopensource
Введение
AI Agents — это программы, которые используют LLM для принятия решений и выполнения задач. В отличие от простого чат-бота, агент может планировать, использовать инструменты и действовать автономно.
Что такое AI Agent?
Chatbot:
User → LLM → Response
AI Agent:
User → LLM → Plan → Tool Use → Observe → Repeat → Result
Ключевые компоненты:
- Planning — планирование последовательности действий
- Tool Use — использование внешних инструментов (API, поиск, код)
- Memory — краткосрочная и долгосрочная память
- Observation — анализ результатов действий
- Reflection — самоанализ и коррекция
Архитектуры AI Agents
ReAct (Reasoning + Acting)
Для каждой итерации:
1. Thought — что я думаю
2. Action — что я делаю
3. Observation — что я получил
4. Repeat until answer
Пример:
Thought: Мне нужно найти погоду в Москве
Action: search_weather("Москва")
Observation: {"temp": 22, "condition": "sunny"}
Thought: Теперь я могу ответить
Answer: В Москве сейчас 22°C, солнечно
Плюсы: ✅ Простая реализация ✅ Прозрачные решения ✅ Легко дебажить
Минусы: ❌ Может зациклиться ❌ Нет глобального планирования
Plan-and-Execute
План:
1. search("Python 3.12 release date")
2. search("Python 3.13 release date")
3. compare dates
4. write summary
Выполнение:
Step 1 → result1
Step 2 → result2
Step 3 → compare(result1, result2)
Step 4 → write(compare)
Плюсы: ✅ Глобальное планирование ✅ Меньше циклов
Минусы: ❌ План может быть неверным ❌ Сложно адаптироваться
Reflexion
Agent:
1. Generate response
2. Self-evaluate
3. If poor → generate critique
4. Regenerate with critique
5. Repeat until good
Пример:
Attempt 1: "Python uses garbage collection"
Critique: "Недостаточно подробно"
Attempt 2: "Python использует сборку мусора с подсчётом ссылок..."
Critique: "Хорошо"
Done!
Фреймворки для AI Agents
LangChain Agents
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
tools = [
Tool(
name="Search",
func=search_function,
description="Поиск в интернете"
),
Tool(
name="Calculator",
func=calculate,
description="Калькулятор"
)
]
agent = create_react_agent(llm, tools)
executor = AgentExecutor(agent=agent, tools=tools)
result = executor.invoke({"input": "Сколько будет 25 * 48?"})
AutoGen (Microsoft)
import autogen
config_list = [
{"model": "gpt-4o", "api_key": "YOUR_KEY"}
]
user_proxy = autogen.UserProxyAgent(
name="User",
human_input_mode="NEVER",
code_execution_config={"work_dir": "coding"}
)
assistant = autogen.AssistantAgent(
name="Assistant",
llm_config={"config_list": config_list}
)
user_proxy.initiate_chat(
assistant,
message="Напиши функцию для сортировки массива"
)
CrewAI
from crewai import Agent, Task, Crew
researcher = Agent(
role="Researcher",
goal="Исследовать тему",
backstory="Эксперт по исследованиям",
tools=[search_tool]
)
writer = Agent(
role="Writer",
goal="Написать статью",
backstory="Опытный журналист"
)
task1 = Task(
description="Исследовать тему AI agents",
agent=researcher
)
task2 = Task(
description="Написать статью по результатам",
agent=writer
)
crew = Crew(agents=[researcher, writer], tasks=[task1, task2])
result = crew.kickoff()
OpenAI Agents SDK
from openai import OpenAI
from openai.agents import Agent, Runner
agent = Agent(
name="Research Agent",
instructions="Исследуйте тему и предоставьте ответы",
tools=[search_tool, calculator_tool],
model="gpt-4o"
)
result = Runner.run_sync(
agent,
"Что такое трансформеры?"
)
print(result.final_output)
Инструменты для Agents
Типы инструментов
1. Поиск:
- Google Search API
- Tavily Search
- DuckDuckGo
2. Код:
- Python REPL
- Jupyter Notebook
- Sandboxed execution
3. Базы данных:
- SQL queries
- Vector DB search
- API calls
4. Файлы:
- Read/Write files
- PDF parsing
- Image processing
5. Внешние сервисы:
- Email
- Calendar
- Slack
- GitHub
Создание кастомного инструмента
from langchain.tools import tool
@tool
def calculate_bmi(weight_kg: float, height_cm: float) -> float:
"""Рассчитать ИМТ по весу и росту"""
height_m = height_cm / 100
return weight_kg / (height_m ** 2)
# Agent может использовать:
# calculate_bmi(weight_kg=70, height_cm=175)
# → 22.86
Память агентов
Краткосрочная память
# Контекст в промпте
messages = [
{"role": "system", "content": "Вы полезный ассистент"},
{"role": "user", "content": "Какая столица Франции?"},
{"role": "assistant", "content": "Париж"},
{"role": "user", "content": "А какое население?"},
]
# LLM видит всю историю
Долгосрочная память
# Vector DB для хранения знаний
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
# Сохранение
vectorstore.add_documents([
Document(page_content="Пользователь любит кофе"),
Document(page_content="Пользователь работает в IT")
])
# Восстановление
similar = vectorstore.similarity_search("что любит пользователь?")
# → ["Пользователь любит кофе", "Пользователь работает в IT"]
Память в OpenAI Agents
agent = Agent(
name="Memory Agent",
instructions="Запоминайте предпочтения пользователя",
handoff_prompt_template="Пользователь хочет поговорить с {agent_name}",
custom_fields={
"memory": {
"type": "vector_store",
"store": chroma_store
}
}
)
Multi-Agent системы
Распределение ролей
Manager Agent:
- Получает задачу от пользователя
- Разбивает на подзадачи
- Назначает agents
Researcher Agent:
- Ищет информацию
- Анализирует источники
Writer Agent:
- Пишет текст
- Редактирует
Reviewer Agent:
- Проверяет качество
- Даёт обратную связь
Communication patterns
1. Sequential:
Agent1 → Agent2 → Agent3 → Result
2. Hierarchical:
Manager
/ | \
Agent1 Agent2 Agent3
\ | /
Result
3. Peer-to-Peer:
Agent1 ↔ Agent2 ↔ Agent3
↕ ↕
Agent4 ↔ Agent5
Практические примеры
Agent для разработки
dev_agent = Agent(
name="Dev Agent",
tools=[
read_file,
write_file,
run_terminal,
git_commands,
run_tests
],
instructions="""
1. Прочитайте код
2. Найдите проблему
3. Исправьте код
4. Запустите тесты
5. Закоммитьте изменения
"""
)
Agent для аналитики
analytics_agent = Agent(
name="Analytics Agent",
tools=[
sql_query,
data_visualization,
statistical_tests,
report_generator
],
instructions="""
1. Подключитесь к БД
2. Выполните запрос
3. Постройте графики
4. Сгенерируйте отчёт
"""
)
Agent для поддержки
support_agent = Agent(
name="Support Agent",
tools=[
search_knowledge_base,
lookup_order,
create_ticket,
escalate_to_human
],
instructions="""
1. Понять проблему пользователя
2. Найти решение в базе знаний
3. Предложить решение
4. Если не помогло → эскалировать
"""
)
Проблемы и решения
Галлюцинации
Проблема: Agent выдумывает факты
Решение:
- Grounding через RAG
- Verification step
- Confidence scoring
Бесконечные циклы
Проблема: Agent застревает в цикле
Решение:
- Max iterations limit
- Early stopping criteria
- Cycle detection
Стоимость
Проблема: Много вызовов LLM = дорого
Решение:
- Smaller models для простых задач
- Caching результатов
- Tool call batching
Безопасность
Проблема: Agent может выполнить вредоносный код
Решение:
- Sandboxed execution
- Tool permissions
- Human approval for critical actions
Open Source инструменты
Фреймворки:
✅ LangChain (Apache 2.0)
✅ CrewAI (MIT)
✅ AutoGen (MIT)
✅ LangGraph
✅ LlamaIndex
Платформы:
✅ Dify (SSPL)
✅ Flowise (MIT)
✅ Open WebUI (AGPL)
✅ OpenHands ( BSD)
Итоги
AI Agents — это следующее поколение AI-приложений. Они не просто отвечают на вопросы, а активно решают задачи.
Ключевые выводы:
- ReAct — простая и эффективная архитектура
- Выбор фреймворка зависит от задачи
- Инструменты расширяют возможности агента
- Память критична для сложных задач
- Multi-agent системы для сложных проектов