Loading...
  • Bangun
  • Admin
  • Model & harga
  • Client SDK
  • Referensi API
Search...
⌘K
Log in
Penggunaan alat paralel
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
Bangun/Alat

Penggunaan alat paralel

Aktifkan dan format panggilan alat paralel, dengan panduan riwayat pesan dan pemecahan masalah.

Was this page helpful?

  • Contoh yang dikerjakan
  • Memaksimalkan penggunaan alat paralel
  • Pemecahan masalah
  • Langkah berikutnya

Halaman ini mencakup panggilan alat paralel: ketika Claude memanggil beberapa alat dalam satu giliran, cara memformat riwayat pesan sehingga paralelisme terus berfungsi, dan cara menonaktifkannya. Untuk alur panggilan tunggal, lihat Handle tool calls.

Secara default, Claude dapat menggunakan beberapa alat untuk menjawab pertanyaan pengguna. Anda dapat menonaktifkan perilaku ini dengan:

  • Mengatur disable_parallel_tool_use=true ketika tipe tool_choice adalah auto, yang memastikan bahwa Claude menggunakan paling banyak satu alat
  • Mengatur disable_parallel_tool_use=true ketika tipe tool_choice adalah any atau tool, yang memastikan bahwa Claude menggunakan tepat satu alat

Contoh yang dikerjakan

Lebih Sederhana dengan Tool Runner: Contoh di bawah menunjukkan penanganan alat paralel manual. Untuk sebagian besar kasus penggunaan, Tool Runner secara otomatis menangani eksekusi alat paralel dengan kode yang jauh lebih sedikit.

Berikut adalah skrip lengkap yang dapat dijalankan untuk menguji dan memverifikasi bahwa panggilan alat paralel berfungsi dengan benar:

# Define tools
tools = [
    {
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "input_schema": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA",
                }
            },
            "required": ["location"],
        },
    },
    {
        "name": "get_time",
        "description": "Get the current time in a given timezone",
        "input_schema": {
            "type": "object",
            "properties": {
                "timezone": {
                    "type": "string",
                    "description": "The timezone, e.g. America/New_York",
                }
            },
            "required": ["timezone"],
        },
    },
]

# Test conversation with parallel tool calls
messages = [
    {
        "role": "user",
        "content": "What's the weather in SF and NYC, and what time is it there?",
    }
]

# Make initial request
print("Requesting parallel tool calls...")
response = client.messages.create(
    model="claude-opus-4-7", max_tokens=1024, messages=messages, tools=tools
)

# Check for parallel tool calls
tool_uses = [block for block in response.content if block.type == "tool_use"]
print(f"\n✓ Claude made {len(tool_uses)} tool calls")

if len(tool_uses) > 1:
    print("✓ Parallel tool calls detected!")
    for tool in tool_uses:
        print(f"  - {tool.name}: {tool.input}")
else:
    print("✗ No parallel tool calls detected")

# Simulate tool execution and format results correctly
tool_results = []
for tool_use in tool_uses:
    if tool_use.name == "get_weather":
        if "San Francisco" in str(tool_use.input):
            result = "San Francisco: 68°F, partly cloudy"
        else:
            result = "New York: 45°F, clear skies"
    else:  # get_time
        if "Los_Angeles" in str(tool_use.input):
            result = "2:30 PM PST"
        else:
            result = "5:30 PM EST"

    tool_results.append(
        {"type": "tool_result", "tool_use_id": tool_use.id, "content": result}
    )

# Continue conversation with tool results
messages.extend(
    [
        {"role": "assistant", "content": response.content},
        {"role": "user", "content": tool_results},  # All results in one message!
    ]
)

# Get final response
print("\nGetting final response...")
final_response = client.messages.create(
    model="claude-opus-4-7", max_tokens=1024, messages=messages, tools=tools
)

print(f"\nClaude's response:\n{final_response.content[0].text}")

# Verify formatting
print("\n--- Verification ---")
print(f"✓ Tool results sent in single user message: {len(tool_results)} results")
print("✓ No text before tool results in content array")
print("✓ Conversation formatted correctly for future parallel tool use")

Skrip ini mendemonstrasikan:

  • Cara memformat dengan benar panggilan alat paralel dan hasil
  • Cara memverifikasi bahwa panggilan paralel sedang dilakukan
  • Struktur pesan yang benar yang mendorong penggunaan alat paralel di masa depan
  • Kesalahan umum yang harus dihindari (seperti teks sebelum hasil alat)

Jalankan skrip ini untuk menguji implementasi Anda dan memastikan Claude membuat panggilan alat paralel secara efektif.

Memaksimalkan penggunaan alat paralel

Meskipun model Claude 4 memiliki kemampuan penggunaan alat paralel yang sangat baik secara default, Anda dapat meningkatkan kemungkinan eksekusi alat paralel di semua model dengan prompting yang ditargetkan:

Pemecahan masalah

Jika Claude tidak membuat panggilan alat paralel seperti yang diharapkan, periksa masalah umum ini:

1. Format hasil alat yang tidak benar

Masalah paling umum adalah memformat hasil alat dengan tidak benar dalam riwayat percakapan. Ini "mengajarkan" Claude untuk menghindari panggilan paralel.

Khusus untuk penggunaan alat paralel:

  • ❌ Salah: Mengirim pesan pengguna terpisah untuk setiap hasil alat
  • ✅ Benar: Semua hasil alat harus berada dalam satu pesan pengguna
// ❌ Ini mengurangi penggunaan alat paralel
[
  {"role": "assistant", "content": [tool_use_1, tool_use_2]},
  {"role": "user", "content": [tool_result_1]},
  {"role": "user", "content": [tool_result_2]}  // Pesan terpisah
]

// ✅ Ini mempertahankan penggunaan alat paralel
[
  {"role": "assistant", "content": [tool_use_1, tool_use_2]},
  {"role": "user", "content": [tool_result_1, tool_result_2]}  // Pesan tunggal
]

Lihat Handle tool calls untuk aturan pemformatan lainnya.

2. Prompting yang lemah

Prompting default mungkin tidak cukup. Gunakan prompt sistem yang lebih kuat dari bagian Memaksimalkan penggunaan alat paralel di atas.

3. Mengukur penggunaan alat paralel

Untuk memverifikasi panggilan alat paralel berfungsi:

# Hitung rata-rata alat per pesan yang memanggil alat
tool_call_messages = [
    msg for msg in messages if any(block.type == "tool_use" for block in msg.content)
]
total_tool_calls = sum(
    len([b for b in msg.content if b.type == "tool_use"]) for msg in tool_call_messages
)
avg_tools_per_message = (
    total_tool_calls / len(tool_call_messages) if tool_call_messages else 0.0
)
print(f"Average tools per message: {avg_tools_per_message}")
# Harus > 1.0 jika panggilan paralel berfungsi

Langkah berikutnya

  • Untuk alur panggilan alat tunggal dan aturan pemformatan tool_result, lihat Handle tool calls.
  • Untuk abstraksi SDK yang menangani eksekusi paralel secara otomatis, lihat Tool Runner.
  • Untuk alur kerja penggunaan alat lengkap, lihat Define tools.