Conclusões de chat
POST /v1/chat/completions é o único endpoint que faz tudo: perguntas de um único turno, conversas com vários turnos, chamada de ferramentas e entrada de imagens, bloqueante ou em streaming.
Pedido
POST https://api.artfical.com/v1/chat/completions
Authorization: Bearer tai-sk-...
Content-Type: application/json
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| model | string | Sim | Um dos IDs de modelo listados na página Modelos, por exemplo "tai-4.1". Um valor não reconhecido é rejeitado com um 400 antes de qualquer geração acontecer. |
| messages | array | Sim | A conversa até ao momento, da mais antiga para a mais recente. Consulte Mensagens abaixo para o formato de cada entrada. |
| stream | boolean | Não | Por defeito é false. Quando true, a resposta é um stream de eventos enviados pelo servidor em vez de um único corpo JSON; consulte Streaming. |
| tools | array | Não | Definições de ferramentas de função no formato da OpenAI que o modelo pode optar por chamar. Consulte Chamada de ferramentas. |
| temperature, top_p, presence_penalty, frequency_penalty, seed, stop | vários | Não | Controlos de amostragem, encaminhados tal como enviados. Consulte Parâmetros de amostragem para os intervalos aceites. |
Mensagens
Cada entrada em messages tem um role e um content. São reconhecidas quatro funções (roles):
| Função | Significado |
|---|---|
| system | Instruções de contexto para a conversa. Se estiver presente mais do que uma mensagem system, são combinadas em conjunto pela ordem em que aparecem. Uma mensagem system nunca substitui a identidade e as regras de comportamento fundamentais da própria tAI; acrescenta-se ao contexto da conversa, não ao que a tAI fundamentalmente é. |
| user | Algo que a pessoa (ou a sua aplicação, em nome dela) está a dizer. |
| assistant | Uma resposta anterior do modelo. Inclua mensagens assistant anteriores ao enviar o histórico da conversa, para que o modelo tenha a troca completa, não apenas a última mensagem do utilizador. Uma mensagem assistant também pode transportar tool_calls; consulte Chamada de ferramentas. |
| tool | O resultado de uma chamada de ferramenta que o seu próprio código executou, associada de volta à chamada através de tool_call_id. Consulte Chamada de ferramentas. |
Para um turno de texto simples, content é apenas uma string:
{"role": "user", "content": "İstanbul'da bugün hava nasıl olur sence?"}
Para incluir uma imagem junto com texto, content passa a ser um array de partes tipadas em vez de uma string simples; consulte Imagens para o formato exato e quais os modelos que o aceitam.
Resposta (sem streaming)
Com "stream": false (o valor por defeito), a resposta é um único objeto JSON, devolvido assim que a geração termina:
{
"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 | Descrição |
|---|---|
| id | Um identificador único para esta conclusão, com o prefixo chatcmpl-. |
| choices | Sempre exatamente uma entrada (índice 0). A tAI não suporta pedir múltiplas conclusões candidatas a partir de um único pedido. |
| choices[].finish_reason | "stop" para uma resposta normal e completa, ou "tool_calls" quando o modelo está a pedir para chamar uma ou mais ferramentas em vez de responder diretamente. Consulte Chamada de ferramentas. |
| usage | Contagens de tokens para este pedido. completion_tokens reflete o que o modelo efetivamente gerou, independentemente de qualquer limite do tipo max_tokens. |
Uma conversa completa
Inclua todo o histórico em cada pedido; a API não guarda estado e não tem memória de chamadas anteriores por si própria. Cada pedido é independente, com exatamente o contexto que lhe enviar.
{
"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."}
]
}
Comprimento da resposta
Atualmente não existe um limite configurável pelo cliente para quantos tokens uma resposta pode conter; cada modelo tem o seu próprio limite interno, ajustado para esse modelo. Se precisar que um pedido falhe rapidamente em vez de se prolongar, a forma mais fiável é usar sequências stop (consulte Parâmetros de amostragem) ou simplesmente pedir brevidade na própria instrução.