Защита развёртывания Managed Agents
Настройки, которые ограничивают, к чему ваши агенты могут получить доступ и что они могут делать, — в порядке важности.
В этом руководстве перечислены настройки, которые ограничивают, к чему агент в Claude Managed Agents может получить доступ и что он может делать, — начиная с самых важных. Каждый раздел содержит ссылку на страницу, где настройка описана полностью.
| Раздел | Настройка или решение | Рекомендуется |
|---|---|---|
| Выберите, где работает агент | Облачная или самостоятельно размещаемая песочница («sandbox») | Облачная, если только инструменты не должны работать в инфраструктуре, которую вы контролируете |
| Ограничьте сеть | networking.type среды | limited, только с теми хостами, которые нужны агенту |
| Храните учётные данные в хранилищах | injection_location и networking для каждой записи учётных данных в виде переменной окружения | Только заголовки запросов и сеть limited только с теми хостами, для которых предназначен ключ |
| Ограничьте веб-поиск и веб-загрузку | allowed_domains для каждого веб-инструмента | «Allowlist» (список разрешённых) для каждого инструмента. Для web_fetch укажите только сайты, которые нужны агенту. Для web_search укажите сайты, из которых вы хотите получать результаты |
| Одобряйте рискованные действия | permission_policy для каждого инструмента | auto для bash, write, edit, web_fetch и инструментов MCP, которые только читают данные. Вместо этого always_ask для инструмента, если вы не можете отменить его изменения за пределами песочницы или если одного лишь пересланного текста конечного пользователя не должно быть достаточно для его запуска |
| Дайте агенту минимальный набор инструментов | default_config.enabled в наборе инструментов агента | false, затем включите инструменты, которые нужны агенту |
| Держите недоверенные входные данные подальше от мощных инструментов | Какие инструменты и учётные данные есть у агента, когда он читает недоверенные входные данные | Ни у одного агента, читающего недоверенные входные данные, нет инструмента с always_allow, который записывает файлы, выполняет команды или изменяет записи |
| Установите лимиты и способ остановки | budget для каждой сессии и развёртывания | Лимит, соответствующий ожидаемой стоимости запуска |
| При необходимости поручите офлайн-проверяющему читать каждую стенограмму | Запускаемое вами задание офлайн-проверки, которое читает события каждой сессии | Необязательно. Проверка по расписанию каждой сессии, которая перешла в режим ожидания или завершилась |
| Мониторинг сессий и проверка сроков хранения | «Webhooks» (вебхуки) и удаление сессий | Оповещение, когда сессия переходит в режим ожидания, достигает бюджета или завершается, и проверка причины перехода в режим ожидания. Сохраняйте нужные события в собственных журналах и удаляйте сессии, которые вам больше не нужны |
В разделе Риски безопасности и границы песочницы объясняется, почему эти настройки важны и от чего они не защищают. Чтобы проверять и отслеживать сессии, см. Проверка и мониторинг сессий агентов.
Выберите, где работает агент
От того, где работают инструменты агента, зависит, кто обеспечивает безопасность песочницы: Anthropic — в случае облачной среды, или вы — в случае самостоятельно размещаемой песочницы. Чтобы выбрать между ними и узнать, что передаётся в Anthropic в каждом случае, см. Выбор среды для агента.
Если вы используете самостоятельно размещаемую песочницу, учитывайте следующие четыре момента:
- Сеть: раздел Ограничьте сеть относится к облачным средам. Для самостоятельно размещаемой песочницы установите эквивалентные ограничения на её трафик в собственном брандмауэре. Ваш брандмауэр не ограничивает серверы MCP, которые объявляет агент, поэтому проверяйте их, а также те, которые ваше приложение задаёт для сессии.
- Веб-инструменты: веб-инструменты работают на серверах Anthropic, поэтому ваш брандмауэр их не ограничивает. Ограничивайте их с помощью списков доменов. См. Ограничьте веб-поиск и веб-загрузку.
- Учётные данные: учётные данные в виде переменных окружения пока не поддерживаются в самостоятельно размещаемых песочницах.
- Изоляция и усиление защиты: вы отвечаете и за то, и за другое. См. Модель безопасности.
Ни один из вариантов не меняет охват соответствия требованиям Managed Agents или срок хранения истории сессий. См. Мониторинг сессий и проверка сроков хранения.
Ограничьте сеть
Установите networking.type в значение limited и укажите в allowed_hosts только те хосты, которые нужны агенту. Запрос на создание среды без networking может получить unrestricted, поэтому задавайте networking в каждом запросе на создание. См. Риски неограниченного сетевого доступа.
Подключённые вами файлы, хранилища памяти и репозитории GitHub остаются доступными агенту независимо от allowed_hosts.
В примерах на этой странице используется агент поддержки. Он читает обращение клиента, находит заказ, читает ваш справочный центр и составляет черновик ответа. Поиск заказа выполняет ваше приложение, и ему не нужен хост, поэтому эта среда разрешает один хост — справочный центр — для web_fetch:
ant apply environment.yaml# yaml-language-server: $schema=https://platform.claude.com/schemas/ant/beta/environment.json
name: support-agent
config:
type: cloud
networking:
type: limited
allowed_hosts:
- help.example.comУ среды limited есть три сетевые настройки:
| Настройка | Что она открывает для кода в песочнице | Рекомендуется |
|---|---|---|
allowed_hosts | Указанные вами хосты, для любых запросов | Только хосты, которые нужны агенту, включая хост каждого сервера MCP, которым вы управляете или которому доверяете |
allow_package_managers | Хосты менеджеров пакетов. Они включают все репозитории и пути на github.com, gitlab.com и bitbucket.org, где кто угодно может публиковать контент и куда код в песочнице может загружать файлы | false, если только настройка packages среды не содержит пакеты, что требует true. Если агент устанавливает пакеты во время работы, вместо этого укажите в allowed_hosts только нужные ему хосты реестров |
allow_mcp_servers | Никаких хостов. Managed Agents подключается к серверам MCP с серверов Anthropic | false, при этом хост каждого сервера MCP, которым вы управляете или которому доверяете, указан в allowed_hosts |
Настройки allow_package_managers и allow_mcp_servers не добавляют хостов для веб-поиска и веб-загрузки.
Оставьте allow_mcp_servers выключенной (это значение по умолчанию) и укажите в allowed_hosts хост каждого сервера MCP, которым вы управляете или которому доверяете. Каждый указанный хост также открыт для кода в песочнице. Когда allow_mcp_servers выключена, проверка при создании сессии отклоняет запрос, если хост сервера MCP не указан. См. Предоставление аутентификации при создании сессии. Та же проверка выполняется, когда обновление сессии изменяет mcp_servers.
Выбирая хосты для allowed_hosts, следуйте двум правилам:
- Указывайте только хосты, которыми вы управляете или которым доверяете.
- Избегайте подстановочных знаков
*.и доменов общего хостинга, где кто угодно может публиковать контент.
Если у агента остаётся bash, настройте политику разрешений инструмента bash, как описано в разделе Одобряйте рискованные действия.
Все сетевые настройки описаны в разделе Настройка облачной среды.
Храните учётные данные в хранилищах
Храните каждый секрет в «vault» (хранилище). Для каждой записи учётных данных в виде переменной окружения задайте местом внедрения только заголовки запросов и укажите только те хосты, для которых предназначен секрет. Код в песочнице видит заполнитель вместо секрета. Managed Agents подставляет настоящий секрет только в исходящие HTTPS-запросы к хостам, разрешённым для этих учётных данных. Поэтому секрет остаётся вне прямой досягаемости модели, если только сервис не отправит его обратно, например конечная точка, которая возвращает заголовки запроса. Если networking учётных данных имеет значение unrestricted, Managed Agents подставляет настоящий секрет в запросы к любому хосту, к которому среда разрешает доступ песочнице. Чтобы использовать хранилище, передайте его ID в vault_ids при создании сессии или развёртывания.
| Настройка | Значение | Почему | Чего она не делает |
|---|---|---|---|
injection_location | {"header": true, "body": false}, после того как вы проверите, что сервис читает ключ из заголовка | Тела запросов часто формируются из контента, который читает агент, поэтому ключ в теле более уязвим. Укажите оба поля: запрос на создание без этого объекта включает оба места, а обновление изменяет только отправленные вами поля | Код по-прежнему может использовать ключ на каждом хосте, который разрешают учётные данные. Сервис, ожидающий ключ в теле, получит заполнитель и отклонит запрос |
networking учётных данных | limited, с точными хостами, для которых предназначен ключ | Ответы попадают в песочницу в открытом виде, поэтому избегайте подстановочных знаков, доменов общего хостинга и хостов, которые возвращают заголовки запроса | Она не открывает хост. Среда также должна его разрешать |
| Разрешения ключа в сервисе, который его выдал | Только разрешения, которые нужны агенту | Агент может делать всё, что разрешает ключ | Неприменимо |
| Токен GitHub смонтированного репозитория | Детализированный токен с минимальными разрешениями | Код в песочнице может с его помощью получать данные из смонтированного репозитория и отправлять в него изменения в течение всей сессии. Предоставляйте доступ на запись, только если агент должен отправлять изменения | Неприменимо |
Агенту поддержки не нужны учётные данные в хранилище, потому что ключ API для вашего API заказов хранит ваше приложение. Если у вашего агента есть учётные данные в хранилище, см. Добавление учётных данных, где приведён запрос на всех языках.
Не помещайте ключи в системные подсказки, определения агентов и сообщения. Не давайте агенту ключ API Claude. Даже если ключ API Claude находится в хранилище, код в песочнице может использовать его для прямых вызовов Claude API. Он может делать всё, что разрешает этот ключ, например запускать или удалять сессии либо использовать веб-поиск и веб-загрузку. Настройки инструментов агента, одобрения и бюджет к этим вызовам не применяются. В среде limited код может выполнять такие вызовы, только если allowed_hosts разрешает песочнице доступ к api.anthropic.com.
Получайте токены самостоятельно и сохраняйте их в хранилище, потому что токен, который код в песочнице получает с помощью сохранённого секрета, возвращается в открытом виде.
Храните хранилища для рабочих нагрузок с разными уровнями доверия в отдельных рабочих пространствах, потому что любой ключ API с доступом к рабочему пространству может ссылаться на его хранилища. Используйте ключи API, ограниченные одним рабочим пространством.
Учётные данные MCP и ротация описаны в разделе Аутентификация с помощью хранилищ.
Ограничьте веб-поиск и веб-загрузку
Задайте в allowed_domains для web_fetch сайты, которые нужны агенту. Любой URL, который загружает агент, может передать данные сайту, на который он указывает, поэтому этот список является средством защиты. Для web_search задайте в allowed_domains сайты, из которых вы хотите получать результаты, чтобы результаты поступали только с сайтов, в точности которых вы уверены. Список не мешает поисковому запросу попасть к поставщику поиска. Результаты поиска содержат текст со страниц, поэтому список также ограничивает, текст каких сайтов попадает к агенту. Задавайте allowed_domains для обоих инструментов в средах любого типа.
Список blocked_domains блокирует указанные хосты и их поддомены и никакие другие хосты. Тот же контент всё равно может попасть к агенту из веб-архивов, кэшей, зеркал или связанных доменов, которые вы не указали. Не полагайтесь на blocked_domains для обеспечения безопасности. Используйте allowed_domains и указывайте хосты, которым доверяете.
В среде limited список allowed_hosts из раздела Ограничьте сеть также ограничивает веб-инструменты. Среда unrestricted или самостоятельно размещаемая песочница веб-инструменты не ограничивают.
В среде limited | Результат |
|---|---|
Запись allowed_domains включённого веб-инструмента находится за пределами allowed_hosts | Создание сессии завершается ошибкой 400, как и обновление сессии, добавляющее такую запись. Сессия, которую запускает развёртывание — по расписанию или вручную, — всё равно создаётся. Затем инструмент ничего не возвращает с хостов за пределами allowed_hosts |
| У веб-инструмента нет собственного списка | Инструмент возвращает страницы и результаты только с хостов из allowed_hosts. Задайте также allowed_domains для инструмента |
В allowed_hosts нет записей | Ни один веб-инструмент не возвращает ни страниц, ни результатов поиска |
Вы добавляете хост в allowed_hosts для веб-инструмента | Хост также открывается для кода в песочнице |
Два списка сопоставляют хосты по-разному:
| Список | Запись | Соответствует | Не соответствует |
|---|---|---|---|
allowed_hosts (среда) | example.com | example.com | www.example.com |
allowed_hosts (среда) | *.example.com | Любой поддомен | example.com |
allowed_domains (веб-инструмент) | example.com | example.com и любой поддомен | Другие домены |
Если агенту нужен сайт и все его поддомены, укажите в allowed_hosts и example.com, и *.example.com, а в остальных случаях указывайте точные хосты. Если инструмент указывает example.com, а allowed_hosts — только *.example.com, сессия создаётся. Проверка при создании сессии считает example.com входящим в *.example.com, но инструмент ничего не возвращает с самого example.com. О том, как сопоставляются два списка, см. Задание списков доменов для агента.
Инструмент web_fetch также открывает только те URL, которые уже появлялись в сессии:
| Где появляется URL | Может ли web_fetch его открыть |
|---|---|
| Текст пользовательского сообщения, включая пересылаемый вами текст конечного пользователя | Да |
Описание события user.define_outcome | Да |
| Адрес результата веб-поиска | Да |
Текст страницы, которую ранее вернул web_fetch (не PDF), где показан полный URL | Да |
| Текст результата пользовательского инструмента, когда Claude вызвал инструмент напрямую | Да, если только результат не помечен is_error: true |
| Системная подсказка | Нет |
Конфигурация агента, включая записи allowed_domains | Нет |
| Собственный вывод Claude | Нет |
Вывод bash и других инструментов песочницы | Нет |
| Результат инструмента MCP | Нет |
| Файл, прикреплённый к пользовательскому сообщению | Нет |
В мультиагентной сессии web_fetch открывает URL от другого агента, только если он попал к этому агенту через источник, помеченный «Да». Результат пользовательского инструмента при прямом вызове считается источником, помеченным «Да». Это верно, даже если его текст написал Claude, например когда инструмент повторяет свои входные данные. URL может учитываться, даже если он записан без https://, например example.com/docs. Инструмент web_fetch не всегда может открыть ссылку, которая показывает слова вместо своего URL, например «Связаться с поддержкой». Если агент должен загрузить URL, который не появлялся в сессии, отправьте его в пользовательском сообщении.
Это правило снижает вероятность того, что внедрённый текст сформирует URL, передающий конфиденциальные данные. Текст конечного пользователя, результаты поиска, загруженные страницы и результаты пользовательских инструментов всё равно могут добавлять URL, поэтому не отключайте allowed_domains. Messages API применяет похожее правило с другим списком источников. См. Проверка URL-адресов.
Список доменов для web_fetch не ограничивает инструмент bash. Также ограничьте сеть. См. Правила списков доменов.
Одобряйте рискованные действия
Установите auto для bash, write, edit и web_fetch, а также для инструментов MCP, которые только читают данные. Вместо этого используйте always_ask для инструмента, если вы не можете отменить его изменения за пределами песочницы. Также используйте его для инструмента, который не должен запускаться только потому, что об этом просит пересылаемый вами текст конечного пользователя. Политика разрешений определяет, выполняется ли вызов инструмента, ожидает ли он вашего одобрения или оценивается сервером.
| Инструмент | Рекомендуемая политика | Почему |
|---|---|---|
read, glob, grep | always_allow | Они читают файлы в песочнице и ничего не изменяют |
bash, write, edit | auto. Используйте always_ask для инструмента, если вы не можете отменить его изменения за пределами песочницы. Используйте always_ask для bash, если вы пересылаете текст конечного пользователя | Значение по умолчанию для набора инструментов агента — always_allow, при котором каждый вызов выполняется без одобрения |
web_fetch | auto | URL, который загружает агент, может передать данные сайту, на который он указывает |
web_search | always_ask, если агент обрабатывает данные, которые вы не хотели бы отправлять в поисковом запросе. В противном случае always_allow | allowed_domains ограничивает, с каких сайтов поступают результаты, а не содержимое запроса |
| Инструменты MCP, которые только читают данные | auto, задаётся для каждого инструмента в configs набора инструментов | Значение по умолчанию для набора инструментов остаётся always_ask, поэтому инструмент, который сервер MCP добавит позже, по-прежнему будет ожидать одобрения |
| Инструменты MCP, которые изменяют данные | always_ask | Это значение по умолчанию для набора инструментов MCP. Сохраните его |
| Пользовательские инструменты | Ваш код решает, выполняется ли каждый вызов | Политики разрешений не применяются |
Набор инструментов в разделе Дайте агенту минимальный набор инструментов применяет эти политики.
Политика auto позволяет серверу выполнить вызов, отклонить его или приостановить для одобрения. Человек не может одобрить каждый вызов в длительном запуске, поэтому вместо этого каждый вызов проверяет сервер. Сочетайте auto с ограниченной сетью, ключом с узкими разрешениями, бюджетом и оповещением о сессиях в режиме ожидания. auto не является контрольной точкой с участием человека, поэтому если человек должен проверять вызовы инструмента до их выполнения, настройте для этого инструмента always_ask.
auto рассматривает текст в событиях user.message и описание в событии user.define_outcome как ваши инструкции, включая пересылаемый вами текст конечного пользователя.
Приостановленная сессия ожидает бесконечно, поэтому сессии без присмотра нужен клиент, который отвечает на приостановленные вызовы или прерывает сессию.
Проверяйте каждый приостановленный вызов, прежде чем разрешить его. Клиент, который разрешает каждый вызов, не показывая его человеку, равнозначен always_allow. См. Ответ на запросы подтверждения и Просмотр результатов оценки каждого вызова.
Дайте агенту минимальный набор инструментов
Установите default_config.enabled в значение false и включите только те инструменты, которые нужны агенту. Набор инструментов агента по умолчанию включает все восемь встроенных инструментов.
| Инструмент | Что он делает |
|---|---|
bash | Выполняет любые команды, включая запросы к разрешённым хостам |
write, edit | Изменяют файлы в песочнице |
read, glob, grep | Читают файлы в песочнице |
web_fetch, web_search | Возвращают страницы и результаты поиска из интернета через серверы Anthropic |
Агенту поддержки нужны три встроенных инструмента: read и write для черновика и web_fetch для справочного центра. Он ищет заказы через пользовательский инструмент lookup_order, который выполняет ваше приложение. Ключ API для вашего API заказов хранит ваше приложение, поэтому агенту не нужны ни bash, ни учётные данные.
Следующий пример ограничивает web_fetch хостом help.example.com с помощью allowed_domains. Он устанавливает auto для write и web_fetch, как рекомендует раздел Одобряйте рискованные действия. Если обращение клиента побудит агента использовать эти инструменты, агент сможет только изменять файлы в песочнице или открывать страницы справочного центра. Поэтому ни одному из инструментов не нужен always_ask. Пример также устанавливает always_ask в default_config, поэтому инструмент, который вы включите позже без собственной политики, будет использовать always_ask:
ant apply agent.md---
name: Support Agent
model: claude-opus-5-5
tools:
- type: agent_toolset_20260401
default_config:
enabled: false
permission_policy:
type: always_ask
configs:
- name: read
enabled: true
permission_policy:
type: always_allow
- name: write
enabled: true
permission_policy:
type: auto
- name: web_fetch
enabled: true
allowed_domains: [help.example.com]
permission_policy:
type: auto
- type: custom
name: lookup_order
description: Look up one order by its ID. Returns the status, the items, and the delivery date.
input_schema:
type: object
properties:
order_id:
type: string
description: The order ID from the ticket
required:
- order_id
---Обновление агента заменяет весь массив tools, поэтому отправляйте все записи, которые хотите сохранить.
Обновление агента затрагивает только новые сессии, поэтому также проверьте развёртывания, агентов, которые ссылаются на этого агента, и существующие сессии:
- Развёртывание закрепляет версию агента, поэтому направьте каждое развёртывание на новую версию.
- Агент, который указывает этого агента в
subagents.predefined_agentsилиworkflows.predefined_agents, сохраняет закреплённую им версию, поэтому обновите и этого агента. - Чтобы ужесточить уже существующую сессию, обновите инструменты этой сессии. Сессия должна находиться в состоянии
idle, а обновление заменяет весь массивtools. В мультиагентной сессии новые спискиallowed_domainsиblocked_domainsдля веб-инструментов агента, которого запускает сессия, применяются и ко всем остальным агентам. Они вступают в силу со следующего хода каждого агента. Включённые инструменты и политики разрешений этих агентов не меняются. Чтобы изменить их, обновите каждого агента, а затем запустите новую сессию.
Также ограничьте серверы MCP и пользовательские инструменты тем, что нужно агенту:
- Серверы MCP: набор инструментов MCP по умолчанию включает все инструменты, которые предоставляет сервер. Установите
default_config.enabledв значениеfalseи включите инструменты по имени, чтобы инструменты, которые сервер добавит позже, оставались выключенными. Удалите серверы, которые агент не использует. См. Коннектор MCP. - Пользовательские инструменты: их выполняет ваше приложение, и политики разрешений к ним не применяются. Проверяйте входные данные каждого вызова в своём приложении и ограничивайте то, к чему может обращаться инструмент.
Держите недоверенные входные данные подальше от мощных инструментов
Проверяйте, какие инструменты и учётные данные есть у агента, всякий раз, когда он читает недоверенные входные данные, то есть текст, который может написать кто-то за пределами вашей команды. В этом разделе используются два термина:
- Недоверенные входные данные: веб-страницы, результаты поиска, обращения в поддержку, электронные письма, файлы репозиториев, загрузки, результаты серверов MCP и пересылаемые вами сообщения конечных пользователей.
- Мощные инструменты:
bash,write,edit,web_fetch,web_search, инструменты MCP и пользовательские инструменты, которые записывают или отправляют данные, а также любой инструмент, использующий учётные данные.
Текст в недоверенных входных данных может указать агенту использовать имеющийся у него мощный инструмент. Агент поддержки читает обращения, поэтому он обращается к вашему API заказов только через пользовательский инструмент lookup_order. Ваше приложение проверяет, что заказ принадлежит отправителю обращения.
| Входные данные, которые читает агент | Какие ещё возможности у него есть | Что делать |
|---|---|---|
| Обращения, электронные письма или загрузки | bash с учётными данными | Замените bash пользовательским инструментом, который делает что-то одно. Если агент должен сохранить bash, одобряйте каждый вызов с помощью always_ask |
| Веб-страницы или результаты поиска | Запись файлов или изменение записей | Отключите веб-инструменты или ограничьте их сайтами, которыми вы управляете или которым доверяете |
| Результаты MCP или файлы репозиториев | Инструменты MCP, которые записывают данные | Оставьте для набора инструментов MCP always_ask и включите только те инструменты, которые нужны агенту |
| Смонтированный репозиторий GitHub | Любой инструмент | Монтируйте только репозитории, которым доверяете. Агент с read загружает навыки из каталога .claude/skills репозитория как инструкции агента без этапа проверки. См. Загрузка навыков из репозитория GitHub |
| Любые недоверенные входные данные | Запись в хранилище памяти | Подключайте хранилище как read_only, если только агент не должен в него записывать. Значение по умолчанию — read_write, и последующие сессии читают сохранённый текст как доверенную память |
В облачной среде чтение файла с помощью read также может загрузить файлы CLAUDE.md и AGENTS.md как инструкции. Они загружаются из каталога файла и его родительских каталогов вплоть до рабочего каталога песочницы. Файлы, на которые они ссылаются с помощью @ и пути, например @docs/setup.md, также загружаются — до пяти уровней ссылок в глубину. Ссылка может указывать на любое место в песочнице, например @/etc/hosts. Никакая настройка не отключает это, кроме отключения read, поэтому рассматривайте репозиторий, пакет или архив, в который может записывать кто-то за пределами вашей команды, как недоверенные входные данные.
Когда агент должен читать недоверенные входные данные и при этом действовать, это руководство рекомендует один из трёх вариантов архитектуры:
- Разделите чтение и действия. В одной мультиагентной сессии ведущий агент даёт задачи сборщику, который читает веб, и исполнителю, который изменяет файлы или записи.
- Дайте агенту один узкий пользовательский инструмент. Ваше приложение выполняет инструмент, проверяет его входные данные и хранит учётные данные. Агент поддержки использует этот вариант, а не разделение. См. Ответ на вызовы инструментов, приостанавливающие сеанс.
- Оставьте человека в контуре. Используйте
always_askдля мощного инструмента, чтобы человек одобрял каждый вызов.
Разделение использует трёх агентов:
| Агент | Читает | Имеет | Передаёт дальше |
|---|---|---|---|
| Ведущий (агент, которого запускает сессия) | Ваше сообщение и то, что возвращают другие агенты | Никаких встроенных инструментов. Его список subagents.predefined_agents указывает сборщика и исполнителя | Задачу каждому агенту |
| Сборщик | Веб-страницы и результаты поиска | Только web_fetch и web_search, каждый с allowed_domains | Краткие результаты в формате, который вы запрашиваете в его системной подсказке |
| Исполнитель | Задачу от ведущего | Инструменты, которые записывают файлы, выполняют команды или изменяют записи, с auto или always_ask. Никаких веб-инструментов | Свой результат |
Результаты сборщика формируются из недоверенных страниц, и ведущий может передать их текст исполнителю. Сохраняйте auto или always_ask для инструментов исполнителя. Сборщик всё равно может отправить часть прочитанного на сайты из своего списка web_fetch и поставщику поиска в своих запросах.
Агенты в одной мультиагентной сессии совместно используют песочницу, её файлы и учётные данные хранилища, поэтому такое разделение разграничивает только их инструменты и диалоги. Для более строгого разделения используйте две сессии с отдельными средами и хранилищами. Пусть ваше приложение передаёт между двумя сессиями только фиксированные поля, например ID заказа.
Установите лимиты и способ остановки
Задавайте бюджет при создании каждой сессии и заранее решите, как вы будете останавливать агента.
| Средство управления | Что оно делает |
|---|---|
| Бюджет сессии | Лимит расходов по публичным прейскурантным ценам. При достижении лимита сессия и каждый поток приостанавливаются. Выполняющиеся запросы могут завершиться, а их вызовы инструментов всё равно выполняются, поэтому расходы могут превысить лимит. См. Когда сессия достигает бюджета |
| Бюджет развёртывания | Тот же лимит, применяемый к каждой сессии, которую запускает развёртывание |
Событие user.interrupt | Немедленно останавливает ответ модели. Выполняющийся вызов инструмента может сначала завершиться. Сессия переходит в состояние idle, если только запуск рабочего процесса не удерживает её в состоянии running, и возобновляется при вашем следующем сообщении. Прерывание не завершает ни один запуск рабочего процесса |
| Архивирование или удаление сессии | Архивирование сохраняет историю и блокирует новые события. Удаление удаляет запись, события и песочницу |
| Приостановка или архивирование развёртывания | Приостановка останавливает новые запуски по расписанию, но по-прежнему разрешает ручные запуски. Архивирование окончательно завершает расписание. Уже работающие сессии продолжают работать |
| Архивирование или удаление хранилища или учётных данных | Удаляет секрет из работающих сессий без перезапуска. Учитывайте задержку. Сессии продолжают работать, поэтому также прервите их. Токен, который агент уже получил с помощью секрета, остаётся в песочнице |
Чтобы остановить работающего агента, выполните следующие шаги:
- Отправьте
user.interruptотдельно. - Для агента, работающего по расписанию, также приостановите развёртывание, чтобы не начинались новые запуски по расписанию. Чтобы окончательно завершить расписание, заархивируйте развёртывание.
- Если ключ мог быть раскрыт, выполните его ротацию в сервисе, который его выдал.
- Если у агента есть открытые запуски рабочих процессов, также отправьте
user.messageс просьбой остановить их, потому что прерывание не завершает ни один запуск. О том, какие вызовы инструментов нужно сначала отменить, см. Прерывание сессии с открытыми запусками. - Дождитесь перехода сессии в состояние
idle. Работающую сессию нельзя заархивировать или удалить. - Заархивируйте сессию, чтобы сохранить её историю. Удалите её, когда история вам больше не понадобится.
Прерывание не отменяет того, что агент уже сделал или отправил. Архивирование агента не останавливает его работающие сессии.
Значение max_list_cost.amount бюджета — это целое число центов США, записанное в виде строки, поэтому "125" означает $1,25. См. Задание бюджета при создании сессии.
Нельзя добавить бюджет к сессии, созданной без него. Чтобы изменить или удалить лимит, см. Возобновление сессии, достигшей бюджета. После удаления лимита сессии установить новый нельзя.
Бюджет ограничивает расходы, но не ограничивает то, что агент делает до достижения лимита. Чтобы разделить рабочие нагрузки с разными уровнями доверия, используйте отдельные рабочие пространства. Дайте каждой рабочей нагрузке ключ API, ограниченный одним рабочим пространством, потому что ключ с доступом к нескольким рабочим пространствам может действовать в любом из них.
См. Бюджеты сессий, Операции с сессиями и Развёртывания по расписанию.
Следующие шаги
Сетевые режимы, разрешённые хосты и менеджеры пакетов.
Политики одобрения и запросы подтверждения.
Типы учётных данных, места внедрения и ротация.
Лимиты, возобновление при достижении бюджета и бюджеты развёртываний.
Was this page helpful?