API-Dokumentation: Erstellen eines Chat-Funktionsaufrufs
Schnittstellenbeschreibung
Basierend auf einem Prompt gibt das Modell eine oder mehrere vorhergesagte Vervollständigungen (Completions) zurück und kann optional die Wahrscheinlichkeiten alternativer Tokens an jeder Position liefern. Dieser Endpunkt unterstützt insbesondere die Funktion Function Calling (Funktionsaufruf), die es dem Modell ermöglicht, intelligent zwischen der Generierung einer Textnachricht und dem Aufruf einer bestimmten Funktion zu wählen.
- Offizielle Referenz: Function Calling Guide
Basisinformationen
- Anfragemethode:
POST - Anfrage-URL:
https://api.codingplanx.ai/v1/chat/completions - Datenformat:
application/json
Anfrage-Header (Headers)
| Parameter | Typ | Erforderlich | Beispielwert | Beschreibung |
|---|---|---|---|---|
Content-Type | string | Ja | application/json | Datentyp des Inhalts |
Accept | string | Ja | application/json | Vom Client akzeptierter Datentyp |
Authorization | string | Nein | Bearer {{YOUR_API_KEY}} | Authentifizierungs-Token |
Anfrage-Body (Body)
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
model | string | Ja | Die ID des zu verwendenden Modells (z. B. gpt-4o). Details zu den verfügbaren Modellen finden Sie in der Tabelle zur Modellkompatibilität. |
messages | array | Ja | Eine Liste der bisherigen Nachrichten in der Konversation. Jedes Objekt muss die Felder role und content enthalten. |
tools | array | Ja | Eine Liste von Tools, die das Modell aufrufen kann. Derzeit werden nur Funktionen als Tools unterstützt. Dient zur Bereitstellung einer Liste von Funktionen, für die das Modell JSON-Eingaben generieren kann. |
tool_choice | object/string | Ja | Steuert, welche Funktion vom Modell aufgerufen wird (falls vorhanden). none bedeutet, dass keine aufgerufen wird; auto lässt das Modell wählen. Ein spezifischer Funktionsaufruf kann durch {"type": "function", "function": {"name": "my_function"}} erzwungen werden. |
temperature | number | Nein | Sampling-Temperatur zwischen 0 und 2. Höhere Werte (z. B. 0.8) machen die Ausgabe zufälliger, niedrigere Werte (z. B. 0.2) deterministischer. Es wird empfohlen, nicht diese Einstellung und top_p gleichzeitig zu ändern. |
top_p | number | Nein | Nucleus-Sampling. 0.1 bedeutet, dass nur die Tokens berücksichtigt werden, die die obersten 10 % der Wahrscheinlichkeitsmasse ausmachen. Es wird empfohlen, nicht diese Einstellung und temperature gleichzeitig zu ändern. |
n | integer | Nein | Wie viele Chat-Vervollständigungsoptionen für jede Eingabenachricht generiert werden sollen. Standard ist 1. |
stream | boolean | Nein | Standard ist false. Wenn auf true gesetzt, werden partielle Nachrichten-Deltas als Server-Sent Events (SSE) gesendet und mit data: [DONE] beendet. |
stop | string/array | Nein | Bis zu 4 Sequenzen, bei denen die API die Generierung weiterer Tokens stoppt. Standard ist null. |
max_tokens | integer | Nein | Die maximale Anzahl von Tokens, die in der Chat-Vervollständigung generiert werden sollen. Die Gesamtlänge aus Eingabe und Generierung ist durch die Kontextlänge des Modells begrenzt. |
presence_penalty | number | Nein | Zahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend darauf, ob sie bereits im Text vorkommen, was die Wahrscheinlichkeit erhöht, dass das Modell über neue Themen spricht. |
frequency_penalty | number | Nein | Zahl zwischen -2.0 und 2.0. Positive Werte bestrafen neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text, was die Wahrscheinlichkeit verringert, dass das Modell dieselben Inhalte wiederholt. |
logit_bias | object | Nein | Ändert die Wahrscheinlichkeit, dass bestimmte Tokens in der Vervollständigung erscheinen. Akzeptiert ein JSON-Objekt, das Token-IDs auf Bias-Werte (-100 bis 100) abbildet. |
user | string | Nein | Eine eindeutige Kennung für Ihren Endbenutzer, die bei der Überwachung und Erkennung von Missbrauch helfen kann. |
response_format | object | Nein | Ein Objekt, das das Format angibt, das das Modell ausgeben muss. Beispiel: {"type": "json_object"} aktiviert den JSON-Modus. |
seen | integer | Nein | Beta-Funktion. Wenn angegeben, wird das System versuchen, deterministisch zu sampeln, sodass Anfragen mit demselben Seed und denselben Parametern das gleiche Ergebnis liefern. |
Beispiel für einen Anfrage-Body
{
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a helpful customer support assistant. Use the supplied tools to assist the user."
},
{
"role": "user",
"content": "Hi, can you tell me the delivery date for my order?"
},
{"role": "assistant", "content": "Hi there! I can help with that. Can you please provide your order ID?"},
{"role": "user", "content": "i think it is order_12345"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_delivery_date",
"description": "Get the delivery date for a customer's order. Call this whenever you need to know the delivery date, for example when a customer asks 'Where is my package'",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "The customer's order ID."
}
},
"required": [
"order_id"
],
"additionalProperties": false
}
}
}
]
}
Antwortparameter (Response)
| Parameter | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Kennung für die Chat-Vervollständigung. |
object | string | Objekttyp, normalerweise chat.completion. |
created | integer | Unix-Zeitstempel der Erstellung der Chat-Vervollständigung. |
choices | array | Liste der Optionen für die Chat-Vervollständigung. |
? index | integer | Der Index dieser Option in der Liste. |
? message | object | Das vom Modell generierte Antwortnachrichten-Objekt, das role und content enthält. |
? finish_reason | string | Der Grund, warum das Modell die Generierung von Tokens gestoppt hat (z. B. stop, length oder der Aufruf einer Funktion). |
usage | object | Statistiken zum Token-Verbrauch für diese Anfrage. |
? prompt_tokens | integer | Anzahl der vom Prompt (Eingabe) verbrauchten Tokens. |
? completion_tokens | integer | Anzahl der von der generierten Antwort verbrauchten Tokens. |
? total_tokens | integer | Gesamtzahl der für diese Anfrage verbrauchten Tokens. |
Antwortbeispiel (200 OK)
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "\r
\r
Hello there, how may I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
Häufig gestellte Fragen (FAQs)
F1: Wie zwinge ich das Modell, eine bestimmte von mir angegebene Funktion aufzurufen?
A: Dies können Sie durch Festlegen des Parameters tool_choice erreichen. Wenn Ihre Funktion beispielsweise get_weather heißt, können Sie tool_choice auf {"type": "function", "function": {"name": "get_weather"}} setzen. Auf diese Weise ignoriert das Modell reguläre Antworten und wird gezwungen, die Parameter für diese Funktion auszugeben.
F2: Warum wurde der Inhalt meiner Antwort abgeschnitten?
A: Bitte überprüfen Sie den Wert von choices[0].finish_reason in der Antwort. Wenn er "length" lautet, bedeutet dies, dass der generierte Text das von Ihnen festgelegte Limit des Parameters max_tokens überschritten hat oder die maximale Kontextlänge des Modells erreicht wurde. Sie können versuchen, den Wert von max_tokens zu erhöhen.
F3: Sowohl temperature als auch top_p steuern die Zufälligkeit. Wie sollte ich sie verwenden?
A: Beide Parameter passen die Vielfalt der Modellausgabe an. Höhere Werte machen die Ausgabe kreativer, während niedrigere Werte sie strenger und deterministischer machen. Offiziell wird empfohlen, nur einen der beiden Parameter anzupassen und den anderen auf dem Standardwert zu belassen. Ändern Sie nicht beide gleichzeitig, um unvorhersehbare Ergebnisse zu vermeiden.
F4: Wie sieht das Datenformat der API-Antwort aus, wenn stream: true aktiviert ist?
A: Nach der Aktivierung des Streamings gibt die API kein einzelnes JSON-Objekt mehr zurück, sondern einen Server-Sent Events (SSE)-Datenstrom. Die Daten werden stückweise in der Form data: {"id": "...", "choices": [{"delta": {"content": "..."}}]} gesendet. Wenn die Übertragung abgeschlossen ist, lautet die letzte Nachricht data: [DONE].
F5: Was muss beachtet werden, wenn response_format als JSON-Modus aktiviert wird?
A: Wenn Sie response_format auf { "type": "json_object" } setzen, müssen Sie dem Modell in den messages (System-Prompt oder Benutzer-Prompt) explizit anweisen, Daten im JSON-Format zu generieren. Andernfalls könnte das Modell in eine Endlosschleife geraten, in der es Leerzeichen generiert, was zu Zeitüberschreitungen bei der Anfrage führt oder das Token-Limit erreicht.