Chat-API zur Bilderkennung erstellen (Streaming/Non-Streaming)
Diese API (Schnittstelle) unterstützt multimodale Eingaben und ermöglicht es Benutzern, innerhalb einer Konversation sowohl Text als auch Bild-URLs zu senden. Das Modell generiert entsprechende Antworten basierend auf den eingegebenen Prompts und Bildinhalten. Sie unterstützt Streaming-Ausgaben, um ein flüssigeres interaktives Erlebnis zu bieten.
- API-Endpunkt:
https://api.codingplanx.ai/v1/chat/completions - HTTP-Methode:
POST - Offizielle Referenz: OpenAI Chat Completion API
Anfrage-Parameter
Header-Parameter
| Parameter | Erforderlich | Datentyp | Beispielwert | Beschreibung |
|---|---|---|---|---|
| Content-Type | Ja | string | application/json | Format des Anfragekörpers |
| Accept | Ja | string | application/json | Format der Antwort |
| Authorization | Nein | string | Bearer {{YOUR_API_KEY}} | API-Schlüssel zur Authentifizierung |
Body-Parameter
| Parameter | Datentyp | Erforderlich | Standardwert | Beschreibung |
|---|---|---|---|---|
| model | string | Ja | - | Die verwendete Modell-ID (z. B. gpt-4o, gpt-4-vision-preview). |
| messages | array | Ja | - | Liste der bisherigen Nachrichten in der Konversation. Details siehe Struktur messages unten. |
| stream | boolean | Nein | false | Ob die Streaming-Ausgabe aktiviert werden soll. Bei Aktivierung werden Server-Sent Events (SSE) gesendet. |
| temperature | number | Nein | 1 | Sampling-Temperatur (0-2). Höhere Werte bedeuten mehr Zufälligkeit, niedrigere Werte mehr Determinismus. |
| top_p | number | Nein | 1 | Nucleus-Sampling-Wahrscheinlichkeit. Es wird empfohlen, entweder dies oder temperature anzupassen, jedoch nicht beides. |
| max_tokens | integer | Nein | inf | Die maximale Anzahl von Tokens, die in der Chat-Antwort generiert werden. |
| n | integer | Nein | 1 | Anzahl der Antwort-Alternativen, die für jede Eingabenachricht generiert werden sollen. |
| presence_penalty | number | Nein | 0 | (-2.0 bis 2.0) Positive Werte erhöhen die Wahrscheinlichkeit, dass das Modell über neue Themen spricht. |
| frequency_penalty | number | Nein | 0 | (-2.0 bis 2.0) Positive Werte verringern die Wahrscheinlichkeit, dass das Modell dieselben Wörter wiederholt. |
| response_format | object | Nein | - | Legt das Ausgabeformat fest, z. B. {"type": "json_object"}. |
| stop | string/array | Nein | null | Sequenzen (bis zu 4), bei denen die Token-Generierung gestoppt wird. |
| user | string | Nein | - | Eindeutige Kennung des Endbenutzers, dient zur Überwachung von Missbrauch. |
Struktur des messages-Objekts
Jedes Element in der Nachrichtenliste enthält die folgenden Felder:
role: (string) Rolle, mögliche Werte sindsystem,user,assistant,tool.content: (string oder array) Nachrichteninhalt.- Im Bilderkennungsmodus ist
contentein Array, das Objekte der Typentextundimage_urlenthält.
- Im Bilderkennungsmodus ist
Anfrage-Beispiel
Gemischte Anfrage mit Text und Bild (JSON)
{
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "Du bist ein professioneller Assistent für Bildanalyse."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Was ist auf diesem Bild zu sehen? Bitte beschreibe es im Detail."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png"
}
}
]
}
],
"stream": true
}
Antwort-Spezifikationen
Non-Streaming Antwort (stream: false)
| Parameter | Datentyp | Beschreibung |
|---|---|---|
| id | string | Eindeutige Kennung für diese Anfrage. |
| object | string | Objekttyp, normalerweise chat.completion. |
| created | integer | Zeitstempel der Erstellung (in Sekunden). |
| choices | array | Liste der vom Modell generierten Auswahlmöglichkeiten. |
| choices[n].message | object | Das vom Modell zurückgegebene Nachrichtenobjekt (enthält role und content). |
| choices[n].finish_reason | string | Grund für das Beenden (z. B. stop, length). |
| usage | object | Statistik zur Token-Nutzung. |
Antwort-Beispiel
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Dieses Bild zeigt einen ruhigen See mit einer Bergkette im Hintergrund."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 120,
"completion_tokens": 35,
"total_tokens": 155
}
}
Streaming-Antwort (stream: true)
Wenn stream auf true gesetzt ist, gibt die API text/event-stream zurück. Jede Zeile beginnt mit data: , gefolgt von einem JSON-String. Die letzte Nachricht lautet data: [DONE].
FAQs (Häufig gestellte Fragen)
F1: Wie lade ich Bilder direkt hoch, anstatt eine URL zu verwenden?
A: Diese API unterstützt hauptsächlich Bild-URLs. Wenn Sie nur ein lokales Bild haben, wird empfohlen, dieses zunächst auf Ihren Bild-Host oder Object Storage (OSS) hochzuladen oder das Bild in einen Base64-codierten String im Format data:image/jpeg;base64,{base64_encode_data} umzuwandeln und diesen in das Feld url einzufügen.
F2: Warum enthält meine Streaming-Anfrage keine usage-Statistiken (Token-Verbrauch)?
A: Im standardmäßigen OpenAI-kompatiblen Streaming-Protokoll wird usage normalerweise nur im letzten Datenblock oder durch das Setzen des speziellen Parameters stream_options zurückgegeben. Bitte überprüfen Sie, ob Ihre Modellversion die Rückgabe von Token-Zählungen im Stream unterstützt.
F3: Welche Einschränkungen gibt es bei Bildgröße und -format für die Bilderkennung?
A: Allgemein unterstützt werden die Formate PNG, JPEG, WEBP und GIF (keine animierten GIFs). Es wird empfohlen, dass die Dateigröße 20 MB nicht überschreitet. Für optimale Erkennungsergebnisse empfehlen wir eine Mindestauflösung von 512x512 Pixeln.
F4: Was soll ich tun, wenn meine Anfrage den Fehler "401 Unauthorized" zurückgibt?
A: Stellen Sie sicher, dass Sie das Feld Authorization im Header korrekt übergeben haben. Das Format muss Bearer gefolgt von Ihrem API-KEY sein. Überprüfen Sie zudem, ob der KEY gültig ist und das Konto über ausreichendes Guthaben verfügt.
F5: Hat der Parameter temperature Auswirkungen auf die Bilderkennung?
A: Ja. temperature beeinflusst die sprachliche Kreativität des Modells bei der Beschreibung von Bildern. Wenn Sie eine sehr objektive und präzise Bildbeschreibung benötigen, empfehlen wir einen niedrigen Wert (z. B. 0.2); wenn Sie eine lebendigere und unterhaltsamere Beschreibung wünschen, können Sie einen höheren Wert wählen (z. B. 0.8).
F6: Wie verarbeite ich die Erkennung mehrerer Bilder auf einmal?
A: Sie können dem Array messages.content einfach mehrere Objekte vom Typ image_url hinzufügen. Das Modell wird versuchen, die Inhalte all dieser Bilder gemeinsam zu analysieren und zu verstehen.