Freunde einladen und kostenlose Tokens verdienen!Mehr erfahren

Offizielle API-Dokumentation für Function Calling

Dieser Endpunkt dient zur Erstellung einer Chat-Vervollständigung (Chat Completion). Durch die Bereitstellung einer Nachrichtenliste und einer optionalen Werkzeugliste (Functions) kann das Modell eine Textantwort generieren oder Parameter erzeugen, die einem spezifischen JSON-Schema entsprechen, um externe Funktionen aufzurufen.

1. API-Informationen

  • API-Endpunkt: https://api.codingplanx.ai/v1/chat/completions
  • Anfragemethode: POST
  • Inhaltstyp (Content-Type): application/json
  • Authentifizierung: Authorization: Bearer {{YOUR_API_KEY}}

2. Anfrageparameter

2.1 Anfrage-Header (Headers)

ParameternameTypErforderlichBeispielBeschreibung
Content-TypestringJaapplication/jsonFestgelegt auf application/json
AcceptstringJaapplication/jsonEmpfohlen: festlegen auf application/json
AuthorizationstringJaBearer sk-xxxxxxAPI-Schlüssel-Authentifizierung

2.2 Anfrage-Body (Body)

ParameternameTypErforderlichStandardwertBeschreibung
modelstringJa-Die verwendete Modell-ID (z. B. gpt-4o, gpt-3.5-turbo usw.).
messagesarrayJa-Liste der bisherigen Konversationsnachrichten. Jedes Objekt enthält role ("system", "user", "assistant", "tool") und content.
toolsarrayJa-Liste der Werkzeuge, die das Modell aufrufen kann. Derzeit wird nur type: "function" unterstützt. Dient zur Definition von Funktionsnamen, Beschreibungen und Parametern.
tool_choiceobject/strNeinautoSteuert, welche Funktion das Modell aufruft. none: Kein Aufruf; auto: Automatische Auswahl; {"type": "function", "function": {"name": "xxx"}}: Erzwingt den Aufruf einer bestimmten Funktion.
temperaturenumberNein1Sampling-Temperatur (0-2). Höhere Werte machen die Ausgabe zufälliger, niedrigere Werte deterministischer.
top_pnumberNein1Nucleus-Sampling-Wahrscheinlichkeit.
nintegerNein1Anzahl der für jede Eingabenachricht generierten Chat-Vervollständigungsoptionen.
streambooleanNeinfalseOb gestreamt werden soll. Wenn auf true gesetzt, werden Tokens als Server-Sent Events (SSE) gesendet.
stopstring/arrayNeinnullStopp-Sequenzen, bei denen die API die Generierung von Tokens beendet.
max_tokensintegerNeininfMaximale Anzahl der zu generierenden Tokens.
presence_penaltynumberNein0Wert zwischen -2.0 und 2.0. Erhöht die Wahrscheinlichkeit, dass das Modell über neue Themen spricht.
frequency_penaltynumberNein0Wert zwischen -2.0 und 2.0. Verringert die Wahrscheinlichkeit, dass das Modell denselben Inhalt wiederholt.
response_formatobjectNein-Legt das Ausgabeformat fest. Z. B. aktiviert {"type": "json_object"} den JSON-Modus.
seedintegerNein-Wenn angegeben, versucht das System deterministisch zu sampeln, sodass Anfragen mit demselben Seed und denselben Parametern das gleiche Ergebnis liefern.
userstringNein-Eindeutiger Identifikator für den Endbenutzer, dient zur Überwachung von Missbrauch.

3. Anfragebeispiel

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": "Wie ist das Wetter heute in Peking?"
        }
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_current_weather",
                "description": "Ruft das aktuelle Wetter für einen bestimmten Ort ab",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "Name der Stadt, z. B.: Peking"
                        },
                        "unit": {
                            "type": "string",
                            "enum": ["celsius", "fahrenheit"]
                        }
                    },
                    "required": ["location"]
                }
            }
        }
    ],
    "tool_choice": "auto",
    "temperature": 0.8
}

4. Antwortparameter

4.1 Struktur des Antwort-Bodys

ParameternameTypBeschreibung
idstringEindeutiger Identifikator für diese Anfrage.
objectstringObjekttyp, normalerweise chat.completion.
createdintegerUnix-Zeitstempel (in Sekunden).
choicesarrayEnthält die Liste der generierten Antworten.
└ messageobjectEnthält role, content sowie mögliche tool_calls.
└ finish_reasonstringStopp-Grund. stop (natürliches Ende), length (max_tokens erreicht), tool_calls (Werkzeugaufruf erforderlich).
usageobjectToken-Verbrauch: prompt_tokens, completion_tokens, total_tokens.

4.2 Antwortbeispiel (Normaler Text)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Das Wetter in Peking ist heute sonnig bei einer Temperatur von 25 Grad Celsius."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

5. FAQs (Häufig gestellte Fragen)

Q1: Was ist Function Calling (Werkzeugaufruf)? A: Dies ist eine Methode, um dem Modell die Fähigkeit zu geben, externe Funktionen aufzurufen. Das Modell führt den Code nicht direkt aus, sondern generiert basierend auf Ihrer Beschreibung ein JSON-Objekt, das den Funktionsnamen und die erforderlichen Parameter enthält. Sie müssen dieses JSON extrahieren, die Funktion lokal oder auf Ihrem Server ausführen und das Ergebnis dann an das Modell zurückgeben.

Q2: Warum habe ich tools eingerichtet, aber das Modell gibt keine tool_calls zurück? A: Dies kann folgende Gründe haben:

  1. Das Modell ist der Ansicht, dass die Frage des Benutzers den Aufruf der Funktion nicht erfordert.
  2. Ihre Funktionsbeschreibung (description) ist nicht klar genug, sodass das Modell die Absicht nicht zuordnen kann.
  3. tool_choice wurde explizit auf none gesetzt.
  4. Einschränkungen der Modellfähigkeiten (Es wird empfohlen, Modelle wie gpt-4o oder gpt-3.5-turbo zu verwenden, die Werkzeugaufrufe priorisiert unterstützen).

Q3: Wie kann ich erzwingen, dass das Modell eine bestimmte Funktion aufruft? A: Sie können tool_choice auf ein bestimmtes Objekt setzen, zum Beispiel: "tool_choice": {"type": "function", "function": {"name": "get_current_weather"}}. Auf diese Weise wird das Modell versuchen, Parameter für diese Funktion zu generieren, auch wenn es dies nicht für notwendig erachtet.

Q4: Was soll ich tun, wenn der finish_reason den Wert length hat? A: Das bedeutet, dass die generierte Antwort das max_tokens-Limit oder das Kontextfenster-Limit des Modells überschritten hat. Sie können versuchen, den Parameter max_tokens zu erhöhen oder die Länge des Nachrichtenverlaufs (messages) zu reduzieren.

Q5: Was ist bei der Verwendung des JSON-Modus (JSON Mode) zu beachten? A: Wenn response_format: { "type": "json_object" } gesetzt ist, müssen Sie in der System- oder User-Nachricht explizit verlangen, dass das Modell den Inhalt im JSON-Format ausgibt (z. B. "Antworte im JSON-Format"). Andernfalls könnte das Modell in eine Endlosschleife geraten und nur Leerzeichen ausgeben.

Q6: Wie gehe ich mit mehreren Werkzeugaufrufen (Multiple Tool Calls) um? A: In einer einzigen Anfrage kann das Modell gleichzeitig mehrere Werkzeugaufrufe generieren (z. B. gleichzeitige Abfrage des Wetters in Peking und Shanghai). Sie müssen über das Array choices[0].message.tool_calls iterieren und für jeden Aufruf die entsprechende lokale Logik ausführen.