Loading...
    • Разработка
    • Администрирование
    • Модели и цены
    • Клиентские SDK
    • Справочник API
    Search...
    ⌘K
    Администрирование
    Обзор Admin APIРабочие пространстваРезидентность данныхAPI и хранение данных
    Мониторинг
    Claude Code Analytics APIAPI использования и затрат
    Сторонние платформы
    Amazon BedrockMicrosoft FoundryVertex AI
    Console
    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
    • Catalog
    • 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
    • Catalog
    • 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.

    Все запросы к Managed Agents API требуют бета-заголовка 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. См. Инструменты.
    Встроенные инструменты выполняются в вашем процессе против вашей файловой системы запускает те же инструменты внутри контейнера сессии против .

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

    До (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-sonnet-4-6",
        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-sonnet-4-6",
        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-sonnet-4-6",
            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=$(
      curl --fail-with-body -sS "https://api.anthropic.com/v1/agents?beta=true" \
        -H "x-api-key: ${ANTHROPIC_API_KEY}" \
        -H "anthropic-version: 2023-06-01" \
        -H "anthropic-beta: managed-agents-2026-04-01" \
        --json '{
          "name": "Task Runner",
          "model": "claude-sonnet-4-6",
          "tools": [{"type": "agent_toolset_20260401"}]
        }'
    )
    agent_id=$(jq -r '.id' <<< "${agent}")
    
    session_id=$(
      curl --fail-with-body -sS "https://api.anthropic.com/v1/sessions?beta=true" \
        -H "x-api-key: ${ANTHROPIC_API_KEY}" \
        -H "anthropic-version: 2023-06-01" \
        -H "anthropic-beta: managed-agents-2026-04-01" \
        --json "$(jq -n --argjson a "${agent}" --arg env "${environment_id}" \
          '{agent: {type: "agent", id: $a.id, version: $a.version}, environment_id: $env}')" \
      | jq -r '.id'
    )
    
    # Открываем SSE-поток в фоне, затем отправляем сообщение пользователя.
    stream_log=$(mktemp)
    curl --fail-with-body -sS -N \
      "https://api.anthropic.com/v1/sessions/${session_id}/stream?beta=true" \
      -H "x-api-key: ${ANTHROPIC_API_KEY}" \
      -H "anthropic-version: 2023-06-01" \
      -H "anthropic-beta: managed-agents-2026-04-01" \
      > "${stream_log}" &
    stream_pid=$!
    
    curl --fail-with-body -sS \
      "https://api.anthropic.com/v1/sessions/${session_id}/events?beta=true" \
      -H "x-api-key: ${ANTHROPIC_API_KEY}" \
      -H "anthropic-version: 2023-06-01" \
      -H "anthropic-beta: managed-agents-2026-04-01" \
      --json "$(jq -n --arg text "${task}" \
        '{events: [{type: "user.message", content: [{type: "text", text: $text}]}]}')" \
      > /dev/null
    
    # Читаем события до тех пор, пока сессия не перейдёт в режим ожидания.
    while IFS= read -r line; do
      [[ ${line} == data:* ]] || continue
      event_type=$(jq -r '.type // empty' 2>/dev/null <<< "${line#data: }" || true)
      [[ ${event_type} == "session.status_idle" ]] && break
    done < <(tail -f -n +1 "${stream_log}")
    
    kill "${stream_pid}" 2>/dev/null || true
    {"type": "agent_toolset_20260401"}
    /workspace
    cwd, add_dirs указывают на локальные путиЗагрузите или смонтируйте файлы как ресурсы сессии.
    system_prompt и иерархия CLAUDE.mdЕдинственная строка system на агенте. Каждое обновление создаёт новую серверную версию; привязывайте сессии к конкретной версии для продвижения или отката без деплоя. См. Настройка агента.
    mcp_servers настраиваются и аутентифицируются в одном местеОбъявляйте серверы на агенте; предоставляйте учётные данные через Vault в сессии.
    permission_mode, can_use_toolДля каждого инструмента permission_policy; отвечайте на события user.tool_confirmation для инструментов с always_ask.
    curl -sS --fail-with-body "https://api.anthropic.com/v1/agents/$AGENT_ID?beta=true" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -H "anthropic-beta: managed-agents-2026-04-01" \
      --json "$(jq -n --argjson version "$AGENT_VERSION" '{version: $version, model: "claude-sonnet-4-6"}')"