Tutoriel de compactage d'API pour les réponses OCI
Utilisez la trousse SDK Python OpenAI avec l'API pour les réponses OCI pour compacter l'historique de conversation explicitement ou automatiquement, puis poursuivez la conversation avec le contexte retourné.
Aperçu
À mesure qu'une conversation se développe, une application envoie plus d'historique à chaque demande. Le compactage réduit cet historique à une représentation plus petite que le modèle peut utiliser lors de tours ultérieurs. Utilisez-le pour gérer le contexte dans des conversations de longue durée et des flux de travail d'agent.
Dans ce tutoriel, vous apprendrez à décrire une configuration fictive de déploiement, à compacter la conversation et à poser une question de suivi pour vérifier les détails du modèle conservé.
Vous utilisez la trousse SDK Python OpenAI avec une clé d'API du service d'intelligence artificielle générative pour OCI et un point d'extrémité OCI régional. La trousse SDK fournit l'interface client. Les demandes s'authentifient auprès d'OCI et sont envoyées au service d'intelligence artificielle générative pour OCI.
Tous les modèles pris en charge par l'API de réponses OCI, y compris les modèles importés, prennent en charge le compactage explicite et automatique. Le compactage est disponible dans les régions d'IA de l'entreprise et suit la région de chaque modèle et la disponibilité de l'hébergement. Les deux modes sont pris en charge pour l'inférence à la demande et l'hébergement dédié.
| Mode | Opération | Que faire pour envoyer ensuite |
|---|---|---|
| Explicite (autonome) | Appelez client.responses.compact(...), qui envoie POST /responses/compact, lorsqu'une application est prête à compacter l'historique. |
Transmettez le tableau output complet retourné, suivi du message d'utilisateur suivant. |
| Automatique (géré par le serveur) | Appelez client.responses.create(...) avec context_management et un seuil de jeton. OCI compacte le contexte pendant POST /responses lorsque le seuil est atteint. |
Avec store=False, transmettez le dernier élément de compactage et tous les éléments de sortie suivants, suivis du message d'utilisateur suivant. Si aucun élément de compactage n'est retourné, conservez l'historique existant et ajoutez la nouvelle sortie. |
Les éléments de compactage contiennent un contexte opaque chiffré. Conservez leurs champs sérialisés et leur ordre. Ne lisez pas, ne modifiez pas ou ne remplacez pas leur contenu par un sommaire de texte.
Le compactage consomme les jetons de modèle et peut perdre des détails lors de la récapitulation. Compacte avant d'atteindre la limite de contexte du modèle, laisse de la place pour la réponse et tourne plus tard. Le compactage explicite est synchrone et ne prend pas en charge le stockage, l'exécution en arrière-plan ou la diffusion en continu.
Les exemples gèrent l'historique dans l'application et définissent store=False sur les demandes de création de réponse. Pour le flux de travail distinct qui utilise l'état de conversation géré par OCI, voir Utiliser la mémoire de l'agent avec l'API de réponses.
Avant de commencer
Pour terminer ce tutoriel, vous devez :
- Accès à l'API des réponses OCI dans une région du service d'intelligence artificielle d'entreprise prise en charge. Sélectionnez un modèle dans Modèles et régions pris en charge disponible pour votre location dans la région sélectionnée. Pour les modèles fondamentaux, consultez Modèles par région pour connaître la disponibilité de l'hébergement sur demande et dédié.
- Une clé d'API du service d'intelligence artificielle générative pour OCI avec accès au modèle et au projet sélectionnés. Si nécessaire, créez une clé d'API et ajoutez ses autorisations.
- OCID d'un projet du service d'intelligence artificielle générative pour OCI. Le compactage nécessite un contexte de projet pour chaque modèle. Si nécessaire, créez un projet.
- Python 3.10 ou version ultérieure sur macOS, Linux ou Windows Subsystem pour Linux. Les commandes utilisent un interpréteur de commandes compatible Bash.
Les exemples utilisent la trousse SDK Python OpenAI avec des données d'identification OCI et une URL de base OCI. Ils ne nécessitent pas de clé d'API OpenAI, de trousse SDK Python pour OCI ou d'interface de ligne de commande OCI.
Ces exemples utilisent l'authentification par clé d'API du service d'intelligence artificielle générative pour OCI. Le compact prend également en charge l'authentification OCI IAM. Pour cette configuration, voir Authentification basée sur IAM du service d'intelligence artificielle générative. Un OCID de projet du service d'intelligence artificielle générative pour OCI est requis avec l'une ou l'autre méthode d'authentification.
1. Préparer l'environnement Python et l'accès à OCI
2. Compacter explicitement une conversation
Cet exemple crée une réponse, ajoute la sortie de réponse complète à l'historique et appelle responses.compact. Il remplace ensuite l'historique par la sortie compacte complète et pose des questions sur la fenêtre de conservation et de maintenance des sauvegardes du déploiement.
La courte conversation rend la séquence facile à suivre. Dans une application, appelez le compactage lorsque l'historique cumulé doit être réduit et qu'il correspond toujours à la limite de contexte du modèle.
3. Activer le compactage automatique
Pour le compactage automatique, incluez context_management dans une demande de création de réponse avec type: "compaction" et un compact_threshold explicite d'au moins 1000 jetons. Sélectionnez un seuil inférieur à la limite de contexte du modèle et laissez de la place pour la sortie et les rotations ultérieures.
Cet exemple crée 40 échanges de statuts synthétiques localement pour construire une histoire plus longue. Il envoie cet historique en une seule demande avec un seuil de 1 000 jetons, vérifie le compactage et envoie une demande de suivi. Les 40 échanges ne font pas d'appels d'API distincts.
4. Utiliser un modèle hébergé sur une grappe dédiée à l'IA (facultatif)
Vous pouvez utiliser des modèles qui prennent en charge l'API de réponses OCI pour l'inférence sur demande ou les héberger sur des grappes d'IA dédiées, selon les options d'hébergement de chaque modèle. Les deux modes de compactage fonctionnent avec l'une ou l'autre des options d'hébergement. Les exemples précédents utilisent un code de modèle sur demande. Lorsque vous hébergez un modèle sur une grappe dédiée à l'IA, vous créez un point d'extrémité de modèle sur cette grappe pour appeler le modèle. Transmettez l'OCID de ce point d'extrémité en tant que valeur model de la demande.
La grappe d'hébergement fournit les ressources de calcul pour l'inférence. Vous pouvez créer plusieurs points d'extrémité pour le même modèle hébergé, par exemple, pour donner à différentes applications, équipes ou centres de coûts leurs propres points d'accès. Chaque point d'extrémité a son propre OCID et les points d'extrémité partagent les ressources de calcul de la grappe. Pour plus d'informations, voir Gestion des points d'extrémité de modèle.
Vérifiez les résultats
Un élément de compactage retourné confirme que le compactage s'est produit. Il n'est pas établi que chaque détail a été préservé. Vérifiez la réponse de suivi par rapport à la configuration initiale.
Pour évaluer le compactage d'une application, utilisez des conversations représentatives avec des faits et des instructions importants pour le flux de travail. Comparez la même question de suivi à l'historique complet, au compactage explicite et au compactage automatique. Vérifiez les faits conservés, les instructions suivantes, le format de sortie et tout appel d'outil requis par le flux de travail.
Exécutez plusieurs exemples et ajustez le seuil de compactage en fonction de ce que vous observez. Le compactage lui-même utilise des jetons de modèle, de sorte qu'un contexte plus petit ne garantit pas une utilisation totale moindre des jetons ou des réponses plus rapides pour chaque demande.
Dépannage
| Symptôme | Que vérifier |
|---|---|
| Un script signale une variable d'environnement manquante. | Définissez OCI_BASE_URL, OCI_MODEL et OCI_OPENAI_PROJECT dans l'interpréteur de commandes où vous exécutez le script. |
401 ou 403 | Confirmez que vous utilisez une clé d'API du service d'intelligence artificielle générative pour OCI et le point d'extrémité OCI régional approprié. Vérifiez la validité de la clé, les autorisations de projet et l'accès au modèle ou au point d'extrémité d'inférence. |
404 pour /responses/compact | Vérifiez que l'URL de base se termine par /openai/v1. Vérifiez que l'ID modèle ou l'OCID du point d'extrémité d'inférence est correct et disponible dans la région sélectionnée. |
| Une demande signale un contexte de projet manquant. | Réglez OCI_OPENAI_PROJECT à l'OCID du projet d'intelligence artificielle générative pour OCI et transmettez-le au moyen de project= lors de la création du client de trousse SDK. Le contexte du projet est requis pour chaque modèle. |
| Le compactage automatique ne retourne pas d'élément de compactage. | Confirmez que la demande inclut context_management avec type: "compaction" et un seuil d'au moins 1000 jetons. Utilisez un historique plus long ou réduisez un seuil plus élevé tout en le maintenant à plus de 1 000. |
La trousse SDK n'a pas de méthode responses.compact. | Activez l'environnement virtuel et installez openai>=2.45.0. Vérifiez la version installée avec python -m pip show openai. |
| Une réponse de suivi perd les détails attendus. | Pour un compactage explicite, transmettez le tableau output retourné complet. Pour le compactage automatique, conservez le dernier élément de compactage et tous les éléments de sortie ultérieurs. Si aucun élément de compactage n'est retourné, conservez l'historique existant et la nouvelle sortie. Le compactage peut perdre des détails, alors évaluez le modèle et le seuil avec des conversations représentatives. |
Étapes suivantes
- Consultez Gérer le contexte avec compactage pour connaître le comportement et les limites de l'API.
- En savoir plus sur l'historique de conversation gérée par OCI.
- Voir le guide de compactage OpenAI pour obtenir l'interface de trousse SDK compatible. Utilisez les exigences propres à OCI dans ce tutoriel pour les demandes OCI.