Loading...
  • Erstellen
  • Admin
  • Modelle & Preise
  • Client-SDKs
  • API-Referenz
Search...
⌘K
Log in
Parallele Tool-Nutzung
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
Erstellen/Tools

Parallele Werkzeugnutzung

Aktivieren und formatieren Sie parallele Werkzeugaufrufe mit Nachrichtenhistorie-Anleitung und Fehlerbehebung.

Diese Seite behandelt parallele Werkzeugaufrufe: wenn Claude mehrere Werkzeuge in einem Durchgang aufruft, wie man die Nachrichtenhistorie formatiert, damit die Parallelität funktioniert, und wie man sie deaktiviert. Für den Single-Call-Ablauf siehe Werkzeugaufrufe verarbeiten.

Standardmäßig kann Claude mehrere Werkzeuge verwenden, um eine Benutzerabfrage zu beantworten. Sie können dieses Verhalten deaktivieren durch:

  • Setzen von disable_parallel_tool_use=true wenn der tool_choice-Typ auto ist, was sicherstellt, dass Claude höchstens ein Werkzeug verwendet
  • Setzen von disable_parallel_tool_use=true wenn der tool_choice-Typ any oder tool ist, was sicherstellt, dass Claude genau ein Werkzeug verwendet

Bearbeitetes Beispiel

Einfacher mit Tool Runner: Das folgende Beispiel zeigt manuelle parallele Werkzeugbehandlung. Für die meisten Anwendungsfälle verarbeitet Tool Runner die parallele Werkzeugausführung automatisch mit viel weniger Code.

Hier ist ein vollständiges, ausführbares Skript zum Testen und Überprüfen, dass parallele Werkzeugaufrufe korrekt funktionieren:

# 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")

Dieses Skript demonstriert:

  • Wie man parallele Werkzeugaufrufe und Ergebnisse korrekt formatiert
  • Wie man überprüft, dass parallele Aufrufe durchgeführt werden
  • Die korrekte Nachrichtenstruktur, die zukünftige parallele Werkzeugnutzung fördert
  • Häufige Fehler, die vermieden werden sollten (wie Text vor Werkzeugergebnissen)

Führen Sie dieses Skript aus, um Ihre Implementierung zu testen und sicherzustellen, dass Claude parallele Werkzeugaufrufe effektiv durchführt.

Maximierung der parallelen Werkzeugnutzung

Während Claude 4-Modelle standardmäßig hervorragende Fähigkeiten zur parallelen Werkzeugnutzung haben, können Sie die Wahrscheinlichkeit der parallelen Werkzeugausführung über alle Modelle hinweg mit gezieltem Prompting erhöhen:

Fehlerbehebung

Wenn Claude nicht wie erwartet parallele Werkzeugaufrufe durchführt, überprüfen Sie diese häufigen Probleme:

1. Falsche Formatierung von Werkzeugergebnissen

Das häufigste Problem ist die falsche Formatierung von Werkzeugergebnissen in der Gesprächshistorie. Dies „lehrt" Claude, parallele Aufrufe zu vermeiden.

Speziell für parallele Werkzeugnutzung:

  • ❌ Falsch: Separate Benutzernachrichten für jedes Werkzeugergebnis senden
  • ✅ Richtig: Alle Werkzeugergebnisse müssen sich in einer einzigen Benutzernachricht befinden
// ❌ Dies reduziert die parallele Werkzeugnutzung
[
  {"role": "assistant", "content": [tool_use_1, tool_use_2]},
  {"role": "user", "content": [tool_result_1]},
  {"role": "user", "content": [tool_result_2]}  // Separate Nachricht
]

// ✅ Dies behält die parallele Werkzeugnutzung bei
[
  {"role": "assistant", "content": [tool_use_1, tool_use_2]},
  {"role": "user", "content": [tool_result_1, tool_result_2]}  // Einzelne Nachricht
]

Siehe Werkzeugaufrufe verarbeiten für andere Formatierungsregeln.

2. Schwaches Prompting

Das Standard-Prompting reicht möglicherweise nicht aus. Verwenden Sie die stärkere Systemaufforderung aus dem Abschnitt Maximierung der parallelen Werkzeugnutzung oben.

3. Messung der parallelen Werkzeugnutzung

Um zu überprüfen, dass parallele Werkzeugaufrufe funktionieren:

# Calculate average tools per tool-calling message
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}")
# Should be > 1.0 if parallel calls are working

Nächste Schritte

  • Für den Single-Tool-Call-Ablauf und die tool_result-Formatierungsregeln siehe Werkzeugaufrufe verarbeiten.
  • Für die SDK-Abstraktion, die die parallele Ausführung automatisch verarbeitet, siehe Tool Runner.
  • Für den vollständigen Werkzeugnutzungs-Workflow siehe Werkzeuge definieren.

Was this page helpful?

  • Bearbeitetes Beispiel
  • Maximierung der parallelen Werkzeugnutzung
  • Fehlerbehebung
  • Nächste Schritte