Manejadores de transformación de LLM
Cada proveedor tiene su propio formato para las cargas útiles de solicitud, respuesta y error. Debido a esto, el proveedor de LLM y Oracle Digital Assistant no se pueden comunicar directamente, por lo que para facilitar el intercambio entre la aptitud y sus proveedores de LLM, debe transformar estas cargas útiles en la interfaz común de LLM de Oracle Digital Assistant y volver de nuevo.
transformRequestPayload
, transformResponsePayload
y transformErrorResponsePayload
ejecutan las transformaciones de carga útil. Estos métodos de transformación tienen dos firmas:
event
: las propiedades utilizadas para este objeto dependen del tipo de evento (transformRequestPayload
,transformResponsePayload
,transformErrorResponsePayload
).context
: hace referencia a la claseLlmTransformationContext
, que proporciona acceso a los métodos de comodidad que puede utilizar para crear la lógica del manejador de eventos.
Creación de un manejador de transformación de LLM
- Haga clic en Componentes en la barra de navegación izquierda.
- Haga clic en Servicio +New.
- Complete el cuadro de diálogo Crear servicio:
- Nombre: introduzca el nombre del servicio.
- Tipo de servicio: contenedor embebido
- Tipo de paquete de servicios de componente: Nuevo componente
- Tipo de componente: transformación de LM
- Nombre de componente: introduzca un nombre fácilmente identificable para el manejador de eventos de entidad. Hará referencia a este nombre al crear el servicio de LLM para la aptitud.
- Plantilla: proporcionamos plantillas para las aptitudes que llaman a Cohere directamente o mediante el servicio de IA generativa de Oracle. No es necesario que edite estas plantillas. Si la aptitud llama a un modelo de IA generativa que no sea Cohere/Oracle, como Azure Open AI, deberá agregar el código adecuado.
Las plantillas para Oracle Generative AI Cohere (generación y resumen de texto) y Llama (resumen de texto) se ordenan en Generative AI en el menú de lista Template (Plantilla). La plantilla para acceder a Cohere directamente se encuentra en Otros. Para acceder a la plantilla que contiene el código de inicio para otros modelos, seleccione Personalizado (que también se encuentra en Otro).
- Haga clic en Crear para generar el código de manejador de eventos.
- Una vez completado el despliegue, amplíe el servicio y, a continuación, seleccione el manejador de transformación para abrir su página de propiedades, que muestra los tres métodos de transformación de LLM provider-CLMI (
transformRequestPayload
,transformResponsePayload
ytransformErrorResponsePayload
).Si está creando un servicio Cohere o un servicio de IA generativa de Oracle alojado en el mismo arrendamiento que su instancia de Digital Assistant, el código de manejador está completo.
- Si está creando un servicio de IA generativa de Oracle alojado en un arrendamiento de OCI diferente, haga clic en Editar para abrir el cuadro de diálogo Editar componente y sustituir la variable
event.compartmentId
por el ID de compartimento del arrendamiento de OCI en el que está suscrito el servicio de IA generativa. - Si utiliza la plantilla personalizada, haga clic en Editar para abrir el cuadro de diálogo Editar componente y, a continuación, actualice el siguiente código de marcador de posición con el código específico del proveedor:
Método Ubicación en el editor (plantilla personalizada) Código de marcador de posición (plantilla personalizada) transformRequestPayload
Líneas 23-25 transformRequestPayload: async (event, context) => { return event.payload; },
transformResponsePayload
Líneas 33-35 transformResponsePayload: async (event, context) => { return event.payload; },
transformErrorResponsePayload
Líneas 44-46 transformErrorResponsePayload: async (event, context) => { return event.payload; }
- Verifique el sytnax de las actualizaciones haciendo clic en Validar. Corrija los errores de validación (si los hay) y, a continuación, haga clic en Guardar. A continuación, haga clic en Cerrar.
Ejemplos de código de transformación de proveedor de LLM
Azure OpenAI
Método | Código de transformación de manejador de eventos |
---|---|
Solicitud |
|
Respuesta (no de transmisión) | Cuando el flujo está activado, se llama al manejador de eventos de transformación de respuesta en lotes de 20 mensajes de flujo. Esta matriz por lotes de respuestas de flujo se almacena en la clave responseItems .
|
Error |
|
Servicio de IA generativa de Oracle - Cohere
Los modelos de comandos se han retirado. Le recomendamos que migre al punto final
/chat
, que implica declarar un modelo de chat más reciente y sustituir los parámetros específicos del comando por parámetros específicos del chat.
Método | Código de manejador de eventos |
---|---|
Solicitud |
|
Respuesta |
|
Error |
|
IA Generativa de Oracle - Llama
Los modelos de comandos se han retirado. Recomendamos que migre al punto final
/chat
, lo que implica declarar el modelo de chat y sustituir los parámetros específicos del comando por parámetros específicos del chat.
Método | Código de manejador de eventos |
---|---|
Solicitud |
|
Respuesta |
|
Error |
|
IA generativa de Oracle: resumen
Los modelos de comandos se han retirado. Le recomendamos que migre al punto final
/chat
, que implica declarar un modelo de chat más reciente y sustituir los parámetros específicos del comando por parámetros específicos del chat.
Método | Código de manejador de eventos |
---|---|
Solicitud |
|
Respuesta |
|
Error |
|
Cohere (modelo de comando) - Acceso directo a Cohere
/generate
y el modelo Cohere.command
asociado, no la API /chat
que se utiliza para el modelo cohere.command.R
. Si migra al punto final /chat
, deberá actualizar manualmente las cargas útiles de solicitud y respuesta y la plantilla de código generada.
Método | Código de manejador de eventos |
---|---|
Solicitud | Este manejador gestiona el historial de conversaciones para mantener el contexto de la conversación.
|
Respuesta |
|
Error |
|
Interfaz LLM común
Cada proveedor de LLM tiene su propio formato para sus cargas útiles de solicitud y respuesta. La interfaz de LLM común, o CLMI, permite al componente invokeLLM manejar estas cargas útiles de solicitud y respuesta propietarias.
- Especificación de cuerpo de solicitud.
- Especificación de cuerpo de respuesta correcta, aplicable cuando la llamada REST de LLM devuelve un estado HTTP 200.
- Especificación de cuerpo de respuesta de error, aplicable cuando la llamada REST de LLM devuelve un estado HTTP distinto de 200, pero la llamada del servicio de LLM aún se ha realizado correctamente.
Nota
Para llamadas incorrectas, el componente invokeLLM maneja los errores 401 (no autorizado) o 500 (error interno del servidor).
Especificación de cuerpo de solicitud de CLMI
Propiedad | Tipo | Valor por Defecto | Descripción | ¿Obligatoria? |
---|---|---|---|---|
messages |
Matriz de objetos de mensajes | N/D | Una lista de mensajes. El primer mensaje es el indicador con la propiedad role establecida en system . Si el LLM soporta una conversación de varios giros para que la respuesta del LLM se pueda acotar o mejorar, los mensajes posteriores serán pares de mensajes de los roles user y assistant . El mensaje de usuario contiene las instrucciones de seguimiento o la pregunta para el LLM. El mensaje del asistente contiene la respuesta del LLM al mensaje del usuario (la finalización). Si el LLM no admite conversaciones de varias vueltas, la matriz messages solo contendrá un único mensaje del sistema que contenga la petición de datos.
|
Sí |
streamResponse |
booleano | false |
Determina si la respuesta del LLM se devolverá al componente del LLM. La definición de esta propiedad en true mejora la experiencia del usuario, ya que el flujo permite al componente de LLM enviar mensajes de respuesta parcial a los usuarios para que no tengan que esperar a que el LLM complete la respuesta.
Defina |
No |
maxTokens |
entero | 1024 |
El modelo genera tokens para las palabras en sus resultados. Los tokens se pueden considerar como piezas de palabras. 100 tokens equivalen a aproximadamente 75 palabras en inglés, por ejemplo. Esta propiedad limita el tamaño del contenido generado por el modelo definiendo el número máximo de tokens que genera para la respuesta. | No |
temperature |
número | 0 |
El modelo utiliza la temperatura para medir la aleatoriedad y, por lo tanto, la creatividad de sus respuestas. Esto se define como un valor que va de 0 (resultados predecibles) a 1 (resultados más aleatorios). 0 significa que el modelo enviará los mismos resultados a una petición de datos determinada. 1 significa que los resultados del modelo a una respuesta dada pueden variar enormemente. Utilice un gestor de eventos para aplicar un multiplicador si el proveedor de LLM soporta un rango distinto de 0-1.
|
No |
user |
Cadena | N/D | Identificador único que representa al usuario final, que se puede utilizar para supervisar y detectar el lenguaje abusivo. | No |
providerExtension |
Objeto | N/D | Activa las opciones de configuración específicas del proveedor de LLM que no están definidas como parte de CLMI. | No |
Estructura de Objeto de Mensaje
Propiedad | Tipo | Descripción | ¿Obligatoria? |
---|---|---|---|
role |
Cadena | Creador del mensaje. Los valores son system , user y assistant .
|
Sí |
content |
Cadena | Contenido del mensaje | Sí |
turn |
entero | Número que indica el giro de acotación actual del intercambio de mensajes de chat. Cuando la primera petición de datos se envía al LLM, el turno es 1. | Sí |
retry |
booleano | Indicador que indica si el mensaje se envía al LLM para corregir un error en la respuesta | No (el valor por defecto es false )
|
tag |
Cadena | Etiqueta personalizada que marca una petición de datos específica. Si está mejorando la respuesta del LLM mediante Crítica y mejora recursivas (RCI), puede activar la lógica personalizada del manejador validateResponsePayload para detectar el paso actual del proceso de RCI definiendo la etiqueta en "criticize" o "improve" .
|
No |
Especificación de cuerpo de respuesta correcta
Propiedad | Tipo | Descripción | ¿Obligatoria? |
---|---|---|---|
candidates |
Matriz de objetos candidate |
Lista de mensajes candidatos devueltos por el LLM | Sí |
Objetos candidatos
Propiedad | Tipo | Descripción | ¿Obligatoria? |
---|---|---|---|
content |
Cadena | Contenido del mensaje | Sí |
Especificación de cuerpo de respuesta de error
Propiedad | Tipo | Descripción | ¿Obligatoria? |
---|---|---|---|
errorCode |
Cadena |
|
Sí |
errorMessage |
Cadena | Mensaje de error específico del proveedor de LLM. Puede ser un objeto JSON de cadena. | Sí |