ChatGPT

Ingeniería de prompt con ChatGPT

En esta sección, cubrimos las últimas técnicas de ingeniería de prompts para ChatGPT, incluyendo consejos, aplicaciones, limitaciones, papers y materiales adicionales de lectura.

⚠️

Esta sección está en pleno desarrollo.

Topics:


Introducción a ChatGPT

ChatGPT es un nuevo modelo entrenado por OpenAI (opens in a new tab) que tiene la capacidad de interactuar de manera conversacional. Este modelo está entrenado para seguir instrucciones en un prompt y proporcionar respuestas apropiadas en el contexto de un diálogo. ChatGPT puede ayudar a responder preguntas, sugerir recetas, escribir letras de canciones en un cierto estilo, generar código y mucho más.

ChatGPT se entrena utilizando Aprendizaje por Refuerzo a partir de la retroalimentación humana (RLHF). Si bien este modelo es mucho más capaz que las iteraciones anteriores de GPT (y también está entrenado para reducir las salidas dañinas e inveraces), aún tiene limitaciones. Cubramos algunas de las capacidades y limitaciones con ejemplos concretos.

Puedes usar la preview de investigación de ChatGPT aquí pero para los ejemplos a continuación, usaremos el modo Chat en el OpenAI Playground.


Revisando la tarea de conversación

En una de las guías anteriores, cubrimos un poco sobre las capacidades de conversación y el prompting de roles. Cubrimos cómo instruir al LLM para tener una conversación en un estilo específico, con una intención, comportamiento e identidad específicos.

Revisemos nuestro ejemplo básico anterior donde creamos un sistema de conversación capaz de generar respuestas más técnicas y científicas a preguntas.

Prompt:


La siguiente es una conversación con un asistente de investigación de inteligencia artificial.
El tono del asistente es técnico y científico.

Humano: Hola, ¿quién eres?
IA: ¡Saludos! Soy un asistente de investigación de IA. ¿Cómo puedo ayudarte hoy?
Humano: ¿Puedes contarme sobre la creación de agujeros negros?
IA:

A partir del ejemplo anterior, se pueden observar dos componentes importantes:

  • la intención o explicación de lo que es el chatbot
  • la identidad que instruye el estilo o tono que el chatbot utilizará para responder

El ejemplo sencillo anterior funciona bien con las APIs de completado de texto que utilizan text-davinci-003. Más recientemente, OpenAI anunció las APIs de ChatGPT (opens in a new tab), donde un modelo más poderoso y más barato llamado gpt-3.5-turbo fue específicamente construido para este tipo de funcionalidad (completar conversaciones). De hecho, OpenAI lo recomienda como su mejor modelo incluso para casos de uso no relacionados con chat. Otros beneficios de usar las APIs de ChatGPT son una reducción significativa de costos (90%) y eficiencia.

Grandes empresas como Snap Inc. e Instacart ya están integrando características de conversación impulsadas por ChatGPT en sus productos que van desde recomendaciones personalizadas hasta objetivos de compra abiertos.


Conversaciones con ChatGPT

Conversaciones multi-turno

Para comenzar a demostrar las capacidades de ChatGPT, utilizaremos el ejemplo de asistente de chatbot anterior y discutiremos los resultados. En comparación con text-davinci-003, el modelo gpt-3.5-turbo que impulsa ChatGPT utiliza un formato de chat como entrada. El modelo espera una serie de mensajes como entrada y los utiliza para generar una respuesta.

Entrada:

SISTEMA: Eres un asistente de investigación de IA. Utilizas un tono técnico y científico.
USUARIO: Hola, ¿quién eres?
ASISTENTE: ¡Saludos! Soy un asistente de investigación de IA. ¿En qué puedo ayudarte hoy?
USUARIO: ¿Puedes contarme sobre la creación de los agujeros negros?

Salida:

ASISTENTE: ¡Por supuesto! Los agujeros negros se crean cuando una estrella masiva se queda
sin combustible y colapsa bajo su propia gravedad. Este colapso hace que la estrella se
vuelva increíblemente densa, con un campo gravitacional tan fuerte que ni siquiera la luz
puede escapar de ella. Este punto de no retorno se conoce como el horizonte de sucesos.
Una vez que una estrella cruza el horizonte de sucesos, se considera un agujero negro...

Ten en cuenta que en el ejemplo anterior, he simplificado la entrada y la salida, pero la API de completado de chat de ChatGPT requiere que los mensajes estén en un formato específico. He agregado una captura de pantalla a continuación de cómo se vería este ejemplo usando el Chat Mode en el Playground de OpenAI:

CHATGPT1

La llamada formal al API para nuestro ejemplo tendria este aspecto:

import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "Eres un asistente de investigación de IA. Utilizas un tono técnico y científico."},
        {"role": "user", "content": "Hola, ¿quién eres?"},
        {"role": "assistant", "content": "¡Saludos! Soy un asistente de investigación de IA. ¿En qué puedo ayudarte hoy?"},
        {"role": "user", "content": "¿Puedes contarme sobre la creación de los agujeros negros?"}
    ]
)

Se espera que en el futuro, la forma en que los desarrolladores interactúen con ChatGPT se realice a través del Lenguaje de Marcado de Chat (opens in a new tab) (ChatML).

Tareas de una sola interacción

El formato de chat permite conversaciones de múltiples interacciones, pero también admite tareas de una sola interacción similares a las que usamos con text-davinci-003. Esto significa que podemos usar ChatGPT para realizar tareas similares a las que hemos demostrado para los modelos GPT originales. Por ejemplo, intentemos realizar la siguiente tarea de respuesta a preguntas utilizando ChatGPT:

Entrada:

USER: Responda la pregunta basándose en el contexto a continuación. Mantenga la respuesta corta y concisa. Responda "Inseguro sobre la respuesta" si no está seguro sobre la respuesta.

Contexto: Teplizumab tiene sus raíces en una compañía farmacéutica de Nueva Jersey llamada Ortho Pharmaceutical. Allí, los científicos generaron una versión temprana del anticuerpo, llamado OKT3. Originariamente obtenido de ratones, la molécula era capaz de unirse a la superficie de las células T y limitar su potencial para matar células. En 1986, se aprobó para ayudar a prevenir el rechazo de órganos después de los trasplantes de riñón, convirtiéndose en el primer anticuerpo terapéutico permitido para uso humano.

Pregunta: ¿De dónde se obtuvo originalmente el OKT3?

Respuesta:

Salida:

ASSISTANT: De ratones.

Ten en cuenta que estoy agregando las etiquetas USER y ASSISTANT para demostrar mejor cómo se puede realizar la tarea con ChatGPT. Aquí está el ejemplo usando Playground:

CHATGPTCLASSIC

De manera más formal, esta es la llamada a la API (solo he incluido el componente del mensaje de la solicitud):

CONTENT = """Responda la pregunta basándose en el contexto a continuación. Mantenga la respuesta corta y concisa. Responda \"Inseguro sobre la respuesta\" si no está seguro sobre la respuesta.
 
Contexto: Teplizumab tiene sus raíces en una compañía farmacéutica de Nueva Jersey llamada Ortho Pharmaceutical. Allí, los científicos generaron una versión temprana del anticuerpo, llamado OKT3. Originariamente obtenido de ratones, la molécula era capaz de unirse a la superficie de las células T y limitar su potencial para matar células. En 1986, se aprobó para ayudar a prevenir el rechazo de órganos después de los trasplantes de riñón, convirtiéndose en el primer anticuerpo terapéutico permitido para uso humano.
 
Pregunta: ¿De dónde se obtuvo originalmente el OKT3?
 
Respuesta:
"""
 
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Instructing Chat Models

Según la documentación oficial de OpenAI, también se pondrán a disposición snapshots del modelo gpt-3.5-turbo. Por ejemplo, podemos acceder al snapshot del 1 de marzo gpt-3.5-turbo-0301. Esto permite que los desarrolladores opten por versiones específicas del modelo. Esto también significa que las mejores prácticas para instruir modelos pueden cambiar de una versión a otra.

La recomendación actual para gpt-3.5-turbo-0301 es agregar instrucciones en el mensaje del usuario en lugar del mensaje del sistema disponible.


Referencias