DEV Community

Daniel San
Daniel San

Posted on

Prompt y Completion en OpenAI

En este artículo revisaremos el concepto más importante de GPT-3, el prompt.

Image description

El prompt es una instrucción que se le da a GPT-3 para que genere texto de salida.

Por ejemplo, un usuario podría usar GPT-3 para generar generar una función en Javascript usando un prompt como: “You: Cómo obtener el largo de un string”. GPT-3 leerá el texto y generará una respuesta con la solución basado en ese texto.

Image description

¿Pero cómo entiende lo que estoy escribiendo?
Gracias a el PLN o Procesamiento del Lenguaje Natural, que es un campo de la Inteligencia Artificial que se centra en permitir que las computadoras entiendan el lenguaje humano y se comuniquen con él. Esta tecnología se usa para procesar texto, voz o incluso imágenes para obtener información significativa.

Esto significa que la computadora es capaz de comprender el contexto y la intención del usuario para generar una respuesta apropiada.

GPT-3: Generative Pre-trained Transformer 3
GPT-3 fue entrenado con cientos de miles de millones de palabras (incluso código) para poder comprender el texto y generar una salida acorde a él prompt de entrada.

Si quieres saber más sobre GPT, te dejo el paper oficial 👇

Ahora volvamos al prompt…

El prompt es una frase que se utiliza como entrada para generar un texto. Esta frase puede ser de 3 formas:

zero-shot prompts
Es el más simple de los tipos de prompts. Solo entrega la descripción de un texto corto para que GPT-3 pueda comenzar con la predicción del texto siguiente.

Ejemplo de un prompt zero-shot:

const zero_shot_text = 'Write a function in Javascript';
async function main() {
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: zero_shot_text,
temperature: 0.3,
max_tokens: 100,
top_p: 1.0,
frequency_penalty: 0.5,
presence_penalty: 0.0,
stop: ["END", '.'],
});
console.log(completion.data.choices[0].text)
}

Image description

En este caso con un zero-shot “Write a function in Javascript” basta para obtener el resultado esperado, ya que es una solicitud corto y directo.

one-shot prompt
En este caso se entrega un ejemplo para que GPT-3 pueda usarlo para entender cual debe ser la mejor forma de completar lo solicitado.

En el caso le entregaremos una prompt emulando una conversación entre un bot y una persona:

const one_shot_text = 'Bot: Ask me any question. '+
'Me: Can I ask you something about programming?. '+
'Bot: Yes, of course. Tell me your question and I will answer it. '+
'Me: My question about Javascript is: Write a JavaScript function to apply Bubble Sort algorithm.'+
'Bot:';
async function main() {
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: one_shot_text,
temperature: 0,
max_tokens: 250,
top_p: 1.0,
frequency_penalty: 0.5,
presence_penalty: 0.0,
stop: ["Bot:", 'Me:'],
});
console.log(completion.data.choices[0].text)
}

Image description

GPT-3 completa el texto desde “Bot:” que fue nuestra última palabra en el prompt, siguió la conversación como si fuera el Bot que le entraga la respuesta a la persona que preguntó.

few-shot prompt
Este es el más poderoso de los prompt. En este caso debes proveer un texto extenso de entre 10 a 100 tokens, entregar multiples ejemplos

Con few-shot prompt, GPT-3 incrementará la calidad de la completion ya que el prompt entrega mucha más información para que aprender.

Si ya jugaste en el playground o con ChatGPT te darás cuenta que mientras más escribas mejor serán las respuestas que entregue GPT-3 ya que tendrá más contexto.

const few_shot_text = `Bot: Ask me any question.
Me: Can I ask you something about programming?.
Bot: Yes, of course. Tell me your question and I will answer it
Me: My question about Javascript is: Write a JavaScript function to apply Bubble Sort algorithm.
Bot:
Here is a JavaScript function to apply Bubble Sort algorithm:
function bubbleSort(arr) {
let swapped;
do {
swapped = false;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
return arr;
}
Me: Can you write the same function in Python?
Bot:`;
async function main() {
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: few_shot_text,
temperature: 0,
max_tokens: 250,
top_p: 1.0,
frequency_penalty: 0.5,
presence_penalty: 0.0,
stop: ["END"],
});
console.log(completion.data.choices[0].text)
}

Image description

Ya conoces el prompt… Ahora elige el modelo 🧐

Como existen diferentes tipos de prompts para que GPT-3 entienda el contexto de la conversación, también existen diferentes tipos de modelos con los que se procesará el texto de salida.

Puedes revisar los modelos en el siguiente artículo 👇

Modelos de GPT-3 y Codex
En este artículo revisaremos que es un modelo y cuales son los distintos tipos de modelos que OpenAI ofrece para ocupar…
medium.com

Puedes encontrar todos mis artículos ordenados por categorías aquí: rebrand.ly/davila7

Si tienes dudas, te dejo mi https://www.linkedin.com/in/daniel-avila-arias/

Retry later

Top comments (0)

Retry later
Retry later