Trabaje con finalizaciones de texto en Azure OpenAI
Los modelos GPT-35-Turbo y GPT-4 son modelos de lenguaje optimizados para interfaces conversacionales. Los modelos se comportan de forma diferente a los modelos GPT-3 anteriores. Los modelos anteriores eran de entrada y salida de texto, lo que significa que aceptaban una cadena de mensaje y devolvían una finalización para agregarla al mensaje como acaba de ver.
Sin embargo, los modelos GPT-35-Turbo y GPT-4 son de entrada de conversación y de salida de mensaje. Los modelos esperan una entrada con un formato de transcripción específico similar a un chat y devuelven una finalización que representa un mensaje escrito por el modelo en el chat.
GPT-35-Turbo y GPT-4 aún pueden aceptar y generar finalizaciones de texto, pero donde destacan es en el chat.
En Azure OpenAI hay dos opciones diferentes para interactuar con este tipo de modelos:
- API de finalización de chat.
- API de finalización con lenguaje de marcado de chat (ChatML).
La API de finalización de chat es una nueva API dedicada para interactuar con los modelos GPT-35-Turbo y GPT-4 y la usaremos a medida que avancemos aquí.
Comprender los roles de la API de finalización de chat
OpenAI entrenó los modelos GPT-35-Turbo y GPT-4 para aceptar la entrada con formato de conversación. Cada entrada o mensaje enviado al modelo y cada respuesta devuelta por el modelo se agrega a una conversación general en la API de finalización de chat.
La API de finalización de chat se refiere a las solicitudes entrantes y las respuestas salientes como mensajes.
El modelo acepta una variedad de objetos de mensaje con una conversación organizada por roles. Hay tres tipos de roles: Sistema, Usuario y Asistente.
El rol Sistema
El rol del sistema, también conocido como mensaje del sistema, se incluye al principio de la matriz. Este mensaje proporciona las instrucciones iniciales para el modelo. Puede proporcionar varias informaciones en el rol del sistema, entre las que se incluyen:
- Una breve descripción del asistente
- Rasgos de personalidad del asistente
- Instrucciones o reglas que le gustaría que siguiera el asistente
- Datos o información necesarios para el modelo, como preguntas relevantes provenientes de preguntas frecuentes
Puede personalizar el rol del sistema para su caso de uso o simplemente incluir instrucciones básicas. El rol/mensaje del sistema es opcional, pero se recomienda incluir al menos uno básico para obtener los mejores resultados.
Los roles de usuario y asistente
La conversación ocurre entre un usuario y el asistente. El usuario es la persona que escribe las solicitudes e interactúa con el modelo. Las respuestas del modelo se representan mediante el rol del sistema.
El mensaje que el usuario envía al modelo debe seguir los procedimientos recomendados para diseñar mensajes con el fin de obtener las respuestas de mayor calidad.
Ejemplos de solicitud de mensaje
A continuación se muestran algunos ejemplos de diferentes estilos de solicitudes que puede utilizar con los modelos GPT-35-Turbo y GPT-4. Los ejemplos son sólo un punto de partida y puede experimentar con diferentes solicitudes para personalizar el comportamiento.
Ejemplo básico
Si desea que el modelo GPT-35-Turbo se comporte de forma similar a chat.openai.com, puede usar un mensaje básico del sistema como "El asistente es un modelo de lenguaje grande entrenado por OpenAI".
Aprenderemos cómo usar el SDK .NET de Chat Completion API en la siguiente unidad; por ahora nos quedaremos con los nombres de variables como ejemplo.
string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";
Ejemplo con instrucciones
En algunos escenarios, puede que desee proporcionar instrucciones adicionales al modelo para definir límites de protección para lo que el modelo puede hacer.
string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
""";
string userMessage = "When are my taxes due?";
Administración de conversaciones
El modelo no tiene memoria, por lo que necesita una transcripción actualizada con cada nueva pregunta con todas las preguntas y respuestas, de lo contrario perderá contexto.
Esto significa que deberá enviar la conversación completa y actualizada al modelo cada vez que interactúe con él y luego podría alcanzar fácilmente el límite de tokens para cada modelo.
El límite de tokens para gpt-35-turbo
es 4096 tokens, mientras que los límites de token para gpt-4
y gpt-4-32k
son 8192 y 32768 respectivamente. Debe permanecer por debajo de esos límites, de lo contrario obtendrá un error.
Puede realizar un seguimiento del recuento de tokens y eliminar los mensajes más antiguos de la matriz enviada al modelo. Es mejor mantener siempre el mensaje del sistema y solo eliminar los mensajes del asistente o del usuario. Sin embargo, con el tiempo, este método de gestionar la conversación puede hacer que la calidad de la conversación se degrade a medida que se pierde el contexto de partes anteriores de la conversación.
Alternativamente, una vez que se alcanza el límite de tokens, puede pedirle al usuario que inicie una nueva conversación.