Инструмент советника позволяет более быстрой, менее дорогостоящей модели исполнителя консультироваться с более интеллектуальной моделью советника во время генерации для получения стратегического руководства. Советник читает полный диалог, создает план или корректировку курса (обычно 400–700 текстовых токенов, 1400–1800 токенов всего, включая мышление), и исполнитель продолжает выполнение задачи.
Этот паттерн подходит для долгосрочных агентских рабочих нагрузок (агенты кодирования, компьютерное использование, многошаговые конвейеры исследований), где большинство ходов механичны, но наличие отличного плана имеет решающее значение. Вы получаете качество, близкое к качеству только советника, при этом основная часть генерации токенов происходит со скоростью модели исполнителя.
Инструмент советника находится в бета-версии. Включите заголовок бета-версии advisor-tool-2026-03-01
в ваши запросы. Чтобы запросить доступ или поделиться отзывом, свяжитесь с вашей командой аккаунта Anthropic.
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Ранние тесты показывают значительные улучшения для этих конфигураций:
Результаты зависят от задачи. Оцените на своей собственной рабочей нагрузке.
Was this page helpful?
Советник менее подходит для однооборотных вопросов и ответов (нечего планировать), чистых сквозных выборщиков моделей, где ваши пользователи уже выбирают свой собственный компромисс между стоимостью и качеством, или рабочих нагрузок, где каждый ход действительно требует полной возможности модели советника.
Модель исполнителя (поле model верхнего уровня) и модель советника (поле model внутри определения инструмента) должны образовывать допустимую пару. Советник должен быть по крайней мере столь же способным, как исполнитель.
| Модели исполнителя | Модели советника |
|---|---|
Claude Haiku 4.5 (claude-haiku-4-5-20251001) | Claude Opus 4.7 (claude-opus-4-7) |
Claude Sonnet 4.6 (claude-sonnet-4-6) | Claude Opus 4.7 (claude-opus-4-7) |
Claude Opus 4.6 (claude-opus-4-6) | Claude Opus 4.7 (claude-opus-4-7) |
Claude Opus 4.7 (claude-opus-4-7) | Claude Opus 4.7 (claude-opus-4-7) |
Если вы запросите недопустимую пару, API возвращает 400 invalid_request_error, указывающий на неподдерживаемую комбинацию.
Инструмент советника доступен в бета-версии на Claude API (Anthropic).
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
betas=["advisor-tool-2026-03-01"],
tools=[
{
"type": "advisor_20260301",
"name": "advisor",
"model": "claude-opus-4-7",
}
],
messages=[
{
"role": "user",
"content": "Build a concurrent worker pool in Go with graceful shutdown.",
}
],
)
print(response)Когда вы добавляете инструмент советника в массив tools, модель исполнителя решает, когда его вызывать, как и любой другой инструмент. Когда исполнитель вызывает советника:
server_tool_use с name: "advisor" и пустым input. Исполнитель сигнализирует о времени; сервер предоставляет контекст.advisor_tool_result.Все это происходит внутри одного запроса /v1/messages. Никаких дополнительных круговых поездок с вашей стороны.
Сам советник работает без инструментов и без управления контекстом. Его блоки мышления отбрасываются перед возвратом результата; только текст совета достигает исполнителя.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
type | string | обязательно | Должно быть "advisor_20260301". |
name | string | обязательно | Должно быть "advisor". |
model | string | обязательно | ID модели советника, например "claude-opus-4-7". Выставляется счет по ставкам этой модели для подвывода. |
max_uses | integer | неограниченно | Максимальное количество вызовов советника, разрешенных в одном запросе. Когда исполнитель достигает этого лимита, дальнейшие вызовы советника возвращают advisor_tool_result с error_code: "max_uses_exceeded" и исполнитель продолжает без дальнейшего совета. Это лимит на запрос, а не на разговор; см. Контроль стоимости для ограничений на уровне разговора. |
caching | object | null | null (выключено) | Включает кэширование подсказок для собственного транскрипта советника во время вызовов в одном разговоре. См. Кэширование подсказок советника. |
Объект caching имеет форму {"type": "ephemeral", "ttl": "5m" | "1h"}. В отличие от cache_control на блоках контента, это не маркер точки разрыва; это переключатель включения/выключения. Сервер решает, где находятся границы кэша.
Когда советник вызывается, блок server_tool_use сопровождается блоком advisor_tool_result в содержимом помощника:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "Let me consult the advisor on this."
},
{
"type": "server_tool_use",
"id": "srvtoolu_abc123",
"name": "advisor",
"input": {}
},
{
"type": "advisor_tool_result",
"tool_use_id": "srvtoolu_abc123",
"content": {
"type": "advisor_result",
"text": "Use a channel-based coordination pattern. The tricky part is draining in-flight work during shutdown: close the input channel first, then wait on a WaitGroup..."
}
},
{
"type": "text",
"text": "Here's the implementation. I'm using a channel-based coordination pattern to avoid writer starvation..."
}
]
}server_tool_use.input всегда пусто. Сервер конструирует представление советника из полного транскрипта автоматически; ничто, что исполнитель помещает в input, не достигает советника.
Поле advisor_tool_result.content является дискриминированным объединением. Какой вариант вы получите, зависит от модели советника:
| Вариант | Поля | Возвращается когда |
|---|---|---|
advisor_result | text | Модель советника возвращает простой текст (например, Claude Opus 4.7). |
advisor_redacted_result | encrypted_content | Модель советника возвращает зашифрованный вывод. |
С advisor_result, поле text содержит читаемый человеком совет. С advisor_redacted_result, поле encrypted_content содержит непрозрачный блоб, который вы не можете прочитать; в следующий ход сервер расшифровывает его и отображает простой текст в подсказку исполнителя.
В обоих случаях передавайте содержимое дословно в последующих ходах. Если вы переключаете модели советника в середине разговора, ветвитесь на content.type, чтобы обработать обе формы.
Если вызов советника не удается, результат содержит ошибку:
{
"type": "advisor_tool_result",
"tool_use_id": "srvtoolu_abc123",
"content": {
"type": "advisor_tool_result_error",
"error_code": "overloaded"
}
}Исполнитель видит ошибку и продолжает без дальнейшего совета. Сам запрос не завершается ошибкой.
error_code | Значение |
|---|---|
max_uses_exceeded | Запрос достиг лимита max_uses, установленного в определении инструмента. Дальнейшие вызовы советника в одном запросе возвращают эту ошибку. |
too_many_requests | Подвывод советника был ограничен по скорости. |
overloaded | Подвывод советника столкнулся с ограничениями емкости. |
prompt_too_long | Транскрипт превысил контекстное окно модели советника. |
execution_time_exceeded | Подвывод советника истек по времени. |
unavailable | Любой другой отказ советника. |
Ограничения скорости советника берут из того же ведра на модель, что и прямые вызовы модели советника. Ограничение скорости на советнике появляется как too_many_requests внутри результата инструмента; ограничение скорости на исполнителе завершает весь запрос с HTTP 429.
Передайте полное содержимое помощника, включая блоки advisor_tool_result, обратно в API в последующих ходах:
import anthropic
client = anthropic.Anthropic()
tools = [
{
"type": "advisor_20260301",
"name": "advisor",
"model": "claude-opus-4-7",
}
]
messages = [
{
"role": "user",
"content": "Build a concurrent worker pool in Go with graceful shutdown.",
}
]
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
betas=["advisor-tool-2026-03-01"],
tools=tools,
messages=messages,
)
# Append the full response content, including any advisor_tool_result blocks
messages.append({"role": "assistant", "content": response.content})
# Continue the conversation
messages.append({"role": "user", "content": "Now add a max-in-flight limit of 10."})
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
betas=["advisor-tool-2026-03-01"],
tools=tools,
messages=messages,
)Если вы опустите инструмент советника из tools в последующем ходе, пока история сообщений все еще содержит блоки advisor_tool_result, API возвращает 400 invalid_request_error.
Инструмент советника не имеет встроенного лимита на уровне разговора. Чтобы ограничить вызовы советника во всем разговоре, подсчитайте их на стороне клиента. Когда вы достигнете своего лимита, удалите инструмент советника из массива tools и удалите все блоки advisor_tool_result из истории сообщений, чтобы избежать 400 invalid_request_error.
Подвывод советника не потоковый. Поток исполнителя приостанавливается во время работы советника, затем полный результат прибывает в одном событии.
Блок server_tool_use с name: "advisor" сигнализирует о том, что начинается вызов советника. Пауза начинается, когда этот блок закрывается (content_block_stop). Во время паузы поток молчит, кроме стандартных SSE ping keepalives, выдаваемых примерно каждые 30 секунд; короткие вызовы советника могут не показывать пинги.
Когда советник завершает работу, advisor_tool_result прибывает полностью сформированным в одном событии content_block_start (без дельт). Вывод исполнителя затем возобновляет потоковую передачу.
Событие message_delta следует с обновленным массивом usage.iterations, отражающим количество токенов советника.
Вызовы советника работают как отдельный подвывод, выставляемый по ставкам модели советника. Использование сообщается в массиве usage.iterations[]:
{
"usage": {
"input_tokens": 412,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 531,
"iterations": [
{
"type": "message",
"input_tokens": 412,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 89
},
{
"type": "advisor_message",
"model": "claude-opus-4-7",
"input_tokens": 823,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 1612
},
{
"type": "message",
"input_tokens": 1348,
"cache_read_input_tokens": 412,
"cache_creation_input_tokens": 0,
"output_tokens": 442
}
]
}
}Поля usage верхнего уровня отражают только токены исполнителя. Токены советника не включаются в итоги верхнего уровня, потому что они выставляются по другой ставке. Итерации с type: "advisor_message" выставляются по ставкам модели советника; итерации с type: "message" выставляются по ставкам модели исполнителя.
Правила агрегирования различаются по полям. Верхний уровень output_tokens — это сумма всех итераций исполнителя. Верхний уровень input_tokens и cache_read_input_tokens отражают только первую итерацию исполнителя; входы последующих итераций исполнителя не пересчитываются, потому что они включают предыдущие выходные токены. Используйте usage.iterations для полного разбора по итерациям при построении логики отслеживания затрат.
Вывод советника обычно составляет 400–700 текстовых токенов или 1400–1800 токенов всего, включая мышление. Экономия затрат происходит из-за того, что советник не генерирует ваш полный финальный вывод; это делает исполнитель по его более низкой ставке.
Верхний уровень max_tokens применяется только к выводу исполнителя. Он не ограничивает токены подвывода советника. Токены советника также не берут из какого-либо бюджета задач, применяемого к исполнителю.
Есть два независимых уровня кэширования.
Блок advisor_tool_result кэшируется как любой другой блок контента. Точка разрыва cache_control, размещенная после него в последующем ходе, будет попадать. Подсказка исполнителя всегда содержит простой текст совета независимо от того, получил ли ваш клиент text или encrypted_content, поэтому поведение кэширования идентично для обоих вариантов результатов.
Установите caching в определении инструмента, чтобы включить кэширование подсказок для собственного транскрипта советника во время вызовов в одном разговоре:
tools = [
{
"type": "advisor_20260301",
"name": "advisor",
"model": "claude-opus-4-7",
"caching": {"type": "ephemeral", "ttl": "5m"},
}
]Подсказка советника при N-м вызове — это подсказка (N-1)-го вызова с одним дополнительным сегментом, поэтому префикс стабилен во время вызовов. С включенным caching, каждый вызов советника записывает запись кэша; следующий вызов читает до этой точки и платит только за дельту. Вы увидите, что cache_read_input_tokens становится ненулевым на второй и более поздних итерациях advisor_message.
Когда его включать: Стоимость записи кэша больше, чем экономия чтения, когда советник вызывается два или менее раз за разговор. Кэширование окупается примерно при трех вызовах советника и улучшается оттуда. Включите его для длинных циклов агентов; оставьте его выключенным для коротких задач.
Держите его последовательным: Установите caching один раз и оставьте его для всего разговора. Переключение его выключения и включения в середине разговора вызывает промахи кэша.
clear_thinking со значением keep, отличным от "all", смещает цитируемый транскрипт советника каждый ход, вызывая промахи кэша на стороне советника. Это только деградация затрат; качество совета не затронуто. Когда расширенное мышление включено без явной конфигурации clear_thinking, API по умолчанию использует keep: {type: "thinking_turns", value: 1}, что вызывает это поведение. Установите keep: "all", чтобы сохранить стабильность кэша советника.
Инструмент советника компонуется с другими инструментами на стороне сервера и на стороне клиента. Добавьте их все в один массив tools:
tools = [
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 5,
},
{
"type": "advisor_20260301",
"name": "advisor",
"model": "claude-opus-4-7",
},
{
"name": "run_bash",
"description": "Run a bash command",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
},
},
]Исполнитель может искать в Интернете, вызывать советника и использовать ваши пользовательские инструменты в одном ходе. План советника может информировать, какие инструменты исполнитель будет использовать дальше.
| Функция | Взаимодействие |
|---|---|
| Пакетная обработка | Поддерживается. usage.iterations сообщается за элемент. |
| Подсчет токенов | Возвращает только входные токены первой итерации исполнителя. Для приблизительной оценки советника вызовите count_tokens с model, установленным на модель советника и теми же сообщениями. |
| Редактирование контекста | clear_tool_uses еще не полностью совместим с блоками инструмента советника; полная поддержка планируется для последующего выпуска. С clear_thinking см. предупреждение о кэшировании выше. |
pause_turn | Зависающий вызов советника завершает ответ с stop_reason: "pause_turn" и блоком server_tool_use как последний блок контента. Советник выполняется при возобновлении. См. Инструменты сервера. |
Инструмент советника поставляется со встроенным описанием, которое подталкивает исполнителя к вызову его в начале сложных задач и когда он сталкивается с трудностями. Для задач исследования обычно не требуется дополнительная подсказка.
На задачах кодирования и агентов советник производит более высокий интеллект при аналогичной стоимости, когда он снижает общее количество вызовов инструментов и длину разговора. Два момента времени управляют этим улучшением:
Если ваш агент предоставляет другие инструменты, похожие на планировщик (например, инструмент списка дел), подсказайте модели вызвать советника перед этими инструментами, чтобы план советника направлялся в них. Предлагаемая системная подсказка ниже усиливает паттерн раннего вызова; добавьте свое собственное предложение направления, указывающее на какие бы инструменты планировщика ваш агент ни предоставлял.
Для задач кодирования, где вы хотите последовательное время советника и около двух-трех вызовов за задачу, добавьте следующие блоки в начало системной подсказки исполнителя перед любыми другими предложениями, которые упоминают советника. На внутренних оценках кодирования этот паттерн дал наивысший интеллект при стоимости, близкой к Sonnet.
Руководство по времени:
You have access to an `advisor` tool backed by a stronger reviewer model. It takes NO parameters — when you call advisor(), your entire conversation history is automatically forwarded. They see the task, every tool call you've made, every result you've seen.
Call advisor BEFORE substantive work — before writing, before committing to an interpretation, before building on an assumption. If the task requires orientation first (finding files, fetching a source, seeing what's there), do that, then call advisor. Orientation is not substantive work. Writing, editing, and declaring an answer are.
Also call advisor:
- When you believe the task is complete. BEFORE this call, make your deliverable durable: write the file, save the result, commit the change. The advisor call takes time; if the session ends during it, a durable result persists and an unwritten one doesn't.
- When stuck — errors recurring, approach not converging, results that don't fit.
- When considering a change of approach.
On tasks longer than a few steps, call advisor at least once before committing to an approach and once before declaring done. On short reactive tasks where the next action is dictated by tool output you just read, you don't need to keep calling — the advisor adds most of its value on the first call, before the approach crystallizes.Как исполнитель должен относиться к совету (поместите сразу после блока времени):
Give the advice serious weight. If you follow a step and it fails empirically, or you have primary-source evidence that contradicts a specific claim (the file says X, the paper states Y), adapt. A passing self-test is not evidence the advice is wrong — it's evidence your test doesn't check what the advice is checking.
If you've already retrieved data pointing one way and the advisor points another: don't silently switch. Surface the conflict in one more advisor call — "I found X, you suggest Y, which constraint breaks the tie?" The advisor saw your evidence but may have underweighted it; a reconcile call is cheaper than committing to the wrong branch.Вывод советника — это самый большой фактор стоимости советника. Чтобы снизить эту стоимость, добавьте одну инструкцию по краткости в начало системной подсказки перед любым другим предложением, которое упоминает советника. При внутреннем тестировании следующая строка сократила общие выходные токены советника примерно на 35–45 процентов без изменения частоты вызовов:
The advisor should respond in under 100 words and use enumerated steps, not explanations.Объедините это с блоком времени выше для самого сильного компромисса между стоимостью и качеством.
Для задач кодирования, сопряжение исполнителя Sonnet на среднем усилии с советником Opus достигает интеллекта, сравнимого с Sonnet при усилии по умолчанию, при более низкой стоимости. Для максимального интеллекта держите исполнителя при усилии по умолчанию.
tools и удалите все блоки advisor_tool_result из истории сообщений, чтобы избежать 400 invalid_request_error.caching только для разговоров, где вы ожидаете три или более вызовов советника.max_tokens применяется только к выводу исполнителя. Он не ограничивает токены советника.