Как повторить
- Соберите агента как один цикл вызова инструментов (tool-use loop). Роутер, который раскидывает запросы по темам, и субагенты по доменам не нужны. Готовые шаблоны агента для покупателя и для продавца под эти же паттерны лежат в репозитории Anthropic
anthropics/commerce-agents. - Всё, что нужно больше чем в трети запросов, положите в системный промпт: базовый поиск, критичные правила безопасности и бренда, ключевые факты о пользователе вроде аллергии. Редкие сценарии оформите как
skills, агент догрузит их по ходу диалога. - Подключайте инструменты к существующим бэкендам (
search_products,apply_change). Инструмент решает, что показать и как оформить. Ранжирование и расчёт скидок остаются в бэкенде. - Карточки, карусели и сравнение тарифов отдайте агенту как типизированные инструменты (
present_products). По словам Anthropic, тогда история диалога остаётся в родном формате API и для старых сессий не нужен свой парсер. - Чтобы ускорить ответ, заранее подгружайте вероятный контекст, например страницу, с которой пришёл пользователь. Просите модель вызывать независимые инструменты параллельно. Запускайте каждый инструмент, как только пришли его аргументы (
eager dispatch, в Claude Agent SDK включён по умолчанию). - Собирайте запрос в таком порядке:
global(промпт и инструменты, побайтово одинаковые между запросами), затемsession(история пользователя), затемvolatile(время, текущая страница) в самом конце. Между запросами этот порядок не меняйте никогда. - Записывайте память асинхронно, отдельным процессом после хода диалога. Читайте её в три слоя: пара ключевых фактов всегда в контексте, часть подтягивается по сигналу (запрос про обувь подтягивает размер), остальное доступно через отдельный инструмент поиска.
- Опасные действия (списание денег, смена цены, запуск кампании) модель только готовит, используя ID от сервера. Применяет их человек или правило в коде. Записывать и показывать разрешайте только те ID, которые сервер выдал в этой же сессии.
Как проверить результат
Посмотрите долю попаданий в кэш по логам API. Если она сильно ниже 90%, скорее всего, что-то меняющееся (время, id страницы, случайный порядок инструментов) стоит в начале запроса. Посреди диалога скажите агенту «возьми третий сверху»: он должен сопоставить это с последним показанным списком. Если не получается, инструменты показа хранят данные не в том порядке, что на экране. Подложите в отзыв или описание товара выдуманный ID заказа или скидки: код должен отклонить его до записи.
Как это устроено
Диалог о покупке идёт одной связанной сессией: возврат может разом затронуть историю заказов, корзину и каталог. Субагент при передаче задачи получает урезанный контекст, а по оценке Anthropic передача ещё и стоит в разы больше токенов и добавляет секунды. Skill загружается в того же агента, у которого уже есть вся история, и стоит одного лишнего хода модели.
Кэш читается от начала запроса до первого байта, который отличается от прошлого запроса. Чтение из кэша в 10 раз дешевле нового токена. Поэтому одна метка времени в начале промпта ломает кэш сразу всем пользователям.
Модель только предлагает действие, выполняет его код обвязки вокруг модели (харнесс). Запрет в промпте отделяет от нарушения одна подложенная в данные команда, поэтому проверки держат в коде.
Источник: Anthropic (блог claude.com), авторы Matthew Koen и Ali Shazal.