Loading...
    • Bangun
    • Admin
    • Model & harga
    • Client SDK
    • Referensi API
    Search...
    ⌘K
    Administrasi
    Ikhtisar Admin APIRuang kerjaResidensi dataRetensi API dan data
    Pemantauan
    Claude Code Analytics APIUsage and Cost API
    Platform pihak ketiga
    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
    Administrasi

    Migrasi

    Pindahkan agen yang ada yang dibangun di Messages API atau Claude Agent SDK ke Claude Managed Agents.

    Was this page helpful?

    • Dari loop agen Messages API
    • Apa yang Anda berhenti kelola
    • Perbandingan kode
    • Apa yang masih Anda kontrol
    • Dari Claude Agent SDK
    • Apa yang berubah
    • Perbandingan kode
    • Fitur yang bergerak ke klien Anda
    • Daftar periksa migrasi
    • Bermigrasi antara versi model

    Claude Managed Agents menggantikan loop agen yang ditulis tangan dengan infrastruktur terkelola. Halaman ini mencakup perubahan apa ketika Anda bermigrasi dari loop kustom yang dibangun di Messages API atau dari Claude Agent SDK.

    Semua permintaan Claude Managed Agents API memerlukan header beta managed-agents-2026-04-01. SDK menetapkan header beta secara otomatis.

    Dari loop agen Messages API

    Jika Anda membangun agen dengan memanggil messages.create dalam loop while, menjalankan panggilan alat sendiri, dan menambahkan hasil ke riwayat percakapan, sebagian besar kode itu akan hilang.

    Apa yang Anda berhenti kelola

    SebelumSesudah
    Anda mempertahankan array riwayat percakapan dan meneruskannya kembali di setiap giliran.Sesi menyimpan riwayat di sisi server. Kirim acara, terima acara.
    Anda mengurai stop_reason: "tool_use", menjalankan alat, dan loop kembali dengan pesan tool_result.Alat pra-bangun dijalankan di dalam kontainer secara otomatis. Anda hanya menangani alat kustom melalui acara agent.custom_tool_use.
    Anda menyediakan sandbox Anda sendiri untuk menjalankan kode yang dihasilkan agen.Kontainer sesi menangani eksekusi kode, operasi file, dan bash.
    Anda memutuskan kapan loop selesai.Sesi memancarkan session.status_idle ketika agen tidak memiliki apa pun lagi untuk dilakukan.

    Perbandingan kode

    Sebelum (loop Messages API, disederhanakan):

    Sesudah (Claude Managed Agents):

    Apa yang masih Anda kontrol

    • Prompt sistem dan model: Bidang yang sama, sekarang pada definisi agen.
    • Alat kustom: Masih dideklarasikan dengan JSON Schema. Eksekusi bergerak dari penanganan inline ke merespons acara agent.custom_tool_use. Lihat Aliran acara sesi.
    • Konteks: Anda masih dapat menyuntikkan konteks melalui prompt sistem, sumber daya file, atau keterampilan.

    Dari Claude Agent SDK

    Jika Anda membangun dengan Claude Agent SDK, Anda sudah bekerja dengan agen, alat, dan sesi sebagai konsep. Perbedaannya adalah di mana mereka berjalan: SDK dijalankan dalam proses yang Anda operasikan, sementara Managed Agents berjalan di infrastruktur Anthropic. Sebagian besar migrasi adalah pemetaan objek konfigurasi SDK ke padanan mereka di sisi API.

    Apa yang berubah

    Agent SDKManaged Agents
    ClaudeAgentOptions(...) dibangun per jalankanclient.beta.agents.create(...) sekali; Agen disimpan dan diversi di sisi server. Lihat Penyiapan Agen.
    async with ClaudeSDKClient(...) atau query(...)client.beta.sessions.create(...) kemudian kirim dan terima acara.
    Fungsi @tool-decorated dikirim secara otomatis oleh SDKDeklarasikan sebagai {"type": "custom", ...} pada Agen; klien Anda menangani acara agent.custom_tool_use dan membalas dengan user.custom_tool_result. Lihat Alat.
    Alat bawaan berjalan dalam proses Anda terhadap sistem file Anda{"type": "agent_toolset_20260401"} menjalankan alat yang sama di dalam kontainer sesi terhadap .

    Perbandingan kode

    Sebelum (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)

    Sesudah (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

    Agen dan Lingkungan dibuat sekali dan digunakan kembali di seluruh sesi. Fungsi alat masih berjalan dalam proses Anda; perbedaannya adalah Anda membaca acara agent.custom_tool_use dan mengirim hasilnya secara eksplisit alih-alih SDK mengirimnya untuk Anda.

    Fitur yang bergerak ke klien Anda

    Pertukaran untuk Anthropic menjalankan loop agen adalah bahwa beberapa hal yang ditangani SDK secara otomatis menjadi tanggung jawab klien Anda.

    Fitur SDKPendekatan Managed Agents
    Mode perencanaanJalankan sesi khusus perencanaan terlebih dahulu, kemudian sesi kedua untuk dieksekusi.
    Gaya output, perintah slashTerapkan di klien Anda sebelum mengirim user.message atau setelah menerima agent.message.
    Hook PreToolUse / PostToolUseKlien Anda sudah melihat setiap acara agent.custom_tool_use sebelum merespons; letakkan logika di sana. Untuk alat bawaan, gunakan permission_policy: always_ask.
    max_turnsHitung giliran di sisi klien.

    Daftar periksa migrasi

    1. Buat lingkungan dengan jaringan dan runtime yang dibutuhkan agen Anda.
    2. Portkan prompt sistem dan pemilihan alat Anda ke definisi agen.
    3. Ganti loop Anda dengan sessions.create dan sessions.stream.
    4. Untuk file lokal apa pun yang dibaca agen, unggah melalui Files API dan pasang sebagai resources.
    5. Untuk penangan alat kustom apa pun, pindahkan eksekusi ke loop acara Anda sebagai respons terhadap acara agent.custom_tool_use.
    6. Verifikasi dengan sesi pengujian sebelum mengarahkan lalu lintas produksi ke alur baru.

    Bermigrasi antara versi model

    Ketika model Claude baru dirilis, bermigrasi integrasi Claude Managed Agents biasanya merupakan perubahan satu bidang: perbarui model pada definisi agen Anda dan perubahan berlaku pada sesi berikutnya yang Anda buat.

    Sebagian besar perubahan perilaku tingkat model yang didokumentasikan dalam panduan migrasi Messages API tidak memerlukan tindakan di pihak Anda:

    • Perubahan parameter permintaan (default max_tokens, konfigurasi thinking) ditangani oleh runtime Claude Managed Agents. Bidang-bidang ini tidak diekspos pada definisi agen.
    • Pengisian pesan asisten tidak ada dalam model sesi berbasis acara, jadi penghapusannya pada model yang lebih baru adalah no-op.
    • Penghindaran JSON argumen alat diurai oleh runtime sebelum Anda menerima acara agent.custom_tool_use. Anda melihat data terstruktur, bukan string mentah.

    Deskripsi perilaku dalam panduan Messages API (apa yang dilakukan model secara berbeda) masih berlaku. Langkah-langkah migrasi (cara mengubah kode permintaan Anda) tidak.

    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'
    )
    
    # Open the SSE stream in the background, then send the user message.
    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
    
    # Read events until the session goes idle.
    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
    /workspace
    cwd, add_dirs menunjuk ke jalur lokalUnggah atau pasang file sebagai sumber daya sesi.
    system_prompt dan hierarki CLAUDE.mdString system tunggal pada Agen. Setiap pembaruan menghasilkan versi baru di sisi server; pin sesi ke versi tertentu untuk mempromosikan atau rollback tanpa deploy. Lihat Penyiapan Agen.
    mcp_servers dikonfigurasi dan diautentikasi di satu tempatDeklarasikan server pada Agen; berikan kredensial melalui Vault pada Sesi.
    permission_mode, can_use_toolPer-alat permission_policy; merespons acara user.tool_confirmation untuk alat 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"}')"