Сама модель только генерирует текст. Чтобы она могла узнать погоду, найти заказ или выполнить SQL, ей дают инструменты: описанные функции, которые вызывает ваш код по её просьбе. Агент это цикл, в котором модель сама решает, какие инструменты вызвать и когда остановиться.
Function calling
- Вы передаёте в запрос список инструментов: имя, описание, JSON-схема аргументов.
- Модель отвечает не текстом, а структурой «вызови
get_orderс аргументами{"order_id": "A-17"}». - Ваш код проверяет аргументы, выполняет функцию и добавляет результат в историю сообщением с ролью tool.
- Модель получает результат и либо вызывает следующий инструмент, либо отвечает пользователю.
Модель ничего не выполняет сама. Всё исполнение, права и проверки на стороне приложения. Описание инструмента это промпт: от его ясности зависит, вызовет ли модель нужную функцию с правильными аргументами.
Хорошие инструменты:
- Узкие и понятные:
get_order_status(order_id)лучше, чемrun_sql(query). - С точной схемой: перечисления, форматы, обязательные поля.
- Возвращают компактный результат, а не мегабайт JSON.
- Ошибки возвращают понятным текстом, чтобы модель могла исправиться.
Цикл агента
история = [system, user]
повторять до лимита шагов:
ответ = модель(история, инструменты)
если ответ без вызовов: вернуть ответ
для каждого вызова: проверить, выполнить, добавить результат в историю
ReAct (reason + act): модель чередует рассуждение, действие и наблюдение результата. Это базовый шаблон большинства агентов. Варианты сложнее:
- Plan-and-execute: сначала план из шагов, потом исполнение, при необходимости перепланирование.
- Мультиагентные схемы: оркестратор раздаёт подзадачи специализированным агентам. Полезно, когда подзадачи независимы и их можно делать параллельно, но растут стоимость и сложность отладки.
Правило из практики: начинайте с самого простого. Часто фиксированная цепочка (workflow) из 2-3 вызовов модели с понятным кодом между ними надёжнее агента, который каждый раз решает сам. Агент нужен, когда путь к решению заранее неизвестен.
Память и контекст
- Краткосрочная: история шагов в контексте. Растёт с каждым вызовом, её сжимают: удаляют старые результаты инструментов, делают резюме.
- Долгосрочная: факты о пользователе или проекте во внешнем хранилище, подтягиваются поиском.
Каждый шаг агента это новый вызов модели со всей историей, поэтому стоимость и задержка растут быстро. Помогает prefix caching: неизменная часть промпта и истории кешируется у провайдера.
MCP
Model Context Protocol это открытый протокол, по которому приложение-клиент подключает внешние серверы с инструментами, ресурсами и промптами. Вместо того чтобы писать интеграцию с каждой системой под каждое приложение, пишут MCP-сервер один раз. С точки зрения безопасности MCP-сервер это сторонний код и сторонние данные: описания его инструментов и их результаты попадают в контекст модели и могут содержать инъекции.
Контроль и надёжность
Агент может зациклиться, вызвать не тот инструмент, выполнить опасное действие или потратить кучу денег. Что ставят:
- Лимиты: число шагов, токенов, время, бюджет на задачу.
- Валидация аргументов по схеме и бизнес-правилам до вызова.
- Минимальные права: токены инструментов только на нужные операции; доступ только к данным текущего пользователя.
- Подтверждение человеком для необратимых и дорогих действий: платежи, удаление, отправка писем.
- Идемпотентность: повтор вызова не должен создать второй платёж.
- Трейсинг: каждый шаг, вызов и результат пишутся, чтобы разбирать провалы.
Оценка агентов сложнее, чем RAG: смотрят не только на итоговый ответ, но и на траекторию (правильные ли инструменты, сколько шагов, были ли лишние действия) и на долю успешно выполненных задач на наборе сценариев.
Частые ошибки
- Давать модели универсальный инструмент вроде
run_sqlилиexec_shellс полными правами. - Доверять аргументам из модели без проверки:
user_idдолжен браться из сессии, а не из ответа модели. - Нет лимита шагов: агент крутится, пока не кончатся деньги.
- Мультиагентная архитектура там, где хватило бы одного вызова.
Что спросят на собесе
- Как работает function calling и кто на самом деле исполняет функцию.
- Цикл агента и ReAct, чем агент отличается от фиксированной цепочки.
- Как ограничить агента: лимиты, права, подтверждение, идемпотентность.
- Что такое MCP и какие у него риски.
- Как оценивать агента.