0Pricing
AI Prompt Engineering · Lektion

Tool- und Function-Schemas

Schemas für Function Calling

Tool- und Function-Schemas ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Tools sind Schemas plus Absicht

Function Calling ermöglicht es einem Modell, anzufordern, dass Ihr Code eine Aktion ausführt. Jedes Tool wird mit einem Namen, einer Beschreibung (wann es verwendet werden soll) und einem JSON Schema für seine Parameter deklariert.

Das Modell führt niemals Code aus. Es gibt eine strukturierte Aufrufanforderung aus, die Ihre Laufzeitumgebung weiterleitet. Das Schema sorgt dafür, dass die Argumente geparst werden können.

Aufbau einer Tool-Definition

Eine Tool-Definition ist die Deklaration einer Fähigkeit, verpackt in ein Schema.

{
  'type': 'function',
  'function': {
    'name': 'get_weather',
    'description': 'Get current weather for a city. Use when the user asks about weather.',
    'parameters': {
      'type': 'object',
      'properties': {
        'city': {'type': 'string'},
        'units': {'type': 'string', 'enum': ['celsius', 'fahrenheit']}
      },
      'required': ['city', 'units'],
      'additionalProperties': False
    }
  }
}

Die Beschreibung steuert die Auswahl

Wenn viele Tools verfügbar sind, wählt das Modell hauptsächlich anhand der Beschreibung. Formulieren Sie Beschreibungen als Entscheidungsregeln:

  • Geben Sie an, wann das Tool verwendet werden soll und wann nicht.
  • Grenzen Sie es von ähnlichen Tools ab.
  • Nennen Sie erforderliche Voraussetzungen.

Schlechte Beschreibungen führen häufiger zur Auswahl des falschen Tools, als schlechte Schemas zu Argumentfehlern führen.

Der Aufruf-Ausführung-Rückgabe-Zyklus

Function Calling erfolgt über mehrere Interaktionen. Das Modell gibt einen Aufruf aus, Sie führen ihn aus, hängen das Ergebnis an und das Modell fährt fort.

resp = client.chat.completions.create(model='gpt-4o', messages=msgs, tools=tools)
call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append(resp.choices[0].message)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
             'content': json.dumps(result)})
# call the model again to continue with the tool result

Parallele Tool-Aufrufe

Moderne Modelle können mehrere Tool-Aufrufe in einer Interaktion anfordern, wenn die Aktionen unabhängig sind. Ihre Laufzeitumgebung sollte alle tool_calls durchlaufen, sie möglichst gleichzeitig ausführen und für jede tool_call_id eine Tool-Nachricht zurückgeben.

Nehmen Sie niemals nur einen Aufruf an, sondern iterieren Sie immer über alle.

for call in resp.choices[0].message.tool_calls:
    args = json.loads(call.function.arguments)
    result = dispatch(call.function.name, args)
    msgs.append({'role': 'tool', 'tool_call_id': call.id,
                 'content': json.dumps(result)})

Tool-Nutzung erzwingen und einschränken

Steuern Sie die Auswahl mit tool_choice:

  • auto — das Modell entscheidet.
  • required — es muss ein Tool aufgerufen werden.
  • {name: ...} — erzwingt ein bestimmtes Tool.
  • none — deaktiviert Tools für diese Interaktion.

Das Erzwingen eines bestimmten Tools macht Function Calling zu einer reinen strukturierten Extraktion.

client.chat.completions.create(
    model='gpt-4o', messages=msgs, tools=tools,
    tool_choice={'type': 'function', 'function': {'name': 'get_weather'}}
)

Args vor der Ausführung validieren

Behandeln Sie Tool-Argumente auch bei strikten Schemas als nicht vertrauenswürdige Eingaben. Validieren Sie sie erneut gegen das Schema und wenden Sie Geschäftsregeln an, bevor Sie auf reale Systeme zugreifen (Datenbanken, Zahlungen, Dateilöschungen).

def dispatch(name, args):
    schema = TOOLS[name]['function']['parameters']
    jsonschema.validate(args, schema)   # defense in depth
    if name == 'refund' and args['amount'] > MAX_AUTO_REFUND:
        return {'error': 'requires human approval'}
    return HANDLERS[name](**args)

Tool-Fehler sind Teil des Protokolls

Wenn ein Tool fehlschlägt, geben Sie als Tool-Ergebnis einen strukturierten Fehler zurück, statt einen Fehler auszulösen. Das Modell kann sich dann entschuldigen, es mit korrigierten Argumenten erneut versuchen oder ein anderes Tool auswählen.

Gestalten Sie Fehler umsetzbar: Geben Sie einen Grund und, sofern sicher, einen Hinweis zur Behebung an.

{'status': 'error',
 'code': 'CITY_NOT_FOUND',
 'message': 'No city named Xyz. Ask the user to clarify the city.'}

Die Tool-Oberfläche klein halten

Dutzende Tools verschlechtern die Auswahlgenauigkeit und erhöhen die Token-Kosten, da jedes Schema in jeder Interaktion im Kontext enthalten ist. Gegenmaßnahmen:

  • Bündeln Sie verwandte Aktionen hinter einem Tool mit einem action-Enum.
  • Stellen Sie dynamisch nur die Tools bereit, die für den aktuellen Zustand relevant sind.
  • Verwenden Sie Namespaces, um Verwechslungen zwischen ähnlichen Tools zu verringern.

Schema-Härtung für Seiteneffekte

Bei destruktiven Aktionen sollten Sie die Sicherheitsvorkehrungen bereits im Schema festlegen: Verlangen Sie ein ausdrückliches Bestätigungsfeld, schränken Sie Wertebereiche ein und verwenden Sie anstelle von Freitext-Bezeichnern Enums oder validierte Muster.

{
  'name': 'delete_records',
  'parameters': {
    'type': 'object',
    'properties': {
      'table': {'type': 'string', 'enum': ['logs', 'temp_cache']},
      'confirm': {'type': 'boolean'},
      'max_rows': {'type': 'integer', 'minimum': 1, 'maximum': 1000}
    },
    'required': ['table', 'confirm', 'max_rows'],
    'additionalProperties': False
  }
}

Tool-Definitionen testen

Behandeln Sie die Tool-Auswahl als messbares Verhalten. Erstellen Sie eine Evaluationsmenge aus Prompts, die dem erwarteten Tool und den erwarteten args zugeordnet sind, und prüfen Sie anschließend, ob das Modell die richtige Auswahl trifft. Erfassen Sie Regressionen, wenn Sie Beschreibungen umformulieren oder neue Tools hinzufügen.

cases = [
  {'prompt': 'Whats it like in Paris?', 'expect_tool': 'get_weather'},
  {'prompt': 'Convert 10 USD to EUR', 'expect_tool': 'fx_convert'}
]
for c in cases:
    assert run(c['prompt']).tool_name == c['expect_tool']

Schnelltest

Ein Modell gibt in einem einzigen Assistant-Turn zwei unabhängige tool_calls aus. Was muss Ihre Laufzeitumgebung tun?

Zusammenfassung

Tool-/Funktionsschemas in der Praxis:

  • Beschreibungen steuern die Auswahl; Schemas liefern parsbare Argumente.
  • Iterieren Sie über alle tool_calls und unterstützen Sie die parallele Ausführung.
  • Steuern Sie das Verhalten mit tool_choice; erzwingen Sie für die reine Extraktion ein Tool.
  • Validieren Sie die Argumente erneut und geben Sie strukturierte Fehler zurück.
  • Halten Sie die Tool-Oberfläche klein und sichern Sie destruktive Aktionen besonders ab.

Als Nächstes: Reparatur- und Validierungsschleifen für Fälle, in denen die Ausgabe weiterhin fehlerhaft ist.

Häufig gestellte Fragen

Ist die Lektion „Tool- und Function-Schemas“ kostenlos?

Ja — der vollständige Text von „Tool- und Function-Schemas“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tool- und Function-Schemas“?

Schemas für Function Calling Du übst AI Prompt Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Prompt Engineering zu starten?

Keine Vorkenntnisse erforderlich. AI Prompt Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Tool- und Function-Schemas“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Prompt Engineering-Lektion Code schreiben und ausführen?

Ja. Jede AI Prompt Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum strukturierte Ausgaben
  2. JSON Schema in Prompts
  3. Tool- und Function-Schemas
  4. Reparatur- und Validierungsschleifen
← Zurück zu AI Prompt Engineering