Loading...
  • Разработка
  • Администрирование
  • Модели и цены
  • Клиентские SDK
  • Справочник API
Search...
⌘K
Log in
Миграция
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Администрирование

Миграция

Перенесите существующего агента, созданного на Messages API или Claude Agent SDK, на Claude Managed Agents.

Was this page helpful?

  • С цикла агента Messages API
  • Что вы перестаёте управлять
  • Сравнение кода
  • Что вы всё ещё контролируете
  • С Claude Agent SDK
  • Что меняется
  • Сравнение кода
  • Функции, которые переходят к вашему клиенту
  • Контрольный список миграции
  • Миграция между версиями модели

Claude Managed Agents заменяет ваш написанный вручную цикл агента управляемой инфраструктурой. На этой странице описаны изменения при миграции с пользовательского цикла, созданного на Messages API или с Claude Agent SDK.

Все запросы API Managed Agents требуют заголовка бета-версии managed-agents-2026-04-01. SDK автоматически устанавливает заголовок бета-версии.

С цикла агента Messages API

Если вы создали агента, вызывая messages.create в цикле while, самостоятельно выполняя вызовы инструментов и добавляя результаты в историю разговора, большая часть этого кода исчезает.

Что вы перестаёте управлять

ДоПосле
Вы ведёте массив истории разговора и передаёте его обратно на каждом ходу.Сессия хранит историю на сервере. Отправляйте события, получайте события.
Вы анализируете stop_reason: "tool_use", выполняете инструмент и возвращаетесь с сообщением tool_result.Встроенные инструменты выполняются внутри контейнера автоматически. Вы только обрабатываете пользовательские инструменты через события agent.custom_tool_use.
Вы предоставляете собственную песочницу для выполнения кода, созданного агентом.Контейнер сессии обрабатывает выполнение кода, операции с файлами и bash.
Вы решаете, когда цикл завершён.Сессия выдаёт session.status_idle, когда агенту больше нечего делать.

Сравнение кода

До (цикл Messages API, упрощённо):

После (Claude Managed Agents):

Что вы всё ещё контролируете

  • Системный запрос и модель: Те же поля, теперь в определении агента.
  • Пользовательские инструменты: По-прежнему объявляются с JSON Schema. Выполнение переходит от встроенной обработки к ответам на события agent.custom_tool_use. См. Поток событий сессии.
  • Контекст: Вы всё ещё можете внедрять контекст через системный запрос, ресурсы файлов или навыки.

С Claude Agent SDK

Если вы работали с Claude Agent SDK, вы уже работаете с агентами, инструментами и сессиями как с концепциями. Разница в том, где они выполняются: SDK выполняется в процессе, который вы управляете, а Managed Agents выполняется в инфраструктуре Anthropic. Большая часть миграции — это сопоставление объектов конфигурации SDK с их эквивалентами на стороне API.

Что меняется

Agent SDKManaged Agents
ClaudeAgentOptions(...) построен для каждого запускаclient.beta.agents.create(...) один раз; агент сохраняется и версионируется на сервере. См. Настройка агента.
async with ClaudeSDKClient(...) или query(...)client.beta.sessions.create(...) затем отправляйте и получайте события.
@tool-декорированные функции, отправляемые автоматически SDKОбъявите как {"type": "custom", ...} на агенте; ваш клиент обрабатывает события agent.custom_tool_use и отвечает с user.custom_tool_result. См. Инструменты.
Встроенные инструменты выполняются в вашем процессе против вашей файловой системы{"type": "agent_toolset_20260401"} выполняет те же инструменты внутри контейнера сессии против .

Сравнение кода

До (Agent SDK):

from claude_agent_sdk import (
    ClaudeAgentOptions,
    ClaudeSDKClient,
    create_sdk_mcp_server,
    tool,
)


@tool("get_weather", "Get the current weather for a city.", {"city": str})
async def get_weather(args: dict) -> dict:
    return {"content": [{"type": "text", "text": f"{args['city']}: 18°C, clear"}]}


options = ClaudeAgentOptions(
    model="claude-opus-4-7",
    system_prompt="You are a concise weather assistant.",
    mcp_servers={
        "weather": create_sdk_mcp_server("weather", "1.0", tools=[get_weather])
    },
)

async with ClaudeSDKClient(options=options) as agent:
    await agent.query("What's the weather in Tokyo?")
    async for msg in agent.receive_response():
        print(msg)

После (Managed Agents):

from anthropic import Anthropic

client = Anthropic()

agent = client.beta.agents.create(
    name="weather-agent",
    model="claude-opus-4-7",
    system="You are a concise weather assistant.",
    tools=[
        {
            "type": "custom",
            "name": "get_weather",
            "description": "Get the current weather for a city.",
            "input_schema": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        }
    ],
)
environment = client.beta.environments.create(
    name="weather-env",
    config={"type": "cloud", "networking": {"type": "unrestricted"}},
)

session = client.beta.sessions.create(
    agent={"type": "agent", "id": agent.id, "version": agent.version},
    environment_id=environment.id,
)


def get_weather(city: str) -> str:
    return f"{city}: 18°C, clear"


with client.beta.sessions.events.stream(session.id) as stream:
    client.beta.sessions.events.send(
        session.id,
        events=[
            {
                "type": "user.message",
                "content": [{"type": "text", "text": "What's the weather in Tokyo?"}],
            }
        ],
    )
    for ev in stream:
        if ev.type == "agent.message":
            print("".join(b.text for b in ev.content))
        elif ev.type == "agent.custom_tool_use":
            result = get_weather(**ev.input)
            client.beta.sessions.events.send(
                session.id,
                events=[
                    {
                        "type": "user.custom_tool_result",
                        "custom_tool_use_id": ev.id,
                        "content": [{"type": "text", "text": result}],
                    }
                ],
            )
        elif ev.type == "session.status_idle" and ev.stop_reason.type == "end_turn":
            break

Агент и окружение создаются один раз и повторно используются во всех сессиях. Функция инструмента по-прежнему выполняется в вашем процессе; разница в том, что вы читаете событие agent.custom_tool_use и явно отправляете результат вместо того, чтобы SDK отправлял его для вас.

Функции, которые переходят к вашему клиенту

Компромисс за то, что Anthropic запускает цикл агента, заключается в том, что несколько вещей, которые SDK обрабатывал автоматически, становятся ответственностью вашего клиента.

Функция SDKПодход Managed Agents
Режим планированияСначала запустите сессию только для планирования, затем вторую сессию для выполнения.
Стили вывода, команды слэшаПрименяйте в вашем клиенте перед отправкой user.message или после получения agent.message.
PreToolUse / PostToolUse хукиВаш клиент уже видит каждое событие agent.custom_tool_use перед ответом; поместите логику туда. Для встроенных инструментов используйте permission_policy: always_ask.
max_turnsСчитайте ходы на стороне клиента.

Контрольный список миграции

  1. Создайте окружение с сетевыми возможностями и средами выполнения, которые нужны вашему агенту.
  2. Перенесите ваш системный запрос и выбор инструментов в определение агента.
  3. Замените ваш цикл на sessions.create и sessions.stream.
  4. Для любых локальных файлов, которые читает агент, загружайте их через Files API и монтируйте как resources.
  5. Для любых обработчиков пользовательских инструментов переместите выполнение в ваш цикл событий как ответы на события agent.custom_tool_use.
  6. Проверьте с тестовой сессией перед тем, как направить производственный трафик на новый поток.

Миграция между версиями модели

Когда выпускается новая модель Claude, миграция интеграции Claude Managed Agents обычно представляет собой изменение одного поля: обновите model в определении агента и изменение вступит в силу на следующей создаваемой сессии.

Большинство изменений поведения на уровне модели, задокументированные в руководстве по миграции Messages API, не требуют действий с вашей стороны:

  • Изменения параметров запроса (значения по умолчанию max_tokens, конфигурация thinking) обрабатываются средой выполнения Claude Managed Agents. Эти поля не открыты в определении агента.
  • Предзаполнение сообщения помощника не существует в модели сессии на основе событий, поэтому его удаление в новых моделях не требует действий.
  • Экранирование JSON аргументов инструмента анализируется средой выполнения перед тем, как вы получите события agent.custom_tool_use. Вы видите структурированные данные, а не необработанные строки.

Описания поведения в руководстве Messages API (что модель делает по-другому) по-прежнему применяются. Шаги миграции (как изменить код вашего запроса) — нет.

messages = [{"role": "user", "content": task}]
while True:
    response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        messages=messages,
        tools=tools,
    )
    messages.append({"role": "assistant", "content": response.content})
    if response.stop_reason == "end_turn":
        break
    for block in response.content:
        if block.type == "tool_use":
            result = execute_tool(block.name, block.input)
            messages.append(
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "tool_result",
                            "tool_use_id": block.id,
                            "content": result,
                        }
                    ],
                }
            )
agent = client.beta.agents.create(
    name="Task Runner",
    model="claude-opus-4-7",
    tools=[{"type": "agent_toolset_20260401"}],
)

session = client.beta.sessions.create(
    agent={"type": "agent", "id": agent.id, "version": agent.version},
    environment_id=environment.id,
)

with client.beta.sessions.events.stream(session.id) as stream:
    client.beta.sessions.events.send(
        session.id,
        events=[{"type": "user.message", "content": [{"type": "text", "text": task}]}],
    )
    for event in stream:
        if event.type == "session.status_idle":
            break
/workspace
cwd, add_dirs указывают на локальные путиЗагружайте или монтируйте файлы как ресурсы сессии.
system_prompt и иерархия CLAUDE.mdОдна строка system на агенте. Каждое обновление создаёт новую версию на сервере; закрепляйте сессии на определённой версии для продвижения или отката без развёртывания. См. Настройка агента.
mcp_servers настроены и аутентифицированы в одном местеОбъявите серверы на агенте; предоставьте учётные данные через Vault на сессии.
permission_mode, can_use_toolPer-tool permission_policy; ответьте на события user.tool_confirmation для инструментов always_ask.
ant beta:agents update \
  --agent-id "$AGENT_ID" \
  --version "$AGENT_VERSION" \
  --model claude-opus-4-7