Conversation à plusieurs tours
Chat Completions est une interface sans état : le modèle ne mémorise pas la requête précédente. Le principe de la conversation à plusieurs tours est le suivant — à chaque requête, on transmet l’intégralité des messages historiques.
Utilisation de base
messages = [ {"role": "system", "content": "你是一个简洁的中文助手。"}, {"role": "user", "content": "什么是向量数据库?"},]r1 = client.chat.completions.create(model="gpt-5.5", messages=messages)messages.append({"role": "assistant", "content": r1.choices[0].message.content})
messages.append({"role": "user", "content": "它和 Elasticsearch 有什么区别?"})r2 = client.chat.completions.create(model="gpt-5.5", messages=messages)Lors du deuxième tour, le modèle peut comprendre à quoi renvoie « il », car tout l’historique complet se trouve dans messages.
Gestion du contexte
Plus l’historique est long, plus le nombre de tokens d’entrée est élevé, plus le coût augmente, et il peut également dépasser la limite de contexte du modèle. Stratégies courantes :
| Stratégie | Méthode | Cas d’usage |
|---|---|---|
| Fenêtre glissante | Ne conserver que les N derniers tours + system | Service client, conversation informelle |
| Compression par résumé | Résumer l’historique ancien avec un modèle moins coûteux | Assistant de longue conversation |
| Recherche augmentée | Stocker l’historique dans une base vectorielle et récupérer à la demande les passages pertinents | Applications à base de connaissances |
Points d’attention
- Il est recommandé de toujours conserver le message
systemen première position, et d’utiliserla facturation en cache pour réduire les coûts répétés ; - Lors de la troncature de l’historique, supprimez par « tour » (paire user+assistant), sans couper au milieu ;
- Lors d’un changement de modèle multiplateforme (par exemple de GPT vers Claude), le format de l’historique n’a pas besoin d’être modifié ; il suffit de remplacer
model.