Chat Completions
Créez des réponses de complétion de chat. Prend en charge la génération de texte, l’entrée multimodale, l’appel de fonctions, la réponse en streaming et plus encore.
Pour les nouveaux projets, nous recommandons la Responses API. La Responses API sépare instructions et input : les instructions système bénéficient automatiquement du Prompt Caching, avec un meilleur taux de succès du cache et des coûts et latences nettement réduits. Chat Completions reste pris en charge à long terme ; les intégrations existantes n’ont pas besoin de migrer.
Endpoint
POST https://api.ofox.io/v1/chat/completionsParamètres de requête
Format de Message
interface Message {
role: 'system' | 'user' | 'assistant' | 'tool'
content: string | ContentPart[] // Texte ou contenu multimodal
name?: string
tool_calls?: ToolCall[] // Appels d'outils du message assistant
tool_call_id?: string // ID d'appel du message tool
}
// Contenu multimodal
type ContentPart =
| { type: 'text'; text: string }
| { type: 'image_url'; image_url: { url: string; detail?: 'auto' | 'low' | 'high' } }Exemple de requête
cURL
curl https://api.ofox.io/v1/chat/completions \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6.1-sol",
"messages": [
{"role": "system", "content": "Vous êtes un assistant utile."},
{"role": "user", "content": "Expliquez ce qu'est un API Gateway"}
],
"temperature": 0.7
}'Format de réponse
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1703123456,
"model": "openai/gpt-6.1-sol",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Un API Gateway est un..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175
}
}Réponse en streaming
Activez la réponse en streaming SSE avec stream: true :
Python
stream = client.chat.completions.create(
model="openai/gpt-6.1-sol",
messages=[{"role": "user", "content": "Racontez-moi une histoire"}],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)Format de réponse en streaming
Chaque chunk est envoyé via SSE :
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Bonjour"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" monde"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]Entrée multimodale (vision)
Envoyez des images pour que le modèle les analyse :
response = client.chat.completions.create(
model="openai/gpt-6.1-sol",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Qu'y a-t-il dans cette image ?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}]
)Les modèles avec capacité de vision incluent : openai/gpt-6.1-sol, anthropic/claude-sonnet-5.5, google/gemini-3.8-flash, entre autres.
Consultez le guide de compréhension visuelle.
Function Calling
Consultez le guide d’appel de fonctions.