API Chat Completions
POST /v1/chat/completions — l'endpoint in formato OpenAI, per Cursor, LangChain, LiteLLM e gli SDK OpenAI.
L'interfaccia compatibile con OpenAI. Stessi modelli, stessi prezzi, struttura diversa.
Endpoint
POST https://aiprimetech.io/v1/chat/completionsURL di base per gli SDK
https://aiprimetech.io/v1 — nota il suffisso /v1Autenticazione
Authorization: Bearer sk-...Corpo della richiesta
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
model | stringa | sì | Qualsiasi ID presente in /v1/models, inclusi gli ID Claude |
messages | array | sì | Supporta i ruoli system, user e assistant |
max_tokens | intero | no | Facoltativo qui, a differenza della Messages API |
temperature | numero | no | 0–2 secondo la convenzione OpenAI |
stream | booleano | no | true per i blocchi SSE |
tools | array | no | Struttura delle chiamate di funzione OpenAI |
A differenza di Messages,
system è un ruolo qui: inseriscilo come prima voce di messages. Non inviare un campo di primo livello system a questo endpoint.Esempio
curl https://aiprimetech.io/v1/chat/completions \
-H "Authorization: Bearer $CLAUDEAPIKEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Hello"}]
}'
Risposta
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "claude-sonnet-4-6",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 9, "completion_tokens": 12, "total_tokens": 21}
}
Uso dell'SDK OpenAI
from openai import OpenAI
client = OpenAI(
api_key=class="s">"sk-your-key",
base_url=class="s">"https://aiprimetech.io/v1", class=class="s">"c"># the /v1 matters
)
resp = client.chat.completions.create(
model=class="s">"claude-sonnet-4-6",
messages=[{class="s">"role": class="s">"user", class="s">"content": class="s">"Hello"}],
)
print(resp.choices[0].message.content)
Corrispondenza dei campi tra i due formati
| Concetto | Messages | Chat Completions |
|---|---|---|
| Prompt di sistema | di primo livello system | messages[0] con ruolo system |
| Testo della risposta | content[0].text | choices[0].message.content |
| Motivo dell'interruzione | stop_reason | finish_reason |
| Token di input | usage.input_tokens | usage.prompt_tokens |
| Token di output | usage.output_tokens | usage.completion_tokens |
| Delta dello streaming | content_block_delta | choices[0].delta.content |