Tutorial de compactación de API de respuestas de OCI
Utilice el SDK de Python OpenAI con la API de respuestas de OCI para compactar el historial de conversaciones de forma explícita o automática y, a continuación, continuar la conversación con el contexto devuelto.
Descripción general
A medida que crece la conversación, una aplicación envía más historial con cada solicitud. La compactación reduce ese historial a una representación más pequeña que el modelo puede utilizar en turnos posteriores. Utilícelo para gestionar el contexto en conversaciones de larga ejecución y flujos de trabajo de agente.
En este tutorial, se describe una configuración de despliegue ficticia, se compacta la conversación y se hace una pregunta de seguimiento para comprobar qué detalles conserva el modelo.
Utiliza el SDK de Python OpenAI con una clave de API de OCI Generative AI y un punto final de OCI regional. El SDK proporciona la interfaz de cliente. Las solicitudes se autentican con OCI y se envían a OCI Generative AI.
Todos los modelos soportados por la API de respuestas de OCI, incluidos los modelos importados, soportan la compactación tanto explícita como automática. La compactación está disponible en regiones de IA empresarial y sigue la región de cada modelo y la disponibilidad de alojamiento. Ambos modos son compatibles para la inferencia bajo demanda y el alojamiento dedicado.
| Modo | Operación | Qué enviar a continuación |
|---|---|---|
| Explícito (independiente) | Llame a client.responses.compact(...), que envía POST /responses/compact, cuando una aplicación está lista para compactar el historial. |
Transfiera la matriz output devuelta completa, seguida del siguiente mensaje de usuario. |
| Automático (gestionado por el servidor) | Llame a client.responses.create(...) con context_management y un umbral de token. OCI compacta el contexto durante POST /responses cuando se alcanza el umbral. |
Con store=False, transfiera el último elemento de compactación y todos los siguientes elementos de salida, seguidos del siguiente mensaje de usuario. Si no se devuelve ningún elemento de compactación, conserve el historial existente y agregue la nueva salida. |
Los elementos de compactación contienen un contexto cifrado opaco. Conservar sus campos serializados y su orden. No lea, edite ni sustituya su contenido por un resumen de texto.
La compactación consume tokens de modelo y puede perder detalles durante el resumen. Compacta antes de alcanzar el límite de contexto del modelo, deja espacio para la respuesta y giros posteriores. La compactación explícita es síncrona y no soporta almacenamiento, ejecución en segundo plano ni transmisión.
Los ejemplos gestionan el historial en la aplicación y definen store=False en las solicitudes de creación de respuesta. Para el flujo de trabajo independiente que utiliza el estado de conversación gestionado por OCI, consulte Uso de la memoria del agente con la API de respuestas.
Antes de empezar
Para completar este tutorial, necesita:
- Acceso a la API de respuestas de OCI en una región de IA empresarial soportada. Seleccione un modelo de Modelos y regiones soportados que esté disponible para su arrendamiento en la región seleccionada. Para obtener modelos básicos, consulte Modelos por región para conocer la disponibilidad de alojamiento dedicado y bajo demanda.
- Una clave de API de OCI Generative AI con acceso al modelo y proyecto seleccionados. Si es necesario, cree una clave de API y agregue sus permisos.
- OCID de proyecto de OCI Generative AI. La compactación requiere contexto de proyecto para cada modelo. Si es necesario, cree un proyecto.
- Python 3.10 o posterior en macOS, Linux o el subsistema Windows para Linux. Los comandos utilizan un shell compatible con Bash.
En los ejemplos se utiliza el SDK de Python OpenAI con credenciales de OCI y una URL base de OCI. No necesitan una clave de API OpenAI, el SDK de Python de OCI ni la CLI de OCI.
En estos ejemplos se utiliza la autenticación de clave de API de OCI Generative AI. Compaction también soporta la autenticación de OCI IAM. Para esa configuración, consulte Autenticación basada en IAM de IA generativa. Se necesita un OCID de proyecto de OCI Generative AI con cualquiera de los métodos de autenticación.
1. Preparación del entorno de Python y el acceso a OCI
2. Compacta una conversación de forma explícita
En este ejemplo se crea una respuesta, se agrega la salida de respuesta completa al historial y se llama a responses.compact. A continuación, sustituye el historial por la salida compactada completa y pregunta sobre la ventana de mantenimiento y retención de copias de seguridad del despliegue.
La breve conversación hace que la secuencia sea fácil de seguir. En una aplicación, llame a la compactación cuando el historial acumulado deba reducirse y aún así se ajuste al límite de contexto del modelo.
3. Activar compactación automática
Para la compactación automática, incluya context_management en una solicitud de creación de respuesta con type: "compaction" y un compact_threshold explícito de al menos tokens 1000. Seleccione un umbral que sea menor que el límite de contexto del modelo y deje espacio para la salida y giros posteriores.
En este ejemplo, se crean 40 intercambios de estado sintéticos localmente para crear un historial más largo. Envía ese historial en una solicitud con un umbral de 1.000 tokens, comprueba la compactación y envía una solicitud de seguimiento. Los 40 intercambios no realizan llamadas de API separadas.
4. Uso de un modelo alojado en un cluster de IA dedicado (opcional)
Puede utilizar modelos que admitan la API de respuestas de OCI para la inferencia a demanda o alojarlos en clusters de IA dedicados, según las opciones de alojamiento de cada modelo. Ambos modos de compactación funcionan con cualquiera de las opciones de alojamiento. En los ejemplos anteriores se utiliza un ID de modelo bajo demanda. Cuando aloja un modelo en un cluster de IA dedicado, crea un punto final de modelo en ese cluster para llamar al modelo. Transfiera el OCID de ese punto final como valor model de la solicitud.
El cluster de alojamiento proporciona los recursos informáticos para la inferencia. Puede crear varios puntos finales para el mismo modelo alojado, por ejemplo, para proporcionar a diferentes aplicaciones, equipos o centros de costos sus propios puntos de acceso. Cada punto final tiene su propio OCID y los puntos finales comparten los recursos informáticos del cluster. Para obtener más información, consulte Gestión de puntos finales de modelo.
Comprobar los resultados
Un elemento de compactación devuelto confirma que se ha producido la compactación. No establece que todos los detalles se hayan conservado. Revise la respuesta de seguimiento con respecto a la configuración original.
Para evaluar la compactación de una aplicación, utilice conversaciones representativas con hechos e instrucciones que sean importantes para el flujo de trabajo. Compare la misma pregunta de seguimiento con la historia completa, con la compactación explícita y con la compactación automática. Compruebe los hechos retenidos, las instrucciones siguientes, el formato de salida y cualquier herramienta que llame al flujo de trabajo.
Ejecute varios ejemplos y ajuste el umbral de compactación según lo que observe. La compactación en sí misma utiliza tokens de modelo, por lo que un contexto más pequeño no garantiza un uso de token menos total ni respuestas más rápidas para cada solicitud.
Solución de problemas
| Síntoma | Qué comprobar |
|---|---|
| Un script informa que falta una variable de entorno. | Defina OCI_BASE_URL, OCI_MODEL y OCI_OPENAI_PROJECT en el shell en el que ejecuta el script. |
401 o 403 | Confirme que está utilizando una clave de API de OCI Generative AI y el punto final regional de OCI correcto. Compruebe la validez de la clave, los permisos del proyecto y el acceso al punto final de modelo o inferencia. |
404 para /responses/compact | Confirme que la URL base termina en /openai/v1. Compruebe que el ID de modelo o el OCID de punto final de inferencia son correctos y están disponibles en la región seleccionada. |
| Una solicitud informa que falta contexto de proyecto. | Defina OCI_OPENAI_PROJECT en el OCID del proyecto de OCI Generative AI y transfiéralo a través de project= al crear el cliente SDK. El contexto del proyecto es necesario para cada modelo. |
| La compactación automática no devuelve un elemento de compactación. | Confirme que la solicitud incluye context_management con type: "compaction" y un umbral de al menos tokens 1000. Utilice un historial más largo o reduzca un umbral mayor mientras lo mantiene en o más de 1.000. |
El SDK no tiene ningún método responses.compact. | Active el entorno virtual e instale openai>=2.45.0. Compruebe la versión instalada con python -m pip show openai. |
| Una respuesta de seguimiento pierde los detalles esperados. | Para la compactación explícita, transfiera la matriz output devuelta completa. Para la compactación automática, mantenga el último elemento de compactación y todos los elementos de salida posteriores. Si no se devuelve ningún elemento de compactación, conserve el historial existente y la nueva salida. La compactación puede perder detalles, por lo que también puede evaluar el modelo y el umbral con conversaciones representativas. |
Siguientes pasos
- Revise Gestionar contexto con compactación para conocer el comportamiento y los límites de la API.
- Obtén más información sobre el historial de conversaciones gestionadas por OCI.
- Consulte la guía de compactación OpenAI para obtener la interfaz de SDK compatible. Utilice los requisitos específicos de OCI de este tutorial para solicitudes de OCI.