Chat completions
POST /v1/chat/completions è l'unico endpoint che fa tutto: domande a turno singolo, conversazioni multi-turno, chiamata di strumenti e input di immagini, in modalità bloccante o in streaming.
Richiesta
POST https://api.artfical.com/v1/chat/completions
Authorization: Bearer tai-sk-...
Content-Type: application/json
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| model | string | Sì | Uno degli ID modello elencati nella pagina Modelli, ad es. "tai-4.1". Un valore non riconosciuto viene rifiutato con un 400 prima che avvenga qualsiasi generazione. |
| messages | array | Sì | La conversazione fin qui, dal messaggio più vecchio al più recente. Vedere Messaggi qui sotto per la forma di ciascuna voce. |
| stream | boolean | No | Il valore predefinito è false. Quando è true, la risposta è uno stream di server-sent events invece di un unico corpo JSON; vedere Streaming. |
| tools | array | No | Definizioni di strumenti/funzioni in formato OpenAI che il modello può scegliere di chiamare. Vedere Chiamata di strumenti. |
| temperature, top_p, presence_penalty, frequency_penalty, seed, stop | vari | No | Controlli di campionamento, inoltrati così come inviati. Vedere Parametri di campionamento per gli intervalli accettati. |
Messaggi
Ogni voce in messages ha un role e un content. Sono riconosciuti quattro ruoli:
| Ruolo | Significato |
|---|---|
| system | Istruzioni di contesto per la conversazione. Se è presente più di un messaggio system, vengono uniti insieme nell'ordine in cui compaiono. Un messaggio system non sovrascrive mai l'identità e le regole di comportamento fondamentali proprie di tAI; si aggiunge al contesto della conversazione, non a ciò che tAI è fondamentalmente. |
| user | Qualcosa che la persona (o la sua applicazione, per suo conto) sta dicendo. |
| assistant | Una risposta precedente del modello. Includa i messaggi assistant precedenti quando invia la cronologia della conversazione, in modo che il modello abbia l'intero scambio, non solo l'ultimo messaggio utente. Un messaggio assistant può anche contenere tool_calls; vedere Chiamata di strumenti. |
| tool | Il risultato di una chiamata a uno strumento eseguita dal suo stesso codice, ricollegata alla chiamata tramite tool_call_id. Vedere Chiamata di strumenti. |
Per un turno di solo testo, content è semplicemente una stringa:
{"role": "user", "content": "İstanbul'da bugün hava nasıl olur sence?"}
Per includere un'immagine insieme al testo, content diventa un array di parti tipizzate invece di una semplice stringa; vedere Immagini per la forma esatta e quali modelli la accettano.
Risposta (non in streaming)
Con "stream": false (il valore predefinito), la risposta è un unico oggetto JSON, restituito al termine della generazione:
{
"id": "chatcmpl-817c002145ac47feb83a0006c58ff43b",
"object": "chat.completion",
"created": 1788961617,
"model": "tai-4.1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Merhaba! Ben tAI, size nasıl yardımcı olabilirim?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1303,
"completion_tokens": 232,
"total_tokens": 1535
}
}
| Campo | Descrizione |
|---|---|
| id | Un identificatore univoco per questo completamento, con prefisso chatcmpl-. |
| choices | Sempre esattamente una voce (indice 0). tAI non supporta la richiesta di più completamenti candidati da un'unica richiesta. |
| choices[].finish_reason | "stop" per una risposta normale e completa, oppure "tool_calls" quando il modello sta chiedendo di chiamare uno o più strumenti invece di rispondere direttamente. Vedere Chiamata di strumenti. |
| usage | Il conteggio dei token per questa richiesta. completion_tokens riflette ciò che il modello ha effettivamente generato, indipendentemente da qualsiasi limite del tipo max_tokens. |
Una conversazione completa
Includa l'intera cronologia in ogni richiesta; l'API è stateless e non conserva da sola alcuna memoria delle chiamate precedenti. Ogni richiesta è a sé stante, con esattamente il contesto che le invia.
{
"model": "tai-4.1",
"messages": [
{"role": "system", "content": "Kısa ve net cevaplar ver."},
{"role": "user", "content": "3 çarpı 4 kaç eder?"},
{"role": "assistant", "content": "12."},
{"role": "user", "content": "Peki onu 2'ye böl."}
]
}
Lunghezza della risposta
Al momento non esiste un limite massimo impostabile dal client sul numero di token che una risposta può contenere; ogni modello ha il proprio limite interno calibrato per quel modello. Se ha bisogno che una richiesta fallisca rapidamente invece di protrarsi a lungo, la leva più affidabile sono le sequenze stop (vedere Parametri di campionamento) oppure semplicemente chiedere brevità direttamente nel prompt.