tool_choice und Kontrolle
Auf dieser Seite
Kontrolle des Modellverhaltens
Standardmäßig entscheidet das Modell eigenständig, ob es ein Tool aufruft oder direkt antwortet. Dies ist der auto-Modus. In manchen Fällen benötigen Sie jedoch eine feinere Kontrolle. Der Parameter tool_choice gibt Ihnen diese Macht.
Die vier tool_choice-Modi
auto-Modus (Standard)
response = client.chat.completions.create(
model="grok-4.5",
messages=messages,
tools=tools,
tool_choice="auto"
)
Das Modell bewertet die Anfrage und entscheidet:
- Wenn die Anfrage externe Daten benötigt → es ruft ein Tool auf
- Wenn es direkt antworten kann → es antwortet ohne Tool
Dies ist der häufigste und natürlichste Modus. Verwenden Sie ihn, wenn Sie dem Urteil des Modells vertrauen.
required-Modus
response = client.chat.completions.create(
model="grok-4.5",
messages=messages,
tools=tools,
tool_choice="required"
)
Das Modell muss mindestens ein Tool aufrufen. Es kann nicht direkt antworten, selbst wenn es die Antwort bereits kennt. Anwendungsfälle:
- Strukturierte Extraktion: Sie möchten das Modell zwingen, Daten über ein dediziertes Tool in ein bestimmtes Format zu extrahieren
- Pflichtvalidierung: Jede Anfrage muss durch ein Validierungstool laufen
- Systematische Protokollierung: Alles muss über ein Protokollierungstool nachverfolgt werden
none-Modus
response = client.chat.completions.create(
model="grok-4.5",
messages=messages,
tools=tools,
tool_choice="none"
)
Schaltet das Funktionsaufrufen für diese Anfrage vollständig aus. Das Modell sieht die Tool-Definitionen (sie bleiben im Kontext), kann sie aber nicht aufrufen. Anwendungsfälle:
- Klärungsphase: Sie möchten, dass das Modell Fragen stellt, bevor es handelt
- Vorschau-Modus: Zeigen Sie, was das Modell tun würde, ohne auszuführen
- Fallback: Wenn Tools vorübergehend nicht verfügbar sind
Spezifischer Modus (ein bestimmtes Tool erzwingen)
response = client.chat.completions.create(
model="grok-4.5",
messages=messages,
tools=tools,
tool_choice={
"type": "function",
"function": {"name": "get_weather"}
}
)
Das Modell wird gezwungen, genau dieses Tool aufzurufen. Es kann sich für keines anderen entscheiden, noch direkt antworten. Dies ist der restriktivste Modus. Anwendungsfälle:
- Sequentielle Arbeitsabläufe: An diesem Schritt muss genau dieses Tool aufgerufen werden
- Tests: Sie möchten überprüfen, ob das Modell die korrekten Argumente für ein gegebenes Tool generiert
- Zielgerichtete Extraktion: Sie wissen, welches Tool zu verwenden ist, und möchten nur, dass das Modell die Parameter extrahiert
Modusvergleich
| Modus | Verhalten | Wann verwenden |
|---|---|---|
| auto | Das Modell entscheidet frei | Allgemeiner Fall, Chatbots |
| required | Muss mindestens ein Tool aufrufen | Extraktion, Validierung |
| none | Keine Tools erlaubt | Klärung, Fallback |
| {"function":...} | Erzwingt ein bestimmtes Tool | Arbeitsablauf, Tests |
Fortgeschrittene Strategien
Modi wechseln in einem Arbeitsablauf
Ein intelligenter Arbeitsablauf kann tool_choice je nach Schritt ändern:
# Schritt 1: Suche erzwingen
response1 = client.chat.completions.create(
model="grok-4.5",
messages=messages,
tools=tools,
tool_choice={"type": "function", "function": {"name": "search_products"}}
)
# Schritt 2: Dem Modell die Entscheidung überlassen (Analyse oder Frage)
response2 = client.chat.completions.create(
model="grok-4.5",
messages=updated_messages,
tools=tools,
tool_choice="auto"
)
Kombination mit dem Systemprompt
Der Systemprompt kann das Modell auch im auto-Modus bei seinen Tool-Auswahlen leiten:
messages = [
{
"role": "system",
"content": "Sie sind eine Reiseassistentin. Verwenden Sie immer "
"get_weather, bevor Sie Aktivitäten im Freien empfehlen."
},
{"role": "user", "content": "Was sollte ich dieses Wochenende in Marseille tun?"}
]
Kernaussagen
auto: Das Modell entscheidet (Standard, empfohlen für die meisten Fälle)required: Erzwingt den Aufruf mindestens eines Toolsnone: Schaltet das Funktionsaufrufen vorübergehend aus- Spezifischer Modus: Erzwingt den Aufruf eines bestimmten Tools nach Name
- Modi wechseln in einem Arbeitsablauf für feine Kontrolle
- Kombinieren Sie
tool_choicemit dem Systemprompt, um das Modell zu leiten