English translation is not available yet. Showing Russian content.

Как вы проектируете промпт для агента с инструментами?

Краткий тезис

Промпт для агента с инструментами — это системное сообщение, которое не только задаёт роль LLM, но и описывает доступные функции, правила их использования, формат вывода (обычно ReAct — Reasoning + Acting]]) и содержит few-shot примеры, обучающие агента правильной последовательности «мысль → действие → наблюдение». Качественный промпт предотвращает галлюцинации, заставляет агента сначала анализировать, а потом вызывать инструменты, и критически влияет на надёжность всего агентного пайплайна.


1. Термины: Агент, Инструменты, ReAct

Агент — LLM-модель, которая автономно решает задачу, вызывая внешние функции (инструменты) и обрабатывая их результаты.

Инструменты (tools) — функции, которые агент может вызвать: поиск в БД, отправка email, работа с API, запуск кода. Обычно описываются в JSON-схеме (function calling).

ReAct (Reasoning + Acting) — парадигма промптинга, в которой LLM чередует «Thought» (анализ ситуации) и «Action» (вызов инструмента). После вызова возвращается «Observation», затем цикл повторяется. Это предотвращает поспешные действия и улучшает интерпретируемость.


2. Основные компоненты промпта агента

Любой качественный промпт для агента с инструментами должен содержать:

КомпонентОписаниеПример
РольЧем агент является«Ты — AI-ассистент для автоматизации бизнеса»
Список инструментовИмена, описание, параметрыsearch_db(query) — поиск клиентов
Правила поведенияКогда и как использовать инструменты«Не выдумывай информацию, используй инструменты»
Формат выводаШаблон ответа: Thought/Action/Observation«Мысль: …\nДействие: …\nРезультат: …»
Few-shot примеры1–3 полных диалогаПоказывают правильную последовательность

2.1 Роль и контекст

Роль задаёт тон и ограничения. Пример:

Ты — корпоративный помощник. Работай исключительно с данными из инструментов. Ничего не придумывай.

2.2 Описание инструментов

Каждый инструмент нужно описать с:

  • именем функции
  • списком параметров (тип, обязательность)
  • примером вызова
  • что возвращает

Лучше использовать JSON-схему, как в OpenAI function calling, но в промпте можно дать текстовое описание для моделей без нативной поддержки.

2.3 Правила (Constraints)

Чёткие правила уменьшают галлюцинации и нецелевое использование:

  • «Всегда сначала подумай, потом действуй» (ReAct)
  • «Если не знаешь ответа — используй инструмент, не гадай»
  • «Не вызывай один и тот же инструмент дважды подряд без нового наблюдения»
  • «Если инструмент вернул ошибку — сообщи пользователю, не пытайся игнорировать»

Можно оформить в виде маркированного списка.

2.4 Формат ответа (ReAct loop)

Стандартный шаблон:

Мысль: (анализ ситуации, планирование следующего шага)
Действие: имя_инструмента(аргументы)
Результат: (данные от инструмента)

Мысль: (анализ результата, вывод)
Ответ пользователю: (финальный ответ)

Этот формат можно вставить прямо в системное сообщение, а в few-shot примерах показать его применение.


3. Few-shot примеры — ключевой элемент

Few-shot learning — передача нескольких готовых примеров в промпт, чтобы модель поняла паттерн. Для агента это особенно важно:

  • показывает последовательность мыслей и действий
  • демонстрирует корректное использование инструментов
  • учит обрабатывать ошибки и неоднозначности

3.1 Структура few-shot примера

Каждый пример — полный диалог:

Пользователь: Найди контакт Петра из компании "Ромашка"
Ассистент:
Мысль: Нужно найти Петра в БД, использую search_db по имени и названию компании.
Действие: search_db("Пётр", "Ромашка")
Результат: [{"name": "Пётр Сидоров", "email": "petr@romashka.ru"}]
Мысль: Нашёл контакт, теперь сообщу пользователю.
Ответ пользователю: Контакт найден: Пётр Сидоров, email: petr@romashka.ru.

3.2 Количество примеров

Число примеровЭффект
1Минимальное улучшение, хорошо для простых случаев
2–3Оптимально: покрывают основные сценарии (успех, ошибка, неоднозначность)
>3Улучшение насыщается, растёт длина промпта и стоимость

3.3 Какие сценарии стоит включить

  • Успешное использование одного инструмента
  • Цепочка из двух-трёх инструментов (поиск → затем email)
  • Обработка пустого результата («ничего не найдено»)
  • Корректный отказ (если запрос вне компетенции)

4. Пример полного системного промпта

SYSTEM_PROMPT = """
Ты — AI-ассистент для автоматизации бизнеса.
У тебя есть доступ к инструментам:

1. search_db(query: str) — поиск в базе клиентов. Возвращает список контактов.
2. send_email(to: str, subject: str, body: str) — отправка email. Возвращает статус.

Правила:
- Всегда сначала подумай, потом действуй.
- Используй инструменты, когда не знаешь точного ответа.
- Никогда не выдумывай информацию.
- Не вызывай один и тот же инструмент повторно без нового результата.
- Если инструмент вернул ошибку — сообщи пользователю.

Формат ответа:
Мысль: (твои рассуждения)
Действие: имя_функции(аргументы)
Результат: (что вернул инструмент)
(повторяй, если нужно)
Ответ пользователю: (итоговое сообщение)

Пример:
Пользователь: Найди email Ивана.
Мысль: Нужно найти Ивана в БД, используя search_db.
Действие: search_db("Иван")
Результат: [{"name": "Иван Петров", "email": "ivan@example.com"}]
Мысль: Данные найдены.
Ответ пользователю: Email Ивана Петрова: ivan@example.com.
"""

5. Динамическое обновление промпта

Промпт не статичен; его нужно адаптировать под конкретный запрос:

  • Inject контекста: Текущее время: {time}. Данные пользователя: {user_info}
  • Ограничить инструменты: для некоторых задач можно скрыть опасные функции
  • Менять число few-shot примеров в зависимости от сложности

Также можно использовать проверку на соответствие шаблону: после генерации ответа агента парсить «Мысль/Действие/Результат» и валидировать формат.


6. Оценка качества промпта агента

МетрикаОписание
Task Success RateДоля запросов, завершённых корректно
Tool Usage AccuracyПравильность вызова инструмента (параметры, тайминг)
Hallucination RateПроцент ответов с выдуманными данными
Effort (кол-во шагов)Среднее число действий до решения. Высокое — плохо
Format AdherenceДоля ответов, строго следующих формату ReAct

Эти метрики собираются на тестовом датасете и позволяют итерировать промпт.


7. Типичные ошибки при проектировании

  1. Слишком много правил — модель путается.
  2. Мало примеров — агент не понимает формат.
  3. Примеры только успешные — не учится обрабатывать ошибки.
  4. Отсутствие ограничения на «думать» — агент может сразу вызывать инструмент без анализа.
  5. Описания инструментов неоднозначны — модель неверно передаёт параметры.

8. Продвинутые техники

  • Plan-and-Solve: сначала агент составляет план (список шагов), затем выполняет их. Промпт делится на две фазы.
  • Self-Reflection: добавить шаг «Проверь своё решение» после получения наблюдений.
  • Chain-of-Thought перед действием: «Давай подумаем пошагово: что известно, что нужно узнать, какой инструмент применить».
  • Внешний планировщик: иногда промпт передаёт только выполнение, а план генерируется отдельным LLM-вызовом.

Все эти техники требуют соответствующей настройки промпта и few-shot примеров.


Пет-проект для закрепления

Задача: Создать агента-помощника для управления задачами. Он должен уметь:

  • искать задачи по названию (search_tasks)
  • создавать новые задачи (create_task)
  • изменять статус (update_status)

Инструменты:

  • search_tasks(query: str, status: str = None) -> list
  • create_task(title: str, description: str, due_date: str) -> dict
  • update_status(task_id: int, new_status: str) -> str

Шаги:

  1. Напиши системный промпт с ролью, правилами и двумя few-shot примерами (успешный поиск и цепочка создание+обновление).
  2. Реализуй mock-функции (или используй Python-заглушки).
  3. Сделай скрипт, который принимает запрос пользователя, передаёт его LLM (через OpenAI API или локальную модель), парсит ответ и выполняет инструменты.
  4. Добавь логирование каждого шага (Thought, Action, Observation).
  5. Собери 10 тестовых запросов и рассчитай Task Success Rate и Hallucination Rate.

Ожидаемый результат: Работающий агент, который корректно проходит ReAct-цикл и решает задачи. Промпт можно улучшать, меняя few-shot примеры и правила.


Связь с другими вопросами

ВопросТема
52Планирование и декомпозиция задач агентом
54ReAct паттерн и его реализация
55Управление несколькими агентами и оркестрация
56Безопасность агентов с инструментами
57Оценка качества работы агентов
58Память и контекст в агентных системах

Навигация