Nodig vrienden uit en verdien gratis tokens!Meer weten

API-interface-documentatie: chatfunctieaanroepen aanmaken

Beschrijving van de interface

Gegeven een prompt retourneert het model een of meer voorspelde completions en kan het ook de waarschijnlijkheden van alternatieve tokens per positie teruggeven. Deze interface ondersteunt in het bijzonder functieaanroepen (Function Calling), waardoor het model intelligent kan kiezen tussen het genereren van berichten en het aanroepen van opgegeven functies.

Basisinformatie

  • Verzoekmethode: POST
  • Verzoek-URL: https://api.codingplanx.ai/v1/chat/completions
  • Gegevensformaat: application/json

Verzoekheaders (Headers)

ParameternaamTypeVerplichtVoorbeeldwaardeBeschrijving
Content-TypestringJaapplication/jsonType van de inhoud
AcceptstringJaapplication/jsonType gegevens dat de client accepteert
AuthorizationstringNeeBearer {{YOUR_API_KEY}}Authenticatiegegevens

Verzoekbody (Body)

ParameternaamTypeVerplichtBeschrijving
modelstringJaDe ID van het model dat moet worden gebruikt (bijvoorbeeld gpt-4o). Raadpleeg voor beschikbare modellen de compatibiliteitstabel van de model-endpoints.
messagesarrayJaDe lijst met berichten die tot nu toe in het gesprek voorkomen. Elk object moet de velden role en content bevatten.
toolsarrayJaEen lijst met tools die het model kan aanroepen. Momenteel worden alleen functies als tool ondersteund. Hiermee kan het model JSON-invoer genereren voor opgegeven functies.
tool_choiceobject/stringJaBepaalt welke functie het model aanroept, als die er is. none betekent niet aanroepen; auto betekent dat het model zelf kiest. U kunt ook een specifieke functie afdwingen via {"type": "function", "function": {"name": "my_function"}}.
temperaturenumberNeeSamplingtemperatuur, tussen 0 en 2. Hogere waarden (zoals 0.8) maken de uitvoer willekeuriger, lagere waarden (zoals 0.2) maken die deterministischer. Het wordt aanbevolen om deze parameter niet tegelijk met top_p aan te passen.
top_pnumberNeeNucleus sampling. 0.1 betekent dat alleen tokens worden overwogen die samen de bovenste 10% van de kansmassa vormen. Het wordt aanbevolen om deze parameter niet tegelijk met temperature aan te passen.
nintegerNeeHoeveel chat-completionkeuzes per invoerbericht moeten worden gegenereerd. Standaard is dit 1.
streambooleanNeeStandaard false. Indien ingesteld op true, worden gedeeltelijke bericht-incrementen verzonden via Server-Sent Events (SSE) en eindigt de stream bij data: [DONE].
stopstring/arrayNeeMaximaal 4 sequenties waarbij de API stopt met het verder genereren van tokens zodra een van deze wordt aangetroffen. Standaard is null.
max_tokensintegerNeeHet maximale aantal tokens dat in de chat-completion mag worden gegenereerd. De totale lengte van invoer en uitvoer wordt beperkt door de contextlengte van het model.
presence_penaltynumberNeeEen getal tussen -2.0 en 2.0. Positieve waarden bestraffen nieuwe tokens op basis van of ze al in de tekst zijn verschenen, wat de kans vergroot dat het model nieuwe onderwerpen aansnijdt.
frequency_penaltynumberNeeEen getal tussen -2.0 en 2.0. Positieve waarden bestraffen nieuwe tokens op basis van hun huidige frequentie in de tekst, waardoor herhaling afneemt.
logit_biasobjectNeePast de kans aan dat opgegeven tokens in de completion verschijnen. Verwacht een JSON-object dat token-ID's koppelt aan biaswaarden (-100 tot 100).
userstringNeeEen unieke identificatie van uw eindgebruiker, wat kan helpen bij monitoring en detectie van misbruik.
response_formatobjectNeeEen object dat het formaat specificeert waarin het model moet antwoorden. Gebruik bijvoorbeeld { "type": "json_object" } om JSON-modus in te schakelen.
seenintegerNeeExperimentele functie. Indien opgegeven probeert het systeem deterministisch te samplen, zodat verzoeken met dezelfde seed en parameters hetzelfde resultaat teruggeven.

Voorbeeld van de verzoekbody

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "system",
            "content": "Je bent een behulpzame klantenservice-assistent. Gebruik de meegeleverde tools om de gebruiker te helpen."
        },
        {
            "role": "user",
            "content": "Hoi, kun je me de leverdatum van mijn bestelling vertellen?"
        },
        {"role": "assistant", "content": "Hoi! Ik kan je daarmee helpen. Kun je alsjeblieft je bestel-ID doorgeven?"},
        {"role": "user", "content": "ik denk dat het order_12345 is"}
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_delivery_date",
                "description": "Haal de leverdatum van de bestelling van een klant op. Roep deze functie aan wanneer je de leverdatum moet weten, bijvoorbeeld als een klant vraagt: 'Waar is mijn pakket?'",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "order_id": {
                            "type": "string",
                            "description": "De bestel-ID van de klant."
                        }
                    },
                    "required": [
                        "order_id"
                    ],
                    "additionalProperties": false
                }
            }
        }
    ]
}

Responsparameters (Response)

ParameternaamTypeBeschrijving
idstringDe unieke identificatie van de chat-completion.
objectstringHet objecttype, meestal chat.completion.
createdintegerUnix-tijdstempel van het moment waarop de chat-completion is aangemaakt.
choicesarrayLijst met chat-completionkeuzes.
? indexintegerDe index van deze keuze in de keuzelijst.
? messageobjectHet door het model gegenereerde antwoordbericht, met de velden role en content.
? finish_reasonstringDe reden waarom het model is gestopt met het genereren van tokens (zoals stop, length of een geactiveerde functieaanroep).
usageobjectStatistieken over het tokenverbruik van dit verzoek.
? prompt_tokensintegerHet aantal tokens dat door de prompt (invoer) is verbruikt.
? completion_tokensintegerHet aantal tokens dat door het modelantwoord is verbruikt.
? total_tokensintegerHet totale aantal tokens dat in dit verzoek is verbruikt.

Responsvoorbeeld (200 OK)

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

Veelgestelde vragen (FAQs)

Q1: Hoe dwing ik het model om een specifieke functie aan te roepen?
A: U kunt dit instellen via de parameter tool_choice. Als uw functienaam bijvoorbeeld get_weather is, kunt u tool_choice instellen op: {"type": "function", "function": {"name": "get_weather"}}. Het model zal dan een normale tekstreactie negeren en verplicht de parameters voor die functie genereren.

Q2: Waarom is mijn antwoord afgekapt?
A: Controleer de waarde van choices[0].finish_reason in de respons. Als deze "length" is, betekent dit dat de gegenereerde tekst de limiet van uw parameter max_tokens heeft overschreden, of dat de maximale contextlengte van het model is bereikt. U kunt proberen de waarde van max_tokens te verhogen.

Q3: Zowel temperature als top_p kunnen de willekeurigheid regelen. Hoe moet ik die gebruiken?
A: Deze twee parameters kunnen inderdaad allebei de diversiteit van de uitvoer beïnvloeden. Hogere waarden maken de uitvoer creatiever, terwijl lagere waarden die zorgvuldiger en deterministischer maken. Officieel wordt aanbevolen om slechts één van beide aan te passen en de andere op de standaardwaarde te laten, zodat onverwacht gedrag wordt voorkomen.

Q4: Welk gegevensformaat retourneert de interface wanneer stream: true is ingeschakeld?
A: Wanneer streaming is ingeschakeld, retourneert de interface niet langer één JSON-object, maar een Server-Sent Events (SSE)-datastroom. De gegevens worden in blokken verzonden in de vorm van data: {"id": "...", "choices": [{"delta": {"content": "..."}}]}. Wanneer de overdracht is voltooid, is het laatste bericht data: [DONE].

Q5: Waar moet ik op letten bij het inschakelen van response_format in JSON-modus?
A: Wanneer u response_format instelt op { "type": "json_object" }, moet u ook expliciet in messages (systeemprompt of gebruikersprompt) aangeven dat het model JSON-formaat moet genereren. Als u dit niet doet, kan het model in een lus terechtkomen waarin alleen witruimte wordt gegenereerd, wat kan leiden tot time-outs of het bereiken van de tokenlimiet.