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.
- Officiële referentie: Handleiding voor functieaanroepen
Basisinformatie
- Verzoekmethode:
POST - Verzoek-URL:
https://api.codingplanx.ai/v1/chat/completions - Gegevensformaat:
application/json
Verzoekheaders (Headers)
| Parameternaam | Type | Verplicht | Voorbeeldwaarde | Beschrijving |
|---|---|---|---|---|
Content-Type | string | Ja | application/json | Type van de inhoud |
Accept | string | Ja | application/json | Type gegevens dat de client accepteert |
Authorization | string | Nee | Bearer {{YOUR_API_KEY}} | Authenticatiegegevens |
Verzoekbody (Body)
| Parameternaam | Type | Verplicht | Beschrijving |
|---|---|---|---|
model | string | Ja | De ID van het model dat moet worden gebruikt (bijvoorbeeld gpt-4o). Raadpleeg voor beschikbare modellen de compatibiliteitstabel van de model-endpoints. |
messages | array | Ja | De lijst met berichten die tot nu toe in het gesprek voorkomen. Elk object moet de velden role en content bevatten. |
tools | array | Ja | Een 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_choice | object/string | Ja | Bepaalt 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"}}. |
temperature | number | Nee | Samplingtemperatuur, 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_p | number | Nee | Nucleus 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. |
n | integer | Nee | Hoeveel chat-completionkeuzes per invoerbericht moeten worden gegenereerd. Standaard is dit 1. |
stream | boolean | Nee | Standaard false. Indien ingesteld op true, worden gedeeltelijke bericht-incrementen verzonden via Server-Sent Events (SSE) en eindigt de stream bij data: [DONE]. |
stop | string/array | Nee | Maximaal 4 sequenties waarbij de API stopt met het verder genereren van tokens zodra een van deze wordt aangetroffen. Standaard is null. |
max_tokens | integer | Nee | Het 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_penalty | number | Nee | Een 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_penalty | number | Nee | Een 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_bias | object | Nee | Past de kans aan dat opgegeven tokens in de completion verschijnen. Verwacht een JSON-object dat token-ID's koppelt aan biaswaarden (-100 tot 100). |
user | string | Nee | Een unieke identificatie van uw eindgebruiker, wat kan helpen bij monitoring en detectie van misbruik. |
response_format | object | Nee | Een object dat het formaat specificeert waarin het model moet antwoorden. Gebruik bijvoorbeeld { "type": "json_object" } om JSON-modus in te schakelen. |
seen | integer | Nee | Experimentele 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)
| Parameternaam | Type | Beschrijving |
|---|---|---|
id | string | De unieke identificatie van de chat-completion. |
object | string | Het objecttype, meestal chat.completion. |
created | integer | Unix-tijdstempel van het moment waarop de chat-completion is aangemaakt. |
choices | array | Lijst met chat-completionkeuzes. |
? index | integer | De index van deze keuze in de keuzelijst. |
? message | object | Het door het model gegenereerde antwoordbericht, met de velden role en content. |
? finish_reason | string | De reden waarom het model is gestopt met het genereren van tokens (zoals stop, length of een geactiveerde functieaanroep). |
usage | object | Statistieken over het tokenverbruik van dit verzoek. |
? prompt_tokens | integer | Het aantal tokens dat door de prompt (invoer) is verbruikt. |
? completion_tokens | integer | Het aantal tokens dat door het modelantwoord is verbruikt. |
? total_tokens | integer | Het 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.