AI Agents: автономные системы с LLM

aiagentsllmautomationopensource
← Back to Blog

Введение

AI Agents — это программы, которые используют LLM для принятия решений и выполнения задач. В отличие от простого чат-бота, агент может планировать, использовать инструменты и действовать автономно.


Что такое AI Agent?

Chatbot:
  User → LLM → Response

AI Agent:
  User → LLM → Plan → Tool Use → Observe → Repeat → Result

Ключевые компоненты:

  1. Planning — планирование последовательности действий
  2. Tool Use — использование внешних инструментов (API, поиск, код)
  3. Memory — краткосрочная и долгосрочная память
  4. Observation — анализ результатов действий
  5. 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 системы для сложных проектов