Как устроены ИИ-агенты изнутри?
10 часов назад
Никита Вихров
Ответы
Как устроены ИИ-агенты изнутри
Агент — это не магия. Это языковая модель в цикле с доступом к инструментам. Понимание архитектуры помогает строить надёжных агентов и отлаживать их когда что-то идёт не так.
Основной цикл агента
while задача не выполнена:
1. модель получает: задачу + историю + результаты инструментов
2. модель решает: вызвать инструмент или дать финальный ответ
3. если инструмент — выполняем, добавляем результат в историю
4. если финальный ответ — возвращаем пользователю
Этот цикл называется ReAct (Reasoning + Acting): модель рассуждает о следующем шаге, действует, наблюдает результат, рассуждает снова.
Из чего состоит агент
Системный промпт — задаёт роль, доступные инструменты, ограничения и формат работы. Это основа поведения агента.
История (memory) — все предыдущие шаги: промпты, вызовы инструментов, результаты. Модель видит всю историю при каждом шаге. Чем длиннее история — тем больше токенов и дороже каждый шаг.
Инструменты (tools) — функции с описанием. Модель видит список инструментов и их параметры, сама решает что и когда вызывать.
Оркестратор — код, который запускает цикл, вызывает инструменты и передаёт результаты обратно модели.
Пример: агент для анализа кода
Инструменты:
- read_file(path) → содержимое файла
- list_files(dir) → список файлов
- run_tests() → результат тестов
- create_issue(title, body) → создать задачу в GitHub
Задача: найди все места где нет обработки исключений и создай задачи
Шаг 1: list_files("src/") → ["auth.py", "api.py", "db.py"]
Шаг 2: read_file("src/auth.py") → [содержимое]
Шаг 3: read_file("src/api.py") → [содержимое]
Шаг 4: read_file("src/db.py") → [содержимое]
Шаг 5: create_issue("Нет обработки исключений в auth.py:34", "...")
Шаг 6: create_issue("Нет обработки исключений в db.py:89", "...")
Финальный ответ: найдено 2 проблемы, созданы задачи #12 и #13
Главные проблемы при построении агентов
Бесконечные циклы: агент застрял и повторяет одно и то же. Решение: лимит на количество шагов, детектор повторяющихся действий.
Раздутый контекст: история становится огромной, токены и деньги тратятся впустую. Решение: суммаризация истории, хранение только релевантных шагов.
Галлюцинации в вызовах инструментов: модель вызывает инструмент с несуществующими параметрами. Решение: строгая валидация входных данных перед выполнением.
Prompt injection: вредоносные данные из внешних источников меняют поведение агента. Решение: разделять системные инструкции и обрабатываемые данные, валидировать действия.
Когда агент, а когда просто промпт
Агент нужен когда:
- задача требует нескольких шагов, которые зависят друг от друга
- нужно работать с внешними системами (файлы, API, БД)
- количество шагов заранее неизвестно
Простой промпт достаточен когда:
- задача решается за один шаг
- всё что нужно — уже есть в контексте
- результат легко проверить вручную
Если коротко: агент — это модель в цикле с инструментами и памятью. Чем чище разделены роль, инструменты и история — тем предсказуемее поведение агента.
10 часов назад
Никита Вихров