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/

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay