La Responses API d'OpenAI
La Responses API est la nouvelle API d'OpenAI conçue pour les applications agentiques. Elle combine la simplicité de l'API Chat Completions avec les outils intégrés (web search, file search, code interpreter) qui étaient auparavant réservés à l'Assistants API, le tout sans gestion de threads côté serveur.
Différences avec Chat Completions
| Aspect | Chat Completions | Responses API |
|---|---|---|
| État | Stateless | Stateless (mais avec state optionnel) |
| Outils intégrés | Non | Oui (web search, file search, etc.) |
| Multi-tour | Manuel | Automatique via previous_response_id |
| Structured Outputs | Via functions | Natif avec output schema |
Utilisation de base
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-4o",
input: "Quelle est la population de Paris en 2024 ?",
tools: [{ type: "web_search_preview" }]
});
console.log(response.output_text);Outils intégrés
Web Search Recherche sur le web en temps réel : __CODE_BLOCK_1__
File Search Recherche dans vos documents uploadés : __CODE_BLOCK_2__
Code Interpreter Exécution de code Python pour l'analyse de données : __CODE_BLOCK_3__
Function Calling Appel de vos propres fonctions : __CODE_BLOCK_4__
Conversations multi-tours
La Responses API gère les conversations via previous_response_id :
const first = await client.responses.create({
model: "gpt-4o",
input: "Je travaille sur une app Next.js."
});
const second = await client.responses.create({
model: "gpt-4o",
input: "Comment ajouter l'authentification ?",
previous_response_id: first.id
});
// Le contexte de la première réponse est automatiquement inclusStructured Outputs natifs
const response = await client.responses.create({
model: "gpt-4o",
input: "Extrais les informations de ce contact : Jean Dupont, jean@example.com, Acme Corp",
text: {
format: {
type: "json_schema",
name: "contact",
schema: {
type: "object",
properties: {
name: { type: "string" },
email: { type: "string" },
company: { type: "string" }
},
required: ["name", "email", "company"]
}
}
}
});Migration depuis Chat Completions
La migration est progressive :
1. Remplacez chat.completions.create par responses.create
2. Changez messages par input (string ou tableau)
3. Ajoutez les outils intégrés dont vous avez besoin
4. Utilisez previous_response_id pour les conversations
Bonnes pratiques
- Commencez simple : Utilisez d'abord un seul outil, puis combinez
- Streaming : Supporté nativement pour une UX réactive
- Coût : Les outils intégrés (web search notamment) ajoutent des tokens
- Monitoring : Utilisez les metadata pour tracer les requêtes en production