Nodig vrienden uit en verdien gratis tokens!Meer weten

Chatcompletie met beeldherkenning aanmaken (streaming) best64

API-beschrijving:
Gegeven een prompt retourneert dit model een of meer voorspelde completions, en kan het ook de waarschijnlijkheden van alternatieve tokens per positie teruggeven. Deze API wordt voornamelijk gebruikt om chatcompleties te maken die beeldherkenning (op basis van Base64) en tekstprompts combineren.

Officiële referentie: OpenAI API-documentatie


API-details

  • HTTP-methode: POST
  • Endpoint: https://api.codingplanx.ai/v1/chat/completions
  • Gegevensformaat: application/json

Request Headers

ParameternaamVerplichtTypeVoorbeeldwaardeBeschrijving
Content-TypeJastringapplication/jsonGegevensformaat
AcceptJastringapplication/jsonVerwacht responsformaat
AuthorizationNeestringBearer {{YOUR_API_KEY}}Authenticatietoken

Request Body

VeldnaamTypeVerplichtBeschrijving
modelstringJaDe ID van het model dat gebruikt moet worden (bijv. gpt-4o-mini).
messagesarrayJaDe lijst met berichten in het gesprek tot nu toe. Bevat role en content. Voor beeldherkenning kan content een array zijn met tekst en image_url (Base64).
toolsarrayJaEen lijst met tools die het model kan aanroepen. Momenteel worden alleen functies als tools ondersteund. Wordt gebruikt om functies te definiëren waarvoor het model JSON-invoer kan genereren.
tool_choiceobjectJaBepaalt welke functie het model mag aanroepen. none betekent geen aanroep; auto betekent automatisch kiezen; u kunt ook een specifieke functie afdwingen.
temperatureintegerNeeSamplingtemperatuur, tussen 0 en 2. Hogere waarden (zoals 0.8) maken de output willekeuriger; lagere waarden (zoals 0.2) maken die deterministischer. Het wordt afgeraden dit tegelijk met top_p aan te passen.
top_pintegerNeeParameter voor nucleus sampling. 0.1 betekent dat alleen tokens worden overwogen die samen de bovenste 10% waarschijnlijkheidsmassa vormen. Het wordt afgeraden dit tegelijk met temperature aan te passen.
nintegerNeeHoeveel chatcompleties per invoerbericht moeten worden gegenereerd. Standaard is 1.
streambooleanNeeSchakelaar voor streaming output. Standaard is false. Als dit op true staat, worden gedeeltelijke berichtincrementen verzonden via Server-Sent Events (SSE), en eindigt de stream met data: [DONE].
stopstringNeeEen sequentie waarbij de API stopt met verder genereren van tokens (maximaal 4). Standaard is null.
max_tokensintegerNeeHet maximale aantal tokens dat in de chatcompletie wordt gegenereerd. Standaard is inf (onbeperkt).
presence_penaltynumberNeePresence penalty (-2.0 tot 2.0). Positieve waarden bestraffen tokens op basis van of ze al in de tekst zijn verschenen, waardoor het model eerder nieuwe onderwerpen aansnijdt.
frequency_penaltynumberNeeFrequency penalty (-2.0 tot 2.0). Positieve waarden bestraffen tokens op basis van hoe vaak ze al zijn voorgekomen, waardoor herhaling afneemt. Standaard is 0.
logit_biasobjectNeePast de kans aan dat opgegeven tokens in de completion verschijnen. Accepteert een JSON-object dat token-ID's koppelt aan biaswaarden (-100 tot 100).
userstringNeeEen unieke identificatie van uw eindgebruiker, om misbruik te monitoren en detecteren.
response_formatobjectNeeGeeft het formaat aan waarin het model moet antwoorden. Door { "type": "json_object" } mee te sturen wordt de JSON-modus ingeschakeld. Gebruik hierbij een prompt die het model expliciet vraagt om JSON te produceren.
seenintegerNeeBètafunctie. Deterministische sampling-seed; het herhalen van een request met dezelfde seed en parameters zou hetzelfde resultaat moeten geven (absolute determinisme wordt niet gegarandeerd).

Request-voorbeeld

{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "Je bent een behulpzame assistent."
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Wat staat er op deze afbeelding? Beschrijf het alstublieft gedetailleerd."
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiEAAAIhCAYAAACYF2qHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOy9ebxtWVXf+x1zrrX2Pud2VRQUjUVf0glIYvOJLdJ8iCagIor... (de te lange base64-string is hier ingekort)"
          }
        }
      ]
    }
  ]
}

Response Body

VeldnaamTypeBeschrijving
idstringDe unieke identifier van de chatcompletie.
objectstringHet objecttype, meestal chat.completion (of in streamingmodus chat.completion.chunk).
createdintegerUnix-timestamp van het aanmaakmoment.
choicesarrayLijst met completion-keuzes.
└─ indexintegerDe index van de keuze in de lijst.
└─ messageobjectHet door het model gegenereerde berichtobject, met role en content.
└─ finish_reasonstringDe reden waarom het model is gestopt met genereren (bijvoorbeeld stop voor normaal einde, length voor het bereiken van de max_tokens-limiet).
usageobjectStatistieken over het tokenverbruik van dit request.
└─ prompt_tokensintegerHet aantal tokens dat door de prompt is verbruikt (inclusief tokens die uit de afbeelding zijn berekend).
└─ completion_tokensintegerHet aantal tokens dat door de gegenereerde inhoud is verbruikt.
└─ total_tokensintegerHet totale aantal tokens dat door dit request is verbruikt.

Response-voorbeeld (succesvol 200 OK)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hallo, hoe kan ik u vandaag helpen?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

Veelgestelde vragen (FAQ)

V1: Hoe schakel ik streaming output in?
A: Zet de parameter stream in de request body op true. Zodra streaming is ingeschakeld, wacht de API niet meer tot het volledige antwoord klaar is, maar stuurt deze gedeeltelijke resultaten terug via Server-Sent Events (SSE) in het formaat data: {...}, totdat het eindmarkeerpunt data: [DONE] wordt ontvangen.

V2: Aan welke eisen moet de Base64-codering voor beeldherkenning voldoen?
A: De Base64-string van de afbeelding moet de juiste MIME-typeprefix bevatten, zoals data:image/png;base64, of data:image/jpeg;base64,. Het wordt aanbevolen om afbeeldingen vóór conversie naar Base64 passend te comprimeren of te verkleinen om netwerkvertraging te beperken en het verbruik van prompt_tokens te verminderen (te grote afbeeldingen kunnen veel tokens kosten of zelfs de contextlimiet overschrijden).

V3: Waarom is het antwoord van het model afgekapt?
A: Controleer de waarde van choices[0].finish_reason in de response. Als deze length is, betekent dit dat de gegenereerde tekst de door u ingestelde limiet van max_tokens heeft bereikt, of dat het totale gesprek de maximale contextwindow van het model heeft overschreden. U kunt dit oplossen door max_tokens te verhogen.

V4: Hoe dwing ik het model om JSON-formaat te retourneren?
A: Stel eerst in de request body "response_format": { "type": "json_object" } in. Belangrijke opmerking: naast het instellen van deze parameter moet u in de systeemprompt (system) of gebruikersprompt ook expliciet in natuurlijke taal aangeven dat het model JSON moet retourneren (bijvoorbeeld: "Geef het resultaat in JSON-formaat terug"). Doet u dit niet, dan kan het model in een eindeloze lege generatie terechtkomen totdat alle tokens opgebruikt zijn.

V5: Wat moet ik doen als ik een 401 Unauthorized-fout krijg?
A: Controleer of de Authorization-header correct de API Key bevat. Het formaat moet exact Bearer uw_API_KEY zijn (let op: er staat één spatie tussen Bearer en de sleutel).