Erstellen einer Chat-Bilderstellung (Non-Streaming)
Dieser Endpunkt wird verwendet, um einen Prompt (bestehend aus Text oder Bildern) an das Modell zu senden. Das Modell gibt daraufhin eine oder mehrere generierte Antworten zurück. Diese Schnittstelle eignet sich besonders für Modelle, die multimodale Eingaben unterstützen (z. B. Bildbearbeitung, Bildoptimierung, visuelle Kreation), wie etwa gpt-4o-image-vip.
Basisinformationen zur API
- Endpunkt-URL:
https://api.codingplanx.ai/v1/chat/completions - HTTP-Methode:
POST - Content-Type:
application/json - Response-Type:
application/json
Request-Headers (Anfragekopf)
| Parameter | Erforderlich | Typ | Beispielwert | Beschreibung |
|---|---|---|---|---|
| Content-Type | Ja | String | application/json | Format des Request-Bodys |
| Accept | Ja | String | application/json | Erwartetes Response-Format |
| Authorization | Nein | String | Bearer {{YOUR_API_KEY}} | API-Schlüssel zur Authentifizierung |
Request-Body (Anfrage-Parameter)
Der Request-Body ist ein JSON-Objekt und enthält die folgenden Felder:
| Parameter | Typ | Erforderlich | Standardwert | Beschreibung |
|---|---|---|---|---|
| model | String | Ja | - | Die zu verwendende Modell-ID. Beispiel: gpt-4o-image-vip. |
| messages | Array | Ja | - | Liste der Konversationsnachrichten. Jedes Objekt enthält role (user/assistant/system) und content. content kann ein String oder ein Array von Objekten mit Typ und Bild-URL sein. |
| tools | Array | Ja | - | Liste von Tools, die das Modell aufrufen kann. Derzeit werden nur Funktionen (Functions) unterstützt. |
| tool_choice | Object | Ja | none | Steuert, welche Funktion das Modell aufruft. none (kein Aufruf), auto (automatische Auswahl). |
| temperature | Number | Nein | 1 | Sampling-Temperatur (0 bis 2). Höhere Werte bedeuten mehr Zufälligkeit, niedrigere Werte führen zu fokussierteren und deterministischeren Antworten. |
| top_p | Number | Nein | 1 | Nucleus-Sampling. Berücksichtigt nur die Tokens mit der höchsten Wahrscheinlichkeitsmasse (Top P). Es wird empfohlen, entweder dies oder temperature anzupassen, nicht beides. |
| n | Integer | Nein | 1 | Anzahl der zu generierenden Chat-Completion-Auswahlen (Choices) für jeden Input. |
| stream | Boolean | Nein | false | Ob die Antwort als Datenstrom (Stream) gesendet werden soll. Diese Schnittstelle ist aktuell als Non-Streaming definiert. |
| max_tokens | Integer | Nein | inf | Maximale Anzahl der zu generierenden Tokens. |
| stop | String/Array | Nein | null | Stopp-Sequenz. Die API stoppt die Generierung weiterer Tokens. |
| presence_penalty | Number | Nein | 0 | Wert zwischen -2.0 und 2.0. Bestraft bereits verwendete Tokens und erhöht die Wahrscheinlichkeit, dass das Modell über neue Themen spricht. |
| frequency_penalty | Number | Nein | 0 | Wert zwischen -2.0 und 2.0. Bestraft Tokens basierend auf ihrer bisherigen Häufigkeit im generierten Text. |
| response_format | Object | Nein | - | Legt das Ausgabeformat fest, z. B. { "type": "json_object" } aktiviert den JSON-Modus. |
| user | String | Nein | - | Eindeutige Kennung des Endnutzers, wird zur Überwachung von Missbrauch verwendet. |
| seen | Integer | Nein | - | (Beta) Spezifiziert einen Seed-Wert, um ein deterministisches Sampling so gut wie möglich zu gewährleisten. |
Response-Parameter (Antwort)
| Parameter | Typ | Beschreibung |
|---|---|---|
| id | String | Eindeutige Kennung für diese Anfrage. |
| object | String | Objekttyp, immer chat.completion. |
| created | Integer | Unix-Zeitstempel (in Sekunden). |
| choices | Array | Enthält die generierten Antwortoptionen. |
| └ index | Integer | Index der jeweiligen Option. |
| └ message | Object | Nachrichtenobjekt, das role und content enthält. |
| └ finish_reason | String | Grund für den Abbruch (z. B. stop, length). |
| usage | Object | Token-Nutzungsstatistik. |
| └ prompt_tokens | Integer | Verwendete Tokens für den Prompt. |
| └ completion_tokens | Integer | Verwendete Tokens für die Completion (Generierung). |
| └ total_tokens | Integer | Gesamtanzahl der verbrauchten Tokens. |
Beispiele
Request-Beispiel (Bildoptimierung/-kreation)
{
"model": "gpt-4o-image-vip",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Bitte optimiere dieses Bild und füge den Text '我爱中国' (Ich liebe China) hinzu. Seitenverhältnis [4:3] "},
{
"type": "image_url",
"image_url": {
"url": "https://lsky.zhongzhuan.chat/i/2024/10/17/6711068a14527.png"
}
}
]
}
],
"tools": [],
"tool_choice": "none"
}
Response-Beispiel
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "In Ordnung, das Bild wurde für Sie bearbeitet. Sie können das generierte Ergebnis hier ansehen: [Bildlink/Beschreibung]"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
FAQs (Häufig gestellte Fragen)
F: Warum erhalte ich einen Fehler, wenn ich response_format: { "type": "json_object" } verwende?
A: Wenn Sie den JSON-Modus verwenden, müssen Sie das Modell in den messages explizit anweisen, JSON zu generieren (z. B. indem Sie den System-Prompt um "Bitte antworte im JSON-Format" ergänzen). Andernfalls kann das Modell in eine Endlosschleife geraten oder einen Fehler ausgeben, da es versucht, Nicht-JSON-Inhalte zu generieren.
F: Wie stelle ich sicher, dass die bei jeder Anfrage generierten Ergebnisse konsistent bleiben?
A: Obwohl KI-Modelle einer gewissen Zufälligkeit unterliegen, können Sie versuchen, den Parameter seen (Seed) festzulegen und temperature auf 0 zu setzen. Achten Sie gleichzeitig auf das Feld system_fingerprint in der Response, um zu überwachen, ob sich die Backend-Umgebung geändert hat.
F: Welcher Wert ist für max_tokens angemessen?
A: Das hängt von Ihrem jeweiligen Anwendungsfall ab. Für kurze Bildbeschreibungen reichen 100-300 Tokens; für detaillierte Analysen oder lange Textkreationen empfehlen wir einen Wert über 1000. Bitte beachten Sie, dass die Summe der Input-Tokens (einschließlich Bilder) und Output-Tokens das Kontextlimit des jeweiligen Modells nicht überschreiten darf.
F: Wie verarbeite ich Bildeingaben?
A: Verwenden Sie im content der messages den Typ type: "image_url". Derzeit wird empfohlen, öffentlich zugängliche HTTPS-Bildlinks zu verwenden.
F: Sind tools und tool_choice zwingend erforderlich?
A: Gemäß der Definition dieser Schnittstelle sind diese beiden Felder als erforderlich markiert. Wenn Sie kein bestimmtes Tool aufrufen müssen, setzen Sie tools auf ein leeres Array [] und tool_choice auf "none".