commit
6037c4a387
@ -0,0 +1,27 @@
|
||||
{
|
||||
"index": "Ingeniería de Prompt",
|
||||
"introduction": "Introducción",
|
||||
"techniques": "Técnicas",
|
||||
"applications": "Aplicaciones",
|
||||
"models": "Modelos",
|
||||
"risks": "Riesgos y Malos Usos",
|
||||
"papers": "Papers",
|
||||
"tools": "Herramientas",
|
||||
"notebooks": "Notebooks",
|
||||
"datasets": "Datasets",
|
||||
"readings": "Lecturas Adicionales",
|
||||
"about": {
|
||||
"title": "Acerca de",
|
||||
"type": "page"
|
||||
},
|
||||
"course": {
|
||||
"title": "Curso de Ingeniería de Prompt",
|
||||
"type": "page"
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contactar ↗",
|
||||
"type": "page",
|
||||
"href": "https://twitter.com/dair_ai",
|
||||
"newWindow": true
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
# Acerca de
|
||||
|
||||
La Guía de Ingeniería de Prompt es un proyecto de [DAIR.AI](https://github.com/dair-ai). Su objetivo es educar a investigadores y profesionales sobre la ingeniería de prompts.
|
||||
|
||||
DAIR.AI tiene como objetivo democratizar la investigación en inteligencia artificial, la educación y las tecnologías. Nuestra misión es permitir la próxima generación de innovadores y creadores de IA.
|
||||
|
||||
Damos la bienvenida a contribuciones de la comunidad. Busque los botones de Edición.
|
||||
|
||||
Información de licencia [aquí](https://github.com/dair-ai/Prompt-Engineering-Guide#license).
|
||||
|
||||
Tomamos inspiración de muchos recursos abiertos como [OpenAI CookBook](https://github.com/openai/openai-cookbook), [Pretrain, Prompt, Predict](http://pretrain.nlpedia.ai/), [Learn Prompting](https://learnprompting.org/) y muchos otros.
|
@ -0,0 +1,9 @@
|
||||
# Aplicaciones del Prompting
|
||||
|
||||
import { Callout } from 'nextra-theme-docs'
|
||||
|
||||
En esta sección se mostrarán algunas formas avanzadas e interesantes en las que podemos usar la ingenieria de prompts para realizar tareas más avanzadas y útiles.
|
||||
|
||||
<Callout emoji="⚠️">
|
||||
Esta sección está en pleno desarrollo.
|
||||
</Callout>
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"pal": "Modelos de lenguaje asistidos por programas",
|
||||
"generating": "Generación de datos",
|
||||
"workplace_casestudy": "Caso de estudio de clasificación de trabajo de graduados"
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
# Generación de Datos
|
||||
|
||||
Los LLM tienen fuertes capacidades para generar texto coherente. El uso de estrategias de prompt efectivas puede dirigir al modelo a producir respuestas mejores, consistentes y más factuales. Los LLM también pueden ser especialmente útiles para generar datos, lo cual es realmente útil para realizar todo tipo de experimentos y evaluaciones. Por ejemplo, podemos usarlo para generar muestras rápidas para un clasificador de sentimientos así:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Produce 10 ejemplos para análisis de sentimientos. Los ejemplos se categorizan como positivos o negativos. Produce 2 ejemplos negativos y 8 ejemplos positivos. Usa este formato para los ejemplos:
|
||||
Q: <oración>
|
||||
A: <sentimiento>
|
||||
```
|
||||
|
||||
*Salida*
|
||||
```
|
||||
Q: ¡Acabo de recibir las mejores noticias!
|
||||
A: Positivo
|
||||
|
||||
Q: ¡Acabamos de recibir un aumento en el trabajo!
|
||||
A: Positivo
|
||||
|
||||
Q: Estoy muy orgulloso de lo que logré hoy.
|
||||
A: Positivo
|
||||
|
||||
Q: ¡Estoy teniendo el mejor día de mi vida!
|
||||
A: Positivo
|
||||
|
||||
Q: Realmente estoy deseando el fin de semana.
|
||||
A: Positivo
|
||||
|
||||
Q: ¡Acabo de recibir el mejor regalo de mi vida!
|
||||
A: Positivo
|
||||
|
||||
Q: Estoy tan feliz en este momento.
|
||||
A: Positivo
|
||||
|
||||
Q: Me siento tan afortunado de tener una familia increíble.
|
||||
A: Positivo
|
||||
|
||||
Q: El clima afuera está tan triste.
|
||||
A: Negativo
|
||||
|
||||
Q: Acabo de recibir algunas noticias terribles.
|
||||
A: Negativo
|
||||
```
|
||||
|
||||
Esto es muy útil. De hecho, usamos este ejemplo para una prueba diferente en otra sección de las guías.
|
@ -0,0 +1,106 @@
|
||||
|
||||
# PAL (Modelos de lenguaje asistidos por programa)
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import PAL from '../../img/pal.png'
|
||||
|
||||
[Gao et al., (2022)](https://arxiv.org/abs/2211.10435) presenta un método que utiliza LLMs para leer problemas en lenguaje natural y generar programas como pasos intermedios de razonamiento. Llamado modelos de lenguaje asistidos por programa (PAL), difiere del prompting en cadena de pensamiento en que, en lugar de utilizar texto libre para obtener una solución, desplaza el paso de la solución a un tiempo de ejecución programático, como un intérprete de Python.
|
||||
|
||||
<Screenshot src={PAL} alt="PAL" />
|
||||
Image Source: [Gao et al., (2022)](https://arxiv.org/abs/2211.10435)
|
||||
|
||||
Veamos un ejemplo utilizando LangChain y OpenAI GPT-3. Estamos interesados en desarrollar una aplicación simple que sea capaz de interpretar la pregunta formulada y proporcionar una respuesta aprovechando el intérprete de Python.
|
||||
|
||||
Específicamente, estamos interesados en crear una funcionalidad que permita el uso del LLM para responder preguntas que requieren comprensión de fechas. Proporcionaremos al LLM una indicación que incluye algunos ejemplos adoptados de [aquí](https://github.com/reasoning-machines/pal/blob/main/pal/prompt/date_understanding_prompt.py).
|
||||
|
||||
Estos son los imports que necesitamos:
|
||||
|
||||
```python
|
||||
import openai
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import os
|
||||
from langchain.llms import OpenAI
|
||||
from dotenv import load_dotenv
|
||||
```
|
||||
|
||||
Configuremos primeros algunas cosas:
|
||||
|
||||
```python
|
||||
load_dotenv()
|
||||
|
||||
# API configuration
|
||||
openai.api_key = os.getenv("OPENAI_API_KEY")
|
||||
|
||||
# for LangChain
|
||||
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
|
||||
```
|
||||
|
||||
Configuremos la instancia del modelo
|
||||
|
||||
```python
|
||||
llm = OpenAI(model_name='text-davinci-003', temperature=0)
|
||||
```
|
||||
|
||||
Configuremos el prompt y la pregunta:
|
||||
|
||||
```python
|
||||
question = "Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?"
|
||||
|
||||
DATE_UNDERSTANDING_PROMPT = """
|
||||
# Q: 2015 is coming in 36 hours. What is the date one week from today in MM/DD/YYYY?
|
||||
# If 2015 is coming in 36 hours, then today is 36 hours before.
|
||||
today = datetime(2015, 1, 1) - relativedelta(hours=36)
|
||||
# One week from today,
|
||||
one_week_from_today = today + relativedelta(weeks=1)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
one_week_from_today.strftime('%m/%d/%Y')
|
||||
# Q: The first day of 2019 is a Tuesday, and today is the first Monday of 2019. What is the date today in MM/DD/YYYY?
|
||||
# If the first day of 2019 is a Tuesday, and today is the first Monday of 2019, then today is 6 days later.
|
||||
today = datetime(2019, 1, 1) + relativedelta(days=6)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
today.strftime('%m/%d/%Y')
|
||||
# Q: The concert was scheduled to be on 06/01/1943, but was delayed by one day to today. What is the date 10 days ago in MM/DD/YYYY?
|
||||
# If the concert was scheduled to be on 06/01/1943, but was delayed by one day to today, then today is one day later.
|
||||
today = datetime(1943, 6, 1) + relativedelta(days=1)
|
||||
# 10 days ago,
|
||||
ten_days_ago = today - relativedelta(days=10)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
ten_days_ago.strftime('%m/%d/%Y')
|
||||
# Q: It is 4/19/1969 today. What is the date 24 hours later in MM/DD/YYYY?
|
||||
# It is 4/19/1969 today.
|
||||
today = datetime(1969, 4, 19)
|
||||
# 24 hours later,
|
||||
later = today + relativedelta(hours=24)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
today.strftime('%m/%d/%Y')
|
||||
# Q: Jane thought today is 3/11/2002, but today is in fact Mar 12, which is 1 day later. What is the date 24 hours later in MM/DD/YYYY?
|
||||
# If Jane thought today is 3/11/2002, but today is in fact Mar 12, then today is 3/1/2002.
|
||||
today = datetime(2002, 3, 12)
|
||||
# 24 hours later,
|
||||
later = today + relativedelta(hours=24)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
later.strftime('%m/%d/%Y')
|
||||
# Q: Jane was born on the last day of Feburary in 2001. Today is her 16-year-old birthday. What is the date yesterday in MM/DD/YYYY?
|
||||
# If Jane was born on the last day of Feburary in 2001 and today is her 16-year-old birthday, then today is 16 years later.
|
||||
today = datetime(2001, 2, 28) + relativedelta(years=16)
|
||||
# Yesterday,
|
||||
yesterday = today - relativedelta(days=1)
|
||||
# The answer formatted with %m/%d/%Y is
|
||||
yesterday.strftime('%m/%d/%Y')
|
||||
# Q: {question}
|
||||
""".strip() + '\n'
|
||||
```
|
||||
|
||||
```python
|
||||
llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question))
|
||||
print(llm_out)
|
||||
```
|
||||
|
||||
```python
|
||||
exec(llm_out)
|
||||
print(born)
|
||||
```
|
||||
|
||||
Esto producirá la siguiente salida: `02/27/1998`
|
@ -0,0 +1,57 @@
|
||||
# Caso de estudio de clasificación de trabajo de graduados
|
||||
|
||||
[Clavié et al., 2023](https://arxiv.org/abs/2303.07142) proporcionan un caso de estudio sobre la ingeniería de prompts aplicada a un caso de uso de clasificación de texto a mediana escala en un sistema de producción. Utilizando la tarea de clasificar si un trabajo es un verdadero "trabajo básico", adecuado para un recién graduado, o no, evaluaron una serie de técnicas de ingeniería de prompts y reportaron sus resultados utilizando GPT-3.5 (`gpt-3.5-turbo`).
|
||||
|
||||
El trabajo muestra que los LLM superan a todos los demás modelos probados, incluyendo una base de referencia extremadamente fuerte en DeBERTa-V3. `gpt-3.5-turbo` también supera notablemente a las variantes más antiguas de GPT3 en todas las métricas clave, pero requiere un análisis adicional de la salida ya que su capacidad para mantenerse en una plantilla parece ser peor que las otras variantes.
|
||||
|
||||
Los hallazgos clave de su enfoque de ingeniería de prompts son:
|
||||
|
||||
- Para tareas como esta, donde no se requiere conocimiento experto, CoT con pocos ejemplos dio peores resultados que la generación sin ejemplos en todos los experimentos.
|
||||
- El impacto del prompt en la obtención del razonamiento correcto es enorme. Simplemente pedir al modelo que clasifique un trabajo dado da como resultado una puntuación F1 de 65.6, mientras que el modelo de ingeniería posterior al prompt logra una puntuación F1 de 91.7.
|
||||
- Intentar forzar al modelo a mantenerse en una plantilla disminuye el rendimiento en todos los casos (este comportamiento desaparece en las primeras pruebas con GPT-4, que son posteriores al documento).
|
||||
- Muchas modificaciones pequeñas tienen un gran impacto en el rendimiento.
|
||||
- Las tablas a continuación muestran las modificaciones completas probadas.
|
||||
- Dar instrucciones adecuadas y repetir los puntos clave parece ser el factor más importante para el rendimiento.
|
||||
- Algo tan simple como dar al modelo un nombre (humano) y referirse a él como tal aumentó la puntuación F1 en 0.6 puntos.
|
||||
|
||||
### Modificaciones the prompt probadas
|
||||
|
||||
| Nombre corto | Descripción |
|
||||
|--------------|-----------------------------------------------------------------------------------------------------|
|
||||
| Baseline | Proporciona una descripción del trabajo y pregunta si es adecuada para un graduado. |
|
||||
| CoT | Da algunos ejemplos de clasificación precisa antes de realizar la consulta. |
|
||||
| Zero-CoT | Pide al modelo que razone paso a paso antes de proporcionar su respuesta. |
|
||||
| rawinst | Da instrucciones sobre su papel y la tarea agregando al mensaje del usuario. |
|
||||
| sysinst | Da instrucciones sobre su papel y la tarea como mensaje del sistema. |
|
||||
| bothinst | Divide las instrucciones con el papel como mensaje del sistema y la tarea como mensaje del usuario. |
|
||||
| mock | Da instrucciones sobre la tarea burlándose de una discusión donde las reconoce. |
|
||||
| reit | Refuerza los elementos clave en las instrucciones repitiéndolos. |
|
||||
| strict | Pide al modelo que responda siguiendo estrictamente una plantilla dada. |
|
||||
| loose | Pide que solo se proporcione la respuesta final siguiendo una plantilla dada. |
|
||||
| right | Pide al modelo que llegue a la conclusión correcta. |
|
||||
| info | Proporciona información adicional para abordar fallas de razonamiento comunes. |
|
||||
| name | Da al modelo un nombre con el que nos referimos a él en la conversación. |
|
||||
| pos | Proporciona retroalimentación positiva al modelo antes de hacer la consulta. |
|
||||
|
||||
|
||||
|
||||
### Impacto de rendimiento de todas las modificaciones de prompt
|
||||
|
||||
| | Precision | Recall | F1 | Apego a la Plantilla |
|
||||
|----------------------------------------|---------------|---------------|---------------|------------------------|
|
||||
| _Baseline_ | _61.2_ | _70.6_ | _65.6_ | _79%_ |
|
||||
| _CoT_ | _72.6_ | _85.1_ | _78.4_ | _87%_ |
|
||||
| _Zero-CoT_ | _75.5_ | _88.3_ | _81.4_ | _65%_ |
|
||||
| _+rawinst_ | _80_ | _92.4_ | _85.8_ | _68%_ |
|
||||
| _+sysinst_ | _77.7_ | _90.9_ | _83.8_ | _69%_ |
|
||||
| _+bothinst_ | _81.9_ | _93.9_ | _87.5_ | _71%_ |
|
||||
| +bothinst+mock | 83.3 | 95.1 | 88.8 | 74% |
|
||||
| +bothinst+mock+reit | 83.8 | 95.5 | 89.3 | 75% |
|
||||
| _+bothinst+mock+reit+strict_ | _79.9_ | _93.7_ | _86.3_ | _**98%**_ |
|
||||
| _+bothinst+mock+reit+loose_ | _80.5_ | _94.8_ | _87.1_ | _95%_ |
|
||||
| +bothinst+mock+reit+right | 84 | 95.9 | 89.6 | 77% |
|
||||
| +bothinst+mock+reit+right+info | 84.9 | 96.5 | 90.3 | 77% |
|
||||
| +bothinst+mock+reit+right+info+name | 85.7 | 96.8 | 90.9 | 79% |
|
||||
| +bothinst+mock+reit+right+info+name+pos| **86.9** | **97** | **91.7** | 81% |
|
||||
|
||||
El apego a la plantilla se refiere a qué tan frecuentemente el modelo responde en el formato deseado.
|
@ -0,0 +1,9 @@
|
||||
# Curso de Ingeniería de Prompt
|
||||
|
||||
Nos hemos asociado con Sphere para ofrecer un curso de ["Ingeniería de Prompt para LLMs"](https://www.getsphere.com/cohorts/prompt-engineering-for-llms?source=promptingguide) en mayo de 2023.
|
||||
|
||||
Este curso práctico está diseñado para enseñar todas las últimas técnicas y herramientas de ingeniería de prompt utilizadas en el mundo real para construir aplicaciones de manera efectiva sobre grandes modelos de lenguaje.
|
||||
|
||||
Si deseas llevar tus habilidades de ingeniería de prompt al siguiente nivel, recomendamos encarecidamente el curso.
|
||||
|
||||
Este curso también incluye un certificado de finalización.
|
@ -0,0 +1,13 @@
|
||||
# Datasets
|
||||
|
||||
#### (Ordenados por nombre)
|
||||
|
||||
- [Anthropic's Red Team dataset](https://github.com/anthropics/hh-rlhf/tree/master/red-team-attempts), [(paper)](https://arxiv.org/abs/2209.07858)
|
||||
- [Awesome ChatGPT Prompts](https://huggingface.co/datasets/fka/awesome-chatgpt-prompts)
|
||||
- [DiffusionDB](https://github.com/poloclub/diffusiondb)
|
||||
- [Midjourney Prompts](https://huggingface.co/datasets/succinctly/midjourney-prompts)
|
||||
- [P3 - Public Pool of Prompts](https://huggingface.co/datasets/bigscience/P3)
|
||||
- [PartiPrompts](https://parti.research.google)
|
||||
- [Real Toxicity Prompts](https://allenai.org/data/real-toxicity-prompts)
|
||||
- [Stable Diffusion Dataset](https://huggingface.co/datasets/Gustavosta/Stable-Diffusion-Prompts)
|
||||
- [WritingPrompts](https://www.reddit.com/r/WritingPrompts)
|
@ -0,0 +1,9 @@
|
||||
# Guía de Ingeniería de Prompt
|
||||
|
||||
La ingeniería de prompt es una disciplina relativamente nueva para el desarrollo y la optimización de prompts para utilizar eficientemente modelos de lenguaje (ML) en una amplia variedad de aplicaciones y temas de investigación. Las habilidades de ingeniería de prompt ayudan a comprender mejor las capacidades y limitaciones de los grandes modelos de lenguaje (LLM).
|
||||
|
||||
Los investigadores utilizan la ingeniería de prompt para mejorar la capacidad de los LLM en una amplia gama de tareas comunes y complejas, como responder preguntas y razonamiento aritmético. Los desarrolladores utilizan la ingeniería de prompt para diseñar técnicas de prompt robustas y efectivas que interactúen con los LLM y otras herramientas.
|
||||
|
||||
La ingeniería de prompt no solo se trata de diseñar y desarrollar prompts. Abarca una amplia gama de habilidades y técnicas útiles para interactuar y desarrollar con LLM. Es una habilidad importante para interactuar, construir y comprender las capacidades de los LLM. Puedes utilizar la ingeniería de prompt para mejorar la seguridad de los LLM y crear nuevas capacidades, como la incorporación de conocimientos de dominio y herramientas externas a los LLM.
|
||||
|
||||
Motivados por el gran interés en el desarrollo con LLM, hemos creado esta nueva guía de ingeniería de prompt que contiene todos los últimos artículos, guías de aprendizaje, modelos, conferencias, referencias, nuevas capacidades de LLM y herramientas relacionadas con la ingeniería de prompt.
|
@ -0,0 +1,7 @@
|
||||
# Introducción
|
||||
|
||||
La ingeniería de prompt es una disciplina relativamente nueva para el desarrollo y la optimización de prompts para utilizar eficientemente modelos de lenguaje (ML) en una amplia variedad de aplicaciones y temas de investigación. Las habilidades de ingeniería de prompt ayudan a comprender mejor las capacidades y limitaciones de los grandes modelos de lenguaje (LLM). Los investigadores utilizan la ingeniería de prompt para mejorar la capacidad de los LLM en una amplia gama de tareas comunes y complejas, como responder preguntas y razonamiento aritmético. Los desarrolladores utilizan la ingeniería de prompt para diseñar técnicas de prompt robustas y efectivas que interactúen con los LLM y otras herramientas.
|
||||
|
||||
Esta guía cubre los conceptos básicos de los prompts para proporcionar una idea general de cómo utilizar los prompts para interactuar e instruir a los grandes modelos de lenguaje (LLM).
|
||||
|
||||
Todos los ejemplos se han probado con `text-davinci-003` (usando el playground de OpenAI) a menos que se especifique lo contrario. Se utilizan las configuraciones predeterminadas, es decir, `temperature=0.7` y `top-p=1`.
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"settings": "Configuración de LLM",
|
||||
"basics": "Conceptos básicos de prompting",
|
||||
"elements": "Elementos de prompting",
|
||||
"tips": "Consejos generales para diseñar prompts",
|
||||
"examples": "Ejemplos de prompts"
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
# Fundamentos del Prompting
|
||||
|
||||
## Prompts Básicos
|
||||
|
||||
Puedes lograr mucho con prompts simples, pero la calidad de los resultados depende de cuánta información le proporcionas al modelo y de cuán bien diseñado está el prompt. Un prompt puede contener información como la instrucción o pregunta que estás pasando al modelo e incluir otros detalles como contexto, entradas o ejemplos. Puedes utilizar estos elementos para instruir mejor al modelo y obtener mejores resultados.
|
||||
|
||||
Comencemos repasando un ejemplo básico de un prompt simple:
|
||||
|
||||
*Prompt*
|
||||
```
|
||||
El cielo es
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
azul
|
||||
|
||||
El cielo es azul en un día claro. En un día nublado, el cielo puede ser gris o blanco.
|
||||
```
|
||||
|
||||
Como puedes ver, el modelo de lenguaje genera una continuación de cadenas que tienen sentido en el contexto de `"El cielo es"`. El resultado puede ser inesperado o estar muy alejado de la tarea que queremos lograr.
|
||||
|
||||
Este ejemplo básico también destaca la necesidad de proporcionar más contexto o instrucciones sobre lo que específicamente queremos lograr.
|
||||
|
||||
|
||||
Intentemos mejorarlo un poco:
|
||||
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Completa la oración:
|
||||
|
||||
El cielo es
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
|
||||
```
|
||||
tan hermoso hoy.
|
||||
```
|
||||
|
||||
|
||||
¿Es esta respuesta mejor? Bueno, le dijimos al modelo que completara la oración, por lo que el resultado se ve mucho mejor ya que sigue exactamente lo que le dijimos que hiciera ("completa la oración"). Este enfoque de diseñar prompts óptimos para instruir al modelo a realizar una tarea se llama **ingeniería de prompts**.
|
||||
|
||||
El ejemplo anterior ilustra lo que es posible con LLMs en la actualidad. Los LLMs actuales pueden realizar todo tipo de tareas avanzadas que van desde la síntesis de texto hasta el razonamiento matemático y la generación de código.
|
||||
|
||||
## Formato del Prompt
|
||||
|
||||
Hemos utilizado un prompt muy simple anteriormente. Un prompt estándar tiene el siguiente formato:
|
||||
|
||||
```
|
||||
¿<Pregunta>?
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
<Instrucción>
|
||||
```
|
||||
|
||||
Esto se puede formatear como una respuesta a una pregunta (QA), que es estándar en muchos conjuntos de datos de QA, de la siguiente manera:
|
||||
|
||||
```
|
||||
Q: ¿<Pregunta>?
|
||||
A:
|
||||
```
|
||||
|
||||
Al realizar un prompt como el anterior, también se llama *prompting sin entrenamiento* (zero-shot prompting), es decir, estás solicitando directamente al modelo una respuesta sin ejemplos o demostraciones sobre la tarea que deseas que realice. Algunos modelos de lenguaje grandes tienen la capacidad de realizar prompting sin entrenamiento, pero depende de la complejidad y el conocimiento de la tarea en cuestión.
|
||||
|
||||
Dado el formato estándar anterior, una técnica popular y efectiva para prompting se llama *prompting con pocos ejemplos* (few-shot prompting) donde proporcionamos ejemplos (es decir, demostraciones). Los prompts con pocos ejemplos se pueden formatear de la siguiente manera:
|
||||
|
||||
```
|
||||
¿<Pregunta>?
|
||||
<Respuesta>
|
||||
|
||||
¿<Pregunta>?
|
||||
<Respuesta>
|
||||
|
||||
¿<Pregunta>?
|
||||
<Respuesta>
|
||||
|
||||
¿<Pregunta>?
|
||||
|
||||
```
|
||||
|
||||
La versión en formato QA tendría este aspecto:
|
||||
|
||||
```
|
||||
Q: ¿<Pregunta>?
|
||||
A: <Respuesta>
|
||||
|
||||
Q: ¿<Pregunta>?
|
||||
A: <Respuesta>
|
||||
|
||||
Q: ¿<Pregunta>?
|
||||
A: <Respuesta>
|
||||
|
||||
Q: ¿<Pregunta>?
|
||||
```
|
||||
|
||||
Ten en cuenta que no es necesario usar el formato de preguntas y respuestas (QA). El formato de la tarea depende de la tarea en cuestión. Por ejemplo, se puede realizar una tarea de clasificación simple y proporcionar ejemplos que demuestren la tarea de la siguiente manera:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Esto es impresionante! // Positivo
|
||||
Esto es malo! // Negativo
|
||||
Guau, esa película fue genial! // Positivo
|
||||
¡Qué programa tan horrible! //
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
Negativo
|
||||
```
|
||||
|
||||
El prompting con pocos ejemplos permite el aprendizaje en contexto, que es la capacidad de los modelos de lenguaje para aprender tareas dados unos pocos ejemplos.
|
@ -0,0 +1,15 @@
|
||||
# Elementos de un prompt
|
||||
|
||||
A medida que cubrimos más y más ejemplos y aplicaciones que son posibles con la ingeniería de prompts, notarás que hay ciertos elementos que conforman una prompt.
|
||||
|
||||
Una prompt puede contener cualquiera de los siguientes componentes:
|
||||
|
||||
**Instrucción** - una tarea o instrucción específica que deseas que el modelo realice
|
||||
|
||||
**Contexto** - puede involucrar información externa o contexto adicional que puede dirigir al modelo a respuestas mejores
|
||||
|
||||
**Datos de entrada** - es la entrada o pregunta para la que nos interesa encontrar una respuesta
|
||||
|
||||
**Indicador de salida** - indica el tipo o formato de la salida
|
||||
|
||||
No todos los componentes son necesarios para una prompt y el formato depende de la tarea en cuestión. Abordaremos más ejemplos concretos en las próximas guías.
|
@ -0,0 +1,326 @@
|
||||
# Ejemplos de prompts
|
||||
|
||||
En la sección anterior, presentamos y dimos ejemplos básicos de cómo hacer prompting a LLMs.
|
||||
|
||||
En esta sección, proporcionaremos más ejemplos de cómo se utilizan los prompts para lograr diferentes tareas e introduciremos conceptos clave en el camino. A menudo, la mejor manera de aprender conceptos es mediante ejemplos. A continuación, cubrimos algunos ejemplos de cómo los prompts bien diseñados se pueden utilizar para realizar diferentes tipos de tareas.
|
||||
|
||||
Temas:
|
||||
- [Resumen de textos](#resumen-de-textos)
|
||||
- [Extracción de información](#information-extraction)
|
||||
- [Preguntas y respuestas](#preguntas-y-respuestas)
|
||||
- [Clasificación de texto](#clasificación-de-texto)
|
||||
- [Conversación](#conversación)
|
||||
- [Generación de código](#generación-de-código)
|
||||
- [Razonamiento](#razonamiento)
|
||||
|
||||
---
|
||||
|
||||
## Resumen de textos
|
||||
|
||||
Uno de los trabajos estándar en la generación de lenguaje natural es el resumen de textos. El resumen de textos puede incluir muchas areas diferentes. De hecho, una de las aplicaciones más prometedoras de los modelos de lenguaje es la capacidad de resumir artículos y conceptos en resúmenes rápidos y fáciles de leer. Vamos a intentar una tarea básica de sumarización utilizando prompts.
|
||||
|
||||
|
||||
Digamos que estoy interesado en aprender acerca de los antibióticos, podría probar un prompt como este:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Explica los antibióticos
|
||||
|
||||
A:
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
Los antibióticos son un tipo de medicamento utilizado para tratar infecciones bacterianas.
|
||||
Funcionan matando las bacterias o impidiendo que se reproduzcan, permitiendo que el sistema
|
||||
inmunológico del cuerpo combata la infección. Los antibióticos suelen tomarse por vía oral
|
||||
en forma de píldoras, cápsulas o soluciones líquidas, o a veces se administran por vía
|
||||
intravenosa. No son efectivos contra infecciones virales y su uso inadecuado puede llevar
|
||||
a la resistencia a los antibióticos.
|
||||
```
|
||||
|
||||
La "A:" es un formato de prompt explícito que se utiliza en la respuesta a preguntas. Lo usé aquí para decirle al modelo que esperamos una respuesta. En este ejemplo, no está claro cómo esto es útil en comparación con no usarlo, pero lo dejaremos para ejemplos posteriores. Supongamos que esto es demasiada información y queremos resumirla aún más. De hecho, podemos indicarle al modelo que la resuma en una sola oración así:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los antibióticos son un tipo de medicamento utilizado para tratar infecciones bacterianas.
|
||||
Funcionan matando las bacterias o impidiendo que se reproduzcan, permitiendo que el sistema
|
||||
inmunológico del cuerpo combata la infección. Los antibióticos suelen tomarse por vía oral
|
||||
en forma de píldoras, cápsulas o soluciones líquidas, o a veces se administran por vía
|
||||
intravenosa. No son efectivos contra infecciones virales y su uso inadecuado puede llevar
|
||||
a la resistencia a los antibióticos.
|
||||
|
||||
Resume lo anterior en una sola oración:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Los antibióticos son medicamentos utilizados para tratar infecciones bacterianas al matar
|
||||
o detener la reproducción de las bacterias, pero no son efectivos contra los virus y el
|
||||
uso excesivo puede llevar a la resistencia a los antibióticos.
|
||||
```
|
||||
|
||||
Sin prestar demasiada atención a la precisión de la salida anterior, algo en lo que nos centraremos en una guía posterior, el modelo intentó resumir el párrafo en una sola oración. Podemos intentar ser más ingeniosos con las instrucciones, pero lo dejaremos para un capítulo posterior. Siéntete libre de pausar aquí y experimentar para ver si obtienes mejores resultados.
|
||||
|
||||
---
|
||||
## Extracción de información
|
||||
|
||||
Mientras que los modelos de lenguaje están entrenados para realizar la generación de lenguaje natural y otras tareas relacionadas, también son muy capaces de realizar clasificación y una serie de otras tareas de procesamiento de lenguaje natural (NLP).
|
||||
|
||||
Aquí hay un ejemplo de un prompt que extrae información de un párrafo dado.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Las declaraciones de contribución del autor y los agradecimientos en los documentos de
|
||||
investigación deben indicar claramente y específicamente si, y en qué medida, los autores
|
||||
utilizaron tecnologías de inteligencia artificial como ChatGPT en la preparación de su
|
||||
manuscrito y análisis. También deben indicar qué LLMs se utilizaron. Esto alertará a los
|
||||
editores y revisores para examinar los manuscritos con más cuidado en busca de posibles
|
||||
prejuicios, inexactitudes e improperios en la atribución de fuentes. De igual manera, las
|
||||
revistas científicas deben ser transparentes sobre su uso de LLM, por ejemplo, al seleccionar
|
||||
manuscritos enviados.
|
||||
|
||||
Menciona el producto basado en el modelo de lenguaje grande mencionado en el párrafo anterior:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
El producto basado en el modelo de lenguaje grande mencionado en el párrafo anterior es ChatGPT.
|
||||
```
|
||||
|
||||
Hay muchas formas en que podemos mejorar los resultados anteriores, pero esto ya es muy útil.
|
||||
|
||||
A estas alturas, debería ser obvio que puedes pedirle al modelo que realice diferentes tareas simplemente instruyéndolo sobre qué hacer. Esa es una capacidad poderosa que los desarrolladores de productos de inteligencia artificial ya están utilizando para crear productos y experiencias poderosos.
|
||||
|
||||
|
||||
Fuente del párrafo: [ChatGPT: five priorities for research](https://www.nature.com/articles/d41586-023-00288-7)
|
||||
|
||||
---
|
||||
## Preguntas y respuestas
|
||||
|
||||
Una de las mejores formas de hacer que el modelo responda a preguntas específicas es mejorar el formato del prompt. Como se mencionó anteriormente, un prompot puede combinar instrucciones, contexto e indicadores de entrada y salida para obtener resultados mejorados. Si bien estos componentes no son obligatorios, son una buena práctica, ya que cuanto más específicas sean las instrucciones, mejores serán los resultados que obtendrá. A continuación se muestra un ejemplo siguiendo un prompt más estructurado.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Responde la pregunta basándote en el contexto que aparece a continuación. Mantén la respuesta
|
||||
corta y concisa. Responde "No estoy seguro de la respuesta" si no estás seguro de la respuesta.
|
||||
|
||||
Context: Teplizumab tiene sus raíces en una empresa farmacéutica de Nueva Jersey llamada Ortho
|
||||
Pharmaceutical. Allí, los científicos generaron una versión temprana del anticuerpo, apodado OKT3.
|
||||
Originalmente obtenido de ratones, la molécula era capaz de unirse a la superficie de las células T
|
||||
y limitar su potencial de matar células. En 1986, fue aprobado 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.
|
||||
|
||||
Question: ¿De dónde se obtuvo originalmente el OKT3?
|
||||
|
||||
Answer:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Ratones.
|
||||
```
|
||||
|
||||
Contexto obtenido de [Nature](https://www.nature.com/articles/d41586-023-00400-x).
|
||||
|
||||
---
|
||||
|
||||
## Clasificación de Texto
|
||||
|
||||
|
||||
Hasta ahora, hemos utilizado instrucciones simples para realizar una tarea. Como ingeniero de prompt, deberas mejorar la calidad de las instrucciones que proporcionas. ¡Pero eso no es todo! También descubriras que para casos de uso más difíciles, simplemente proporcionar instrucciones no será suficiente. Aquí es donde debes pensar más en el contexto y en los diferentes elementos que se pueden utilizar en un prompt. Otros elementos que pueden proporcionar son los datos de entrada (`input data`) o ejemplos (`examples`).
|
||||
|
||||
So far, we have used simple instructions to perform a task. As a prompt engineer, you will need to get better at providing better instructions. But that's not all! You will also find that for harder use cases, just providing instructions won't be enough. This is where you need to think more about the context and the different elements you can use in a prompt. Other elements you can provide are `input data` or `examples`.
|
||||
|
||||
Intentemos demostrar esto proporcionando un ejemplo de clasificación de texto.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Clasifique el texto en neutral, negativo o positivo.
|
||||
|
||||
Texto: Creo que la comida estuvo bien.
|
||||
Sentimiento:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Neutral
|
||||
```
|
||||
|
||||
Dimos la instrucción de clasificar el texto y el modelo respondió con `'Neutral'`, que es correcto. No hay nada malo en esto, pero digamos que lo que realmente necesitamos es que el modelo dé la etiqueta en el formato exacto que queremos. En lugar de `Neutral`, queremos que devuelva `neutral`. ¿Cómo lo logramos? Hay diferentes maneras de hacer esto. Nos preocupa la especificidad aquí, por lo que cuanto más información podamos proporcionar al prompt, mejores serán los resultados. Podemos intentar proporcionar ejemplos para especificar el comportamiento correcto. Intentémoslo de nuevo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Clasifique el texto en neutral, negativo o positivo.
|
||||
|
||||
Texto: Creo que las vacaciones están bien.
|
||||
Sentimiento: neutral
|
||||
|
||||
Texto: Creo que la comida estuvo bien.
|
||||
Sentimiento:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
neutral
|
||||
```
|
||||
|
||||
¡Perfecto! Esta vez el modelo devolvió `neutral`, que es la etiqueta específica que estaba buscando. Parece que el ejemplo proporcionado en el prompt ayudó al modelo a ser específico en su salida. Para resaltar por qué a veces la especificidad es importante, echa un vistazo a este ejemplo y detecta el problema:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Clasifique el texto en nutral, negativo o positivo.
|
||||
|
||||
Texto: Creo que las vacaciones están bien.
|
||||
Sentimiento:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
Neutral
|
||||
```
|
||||
|
||||
¿Cuál es el problema aquí?
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Conversación
|
||||
|
||||
Quizás una de las cosas más interesantes que se pueden lograr con la ingenieria de prompt es enseñar al sistema LLM cómo comportarse, cuál es su intención y su identidad. Esto es particularmente útil cuando se construyen sistemas conversacionales como chatbots de atención al cliente.
|
||||
|
||||
Por ejemplo, creemos un sistema conversacional que sea capaz de generar respuestas más técnicas y científicas a preguntas. Observa cómo le estamos diciendo explícitamente cómo comportarse a través de la instrucción. A veces se le llama *role prompting*.
|
||||
|
||||
For instance, let's create a conversational system that's able to generate more technical and scientific responses to questions. Note how we are explicitly telling it how to behave through the instruction. This is sometimes referred to as *role prompting*.
|
||||
|
||||
*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?
|
||||
AI: ¡Saludos! Soy un asistente de investigación de inteligencia artificial. ¿En qué puedo ayudarte hoy?
|
||||
Humano: ¿Puedes contarme sobre la creación de los agujeros negros?
|
||||
AI:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
¡Claro! Los agujeros negros son regiones del espacio-tiempo donde la fuerza gravitacional es tan fuerte que nada, ni siquiera la luz, puede escapar de ella. Se crean cuando una estrella muy masiva muere y su núcleo colapsa sobre sí mismo, formando una singularidad de densidad infinita. La intensa gravedad de la singularidad atrae toda la materia y radiación a su alrededor, creando el agujero negro.
|
||||
```
|
||||
|
||||
¿Nuestro asistente de investigación de inteligencia artificial suena un poco técnico, no? De acuerdo, cambiemos este comportamiento e instruyamos al sistema para que dé respuestas más accesibles.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
La siguiente es una conversación con un asistente de investigación de inteligencia artificial. Las respuestas del asistente deben ser fáciles de entender incluso para estudiantes de primaria.
|
||||
|
||||
Humano: Hola, ¿quién eres?
|
||||
AI: ¡Saludos! Soy un asistente de investigación de inteligencia artificial. ¿En qué puedo ayudarte hoy?
|
||||
Humano: ¿Puedes contarme sobre la creación de los agujeros negros?
|
||||
AI:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
¡Claro! Los agujeros negros se crean cuando una estrella muy masiva se queda sin combustible y colapsa sobre sí misma. La gravedad de la estrella es tan fuerte que nada, ni siquiera la luz, puede escapar de su atracción. Esto crea un punto en el espacio-tiempo con una fuerza gravitatoria intensa llamado agujero negro.
|
||||
```
|
||||
|
||||
Creo que hemos avanzado. Puedes seguir mejorándolo. Estoy seguro de que si agregas más ejemplos puedes obtener resultados aún mejores.
|
||||
|
||||
---
|
||||
|
||||
## Generación de código
|
||||
|
||||
Una aplicación donde los LLM son muy efectivos es en la generación de código. Copilot es un gran ejemplo de esto. Hay una gran cantidad de tareas de generación de código que se pueden realizar con promts ingeniosos. Veamos algunos ejemplos a continuación.
|
||||
|
||||
Primero, intentemos un programa simple que salude al usuario.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
/*
|
||||
Ask the user for their name and say "Hello"
|
||||
*/
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
let name = prompt("What is your name?");
|
||||
console.log(`Hello, ${name}!`);
|
||||
```
|
||||
|
||||
Puedes ver que ni siquiera necesitamos especificar el lenguaje a utilizar.
|
||||
|
||||
Cambiamos de nivel un poco. Quiero mostrarte lo poderosos que pueden ser los LLMs con un poco más de esfuerzo en el diseño de los promts.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
"""
|
||||
Table departments, columns = [DepartmentId, DepartmentName]
|
||||
Table students, columns = [DepartmentId, StudentId, StudentName]
|
||||
Create a MySQL query for all students in the Computer Science Department
|
||||
"""
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
SELECT StudentId, StudentName
|
||||
FROM students
|
||||
WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = 'Computer Science');
|
||||
```
|
||||
|
||||
Esto es muy impresionante. En este caso, proporcionamos datos sobre el esquema de la base de datos y le pedimos que genere una consulta MySQL válida.
|
||||
|
||||
---
|
||||
|
||||
## Razonamiento
|
||||
|
||||
Quizás una de las tareas más difíciles para un LLM hoy en día es aquella que requiere alguna forma de razonamiento. El razonamiento es una de las áreas que más me emociona debido a los tipos de aplicaciones complejas que pueden surgir de los LLM.
|
||||
|
||||
Ha habido algunas mejoras en las tareas que involucran habilidades matemáticas. Dicho esto, es importante señalar que los LLM actuales tienen dificultades para realizar tareas de razonamiento, por lo que esto requiere técnicas más avanzadas de ingeniería de promoción. Cubriremos estas técnicas avanzadas en la próxima guía. Por ahora, cubriremos algunos ejemplos básicos para mostrar las capacidades aritméticas.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
¿Cuánto es 9.000 * 9.000?
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
81.000.000
|
||||
```
|
||||
|
||||
Intentemos algo más difícil.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
|
||||
A:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
No, los números impares en este grupo suman un número impar: 119.
|
||||
```
|
||||
|
||||
¡Eso es incorrecto! Tratemos de mejorar esto mejorando la promoción.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
|
||||
Resuelva dividiendo el problema en pasos. Primero, identifique los números impares, añádalos e indique si el resultado es impar o par.
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Números impares: 15, 5, 13, 7, 1
|
||||
Suma: 41
|
||||
41 es un número impar.
|
||||
```
|
||||
|
||||
¡Mucho mejor, ¿verdad? Por cierto, probé esto un par de veces y el sistema a veces falla. Si proporcionas mejores instrucciones combinadas con ejemplos, podría ayudar a obtener resultados más precisos.
|
||||
|
||||
Continuaremos incluyendo más ejemplos de aplicaciones comunes en esta sección de la guía.
|
||||
|
||||
En la próxima sección, cubriremos conceptos y técnicas más avanzados de ingeniería de prompt para mejorar el rendimiento en todas estas y más tareas difíciles.
|
@ -0,0 +1,11 @@
|
||||
# Configuración del LLM
|
||||
|
||||
Cuando trabajas con prompts, interactúas con el LLM a través de una API o directamente. Puedes configurar algunos parámetros para obtener diferentes resultados para tus prompts.
|
||||
|
||||
**Temperature** - En resumen, cuanto menor sea la temperatura, más deterministas serán los resultados en el sentido de que siempre se elige el siguiente token más probable. Aumentar la temperatura podría llevar a más aleatoriedad y fomentar resultados más diversos o creativos. Básicamente, estamos aumentando los pesos de los otros posibles tokens. En términos de aplicación, es posible que deseemos utilizar un valor de temperatura más bajo para tareas como preguntas y respuestas basadas en hechos para fomentar respuestas más concisas y factuales. Para la generación de poemas u otras tareas creativas, podría ser beneficioso aumentar el valor de la temperatura.
|
||||
|
||||
**Top_p** - De manera similar, con top_p, una técnica de muestreo con temperatura llamada muestreo de núcleo, puedes controlar la determinación del modelo al generar una respuesta. Si buscas respuestas exactas y factuales, mantén este valor bajo. Si buscas respuestas más diversas, aumenta el valor.
|
||||
|
||||
La recomendación general es modificar uno de los dos, no ambos.
|
||||
|
||||
Antes de comenzar con algunos ejemplos básicos, ten en cuenta que tus resultados pueden variar según la versión del LLM que estés utilizando.
|
@ -0,0 +1,122 @@
|
||||
# Consejos generales para diseñar prompts
|
||||
|
||||
Aquí hay algunos consejos para tener en cuenta mientras diseñas tus prompts:
|
||||
|
||||
### Comienza por lo simple
|
||||
|
||||
Al comenzar a diseñar prompts, debes tener en cuenta que es un proceso iterativo que requiere mucha experimentación para obtener resultados óptimos. Usar un playground simple como OpenAI o Cohere es un buen punto de partida.
|
||||
|
||||
Puedes comenzar con prompts simples y agregar más elementos y contexto a medida que apuntas a mejores resultados. La versionización de tu prompt en el camino es vital por esta razón. A medida que leas la guía, verás muchos ejemplos donde la especificidad, simplicidad y concisión a menudo te darán mejores resultados.
|
||||
|
||||
Cuando tienes una tarea grande que involucra muchos sub-tareas diferentes, puedes intentar dividir la tarea en sub-tareas más simples y seguir construyendo a medida que obtienes mejores resultados. Esto evita agregar demasiada complejidad al proceso de diseño de la indicación al principio.
|
||||
|
||||
### La instrucción
|
||||
|
||||
Puedes diseñar prompts efectivos para varias tareas simples usando comandos para indicarle al modelo lo que deseas lograr, como "Escribe", "Clasifica", "Resumen", "Traduce", "Ordena", etc.
|
||||
|
||||
Ten en cuenta que también necesitas experimentar mucho para ver qué funciona mejor. Prueba diferentes instrucciones con diferentes palabras clave, contextos y datos, y observa qué funciona mejor para tu caso de uso y tarea particular. Por lo general, cuanto más específico y relevante sea el contexto para la tarea que estás tratando de realizar, mejor será. Tocaremos la importancia del muestreo y la adición de más contexto en las próximas guías.
|
||||
|
||||
Otros recomiendan que las instrucciones se coloquen al comienzo de la indicación. También se recomienda que se use un separador claro como "###" para separar la instrucción y el contexto.
|
||||
|
||||
Por ejemplo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
### Instrucción ###
|
||||
Traduce el texto a continuación al español:
|
||||
|
||||
Texto: "Hello!"
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
¡Hola!
|
||||
```
|
||||
|
||||
### Especificidad
|
||||
Sé muy específico sobre la tarea que deseas que el modelo realice. Cuanto más descriptiva y detallada sea el prompt, mejores serán los resultados. Esto es particularmente importante cuando tienes un resultado deseado o estilo de generación que estás buscando. No hay tokens o palabras clave específicas que conduzcan a mejores resultados. Es más importante tener un buen formato y un prompt descriptiva. De hecho, proporcionar ejemplos en el prompt es muy efectivo para obtener la salida deseada en formatos específicos.
|
||||
|
||||
Cuando diseñas prompts, también debes tener en cuenta la longitud del prompt ya que hay limitaciones en cuanto a su longitud. Pensar en cuán específico y detallado debes ser es algo a considerar. Incluir demasiados detalles innecesarios no es necesariamente un buen enfoque. Los detalles deben ser relevantes y contribuir a la tarea en cuestión. Esto es algo en lo que necesitarás experimentar mucho. Os animamos a que hagais mucha experimentación e iteración para optimizar los prompts para tus aplicaciones.
|
||||
|
||||
Como ejemplo, intentemos una indicación simple para extraer información específica de un texto.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Extrae los nombres de lugares del siguiente texto.
|
||||
|
||||
Formato deseado:
|
||||
Lugar: <lista_separada_por_comas_de_nombres_de_empresa>
|
||||
|
||||
Input: "Aunque estos avances son alentadores para los investigadores, aún hay mucho misterio.
|
||||
'A menudo tenemos una caja negra entre el cerebro y el efecto que vemos en la periferia', dice
|
||||
Henrique Veiga-Fernandes, un neuroinmunólogo en el Centro Champalimaud para lo Desconocido en Lisboa.
|
||||
'Si queremos usarlo en el contexto terapéutico, necesitamos entender el mecanismo'.
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
Place: Centro Champalimaud para lo Desconocido, Lisboa
|
||||
```
|
||||
|
||||
El texto de entrada se obtiene de [este artículo de Nature](https://www.nature.com/articles/d41586-023-00509-z).
|
||||
|
||||
### Evitar imprecisión
|
||||
|
||||
Dado los consejos anteriores sobre ser detallado y mejorar el formato, es fácil caer en la trampa de querer ser demasiado inteligente sobre los temas y crear descripciones imprecisas. A menudo es mejor ser específico y directo. La analogía aquí es muy similar a la comunicación efectiva: cuanto más directa sea, más efectivo será el mensaje.
|
||||
|
||||
Por ejemplo, podrías estar interesado en aprender el concepto de ingeniería de prompts. Podrías intentar algo como:
|
||||
|
||||
```
|
||||
Explica el concepto de ingeniería de promoción. Mantén la explicación corta, solo unas pocas frases
|
||||
y no seas demasiado descriptivo.
|
||||
```
|
||||
|
||||
No está claro en la instrucción anterior cuántas oraciones utilizar y qué estilo. Es posible que puedas obtener respuestas aceptables con el prompt anterior, pero un prompt que sea muy específico, conciso y directo sería mejor. Algo como:
|
||||
|
||||
```
|
||||
Usa 2-3 oraciones para explicar el concepto de ingeniería de prompt a un estudiante de secundaria.
|
||||
```
|
||||
|
||||
### ¿Hacer o no hacer?
|
||||
|
||||
Otro consejo común al diseñar prompts es evitar decir qué no hacer, sino decir qué hacer en su lugar. Esto fomenta la especificidad y se centra en los detalles que conducen a buenas respuestas del modelo.
|
||||
|
||||
Aquí hay un ejemplo de un chatbot de recomendación de películas que no cumple exactamente lo que no quiero que haga debido a cómo escribí la instrucción, centrado en lo que no hacer.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
El siguiente es un agente que recomienda películas a un cliente.
|
||||
NO PIDA INTERESES. NO PIDA INFORMACIÓN PERSONAL.
|
||||
|
||||
Cliente: Por favor, recomiéndeme una película basada en mis intereses.
|
||||
Agente:
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
Claro, puedo recomendar una película según tus intereses. ¿Qué tipo de película te gustaría ver?
|
||||
¿Prefieres acción, comedia, romance o algo más?
|
||||
```
|
||||
|
||||
Este es un prompt mejor:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
El siguiente es un agente que recomienda películas a un cliente. El agente es responsable de
|
||||
recomendar una película de las más populares a nivel mundial. Debe abstenerse de preguntar a
|
||||
los usuarios por sus preferencias y evitar pedir información personal. Si el agente no tiene
|
||||
una película para recomendar, debe responder "Lo siento, no pude encontrar una película para
|
||||
recomendar hoy".
|
||||
|
||||
Cliente: Por favor, recomiéndeme una película basada en mis intereses.
|
||||
Agente:
|
||||
```
|
||||
|
||||
*Resultado:*
|
||||
```
|
||||
Lo siento, no tengo información sobre tus intereses. Sin embargo, aquí está una lista de las
|
||||
películas más populares a nivel mundial en este momento: [lista de películas]. Espero que
|
||||
encuentres algo que te guste.
|
||||
```
|
||||
|
||||
Algunos de los ejemplos anteriores fueron adoptados del artículo ["Best practices for prompt engineering with OpenAI API"](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api).
|
@ -0,0 +1,9 @@
|
||||
# Modelos
|
||||
|
||||
import { Callout } from 'nextra-theme-docs'
|
||||
|
||||
En esta sección, cubriremos algunos de los modelos de lenguaje más recientes y cómo aplican con éxito las últimas y más avanzadas técnicas de ingeniería de generación de texto. Además, abarcamos las capacidades de estos modelos en una variedad de tareas y configuraciones de generación de texto, como la generación de texto con pocos ejemplos, la generación de texto sin ejemplos y la generación de texto de encadenamiento de pensamiento. Comprender estas capacidades es importante para entender las limitaciones de estos modelos y cómo utilizarlos de manera efectiva.
|
||||
|
||||
<Callout emoji="⚠️">
|
||||
Esta sección está en pleno desarrollo.
|
||||
</Callout>
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"flan": "Flan",
|
||||
"chatgpt": "ChatGPT",
|
||||
"llama": "LLaMA",
|
||||
"gpt-4": "GPT-4",
|
||||
"collection": "Listado de LLMs"
|
||||
}
|
@ -0,0 +1,251 @@
|
||||
# Ingeniería de prompt con ChatGPT
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import CHATGPT1 from '../../img/chatgpt-1.png'
|
||||
import CHATGPTCLASSIC from '../../img/chatgpt-classic.png'
|
||||
|
||||
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.
|
||||
|
||||
<Callout emoji="⚠️">
|
||||
Esta sección está en pleno desarrollo.
|
||||
</Callout>
|
||||
|
||||
Topics:
|
||||
- [Introducción a ChatGPT](#introducción-a-chatgpt)
|
||||
- [Revisando la tarea de conversación](#revisando-la-tarea-de-conversación)
|
||||
- [Conversaciones con ChatGPT](#conversaciones-con-chatgpt)
|
||||
|
||||
---
|
||||
## Introducción a ChatGPT
|
||||
|
||||
ChatGPT es un nuevo modelo [entrenado por OpenAI](https://openai.com/blog/chatgpt) 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í](chat.openai.com) 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](https://openai.com/blog/introducing-chatgpt-and-whisper-apis), 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:
|
||||
|
||||
<Screenshot src={CHATGPT1} alt="CHATGPT1" />
|
||||
|
||||
La llamada formal al API para nuestro ejemplo tendria este aspecto:
|
||||
|
||||
```python
|
||||
import openai
|
||||
|
||||
openai.ChatCompletion.create(
|
||||
model="gpt-3.5-turbo",
|
||||
messages=[
|
||||
{"role": "system", "content": "res 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](https://github.com/openai/openai-python/blob/main/chatml.md) (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:
|
||||
|
||||
<Screenshot src={CHATGPTCLASSIC} alt="CHATGPTCLASSIC" />
|
||||
|
||||
De manera más formal, esta es la llamada a la API (solo he incluido el componente del mensaje de la solicitud):
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
- [Is ChatGPT a Good Sentiment Analyzer? A Preliminary Study](https://arxiv.org/abs/2304.04339) (April 2023)
|
||||
- [A Preliminary Evaluation of ChatGPT for Zero-shot Dialogue Understanding](https://arxiv.org/abs/2304.04256) (April 2023)
|
||||
- [Extractive Summarization via ChatGPT for Faithful Summary Generation](https://arxiv.org/abs/2304.04193) (April 2023)
|
||||
- [What does ChatGPT return about human values? Exploring value bias in ChatGPT using a descriptive value theory](https://arxiv.org/abs/2304.03612) (April 2023)
|
||||
- [On the Evaluations of ChatGPT and Emotion-enhanced Prompting for Mental Health Analysis](https://arxiv.org/abs/2304.03347) (April 2023)
|
||||
- [ChatGPT-Crawler: Find out if ChatGPT really knows what it's talking about](https://arxiv.org/abs/2304.03325) (April 2023)
|
||||
- [Should ChatGPT be Biased? Challenges and Risks of Bias in Large Language Models](https://arxiv.org/abs/2304.03738) (April 2023)
|
||||
- [Synthesis of Mathematical programs from Natural Language Specifications](https://arxiv.org/abs/2304.03287) (April 2023)
|
||||
- [Large language models effectively leverage document-level context for literary translation, but critical errors persist](https://arxiv.org/abs/2304.03245) (April 2023)
|
||||
- [Investigating Chain-of-thought with ChatGPT for Stance Detection on Social Media](https://arxiv.org/abs/2304.03087) (April 2023)
|
||||
- [ChatGPT for Shaping the Future of Dentistry: The Potential of Multi-Modal Large Language Model](https://arxiv.org/abs/2304.03086) (April 2023)
|
||||
- [Can Large Language Models Play Text Games Well? Current State-of-the-Art and Open Questions](https://arxiv.org/abs/2304.02868) (April 2023)
|
||||
- [Human-like Summarization Evaluation with ChatGPT](https://arxiv.org/abs/2304.02554) (April 2023)
|
||||
- [Evaluation of ChatGPT Family of Models for Biomedical Reasoning and Classification](https://arxiv.org/abs/2304.02496) (April 2023)
|
||||
- [Comparative Analysis of CHATGPT and the evolution of language models](https://arxiv.org/abs/2304.02468) (April 2023)
|
||||
- [Unleashing the Power of ChatGPT for Translation: An Empirical Study](https://arxiv.org/abs/2304.02182) (April 2023)
|
||||
- [Geotechnical Parrot Tales (GPT): Overcoming GPT hallucinations with prompt engineering for geotechnical applications](https://arxiv.org/abs/2304.02138) (April 2023)
|
||||
- [Unlocking the Potential of ChatGPT: A Comprehensive Exploration of its Applications, Advantages, Limitations, and Future Directions in Natural Language Processing](https://arxiv.org/abs/2304.02017) (April 2023)
|
||||
- [Summary of ChatGPT/GPT-4 Research and Perspective Towards the Future of Large Language Models](https://arxiv.org/abs/2304.01852) (April 2023)
|
||||
- [Is ChatGPT a Highly Fluent Grammatical Error Correction System? A Comprehensive Evaluation](https://arxiv.org/abs/2304.01746) (April 2023)
|
||||
- [Safety Analysis in the Era of Large Language Models: A Case Study of STPA using ChatGPT](https://arxiv.org/abs/2304.01246) (April 2023)
|
||||
- [Large language models can rate news outlet credibility](https://arxiv.org/abs/2304.00228) (April 2023)
|
||||
- [Can AI Chatbots Pass the Fundamentals of Engineering (FE) and Principles and Practice of Engineering (PE) Structural Exams?](https://arxiv.org/abs/2303.18149) (April 2023)
|
||||
- [Can AI Put Gamma-Ray Astrophysicists Out of a Job?](https://arxiv.org/abs/2303.17853) (March 2023)
|
||||
- [Comparing Abstractive Summaries Generated by ChatGPT to Real Summaries Through Blinded Reviewers and Text Classification Algorithms](https://arxiv.org/abs/2303.17650) (March 2023)
|
||||
- [HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace](https://arxiv.org/abs/2303.17580) (March 2023)
|
||||
- [WavCaps: A ChatGPT-Assisted Weakly-Labelled Audio Captioning Dataset for Audio-Language Multimodal Research](https://arxiv.org/abs/2303.17395) (March 2023)
|
||||
- [How well do Large Language Models perform in Arithmetic tasks?](https://arxiv.org/abs/2304.02015) (March 2023)
|
||||
- [Assessing Cross-Cultural Alignment between ChatGPT and Human Societies: An Empirical Study](https://arxiv.org/abs/2303.17466) (March 2023)
|
||||
- [Yes but.. Can ChatGPT Identify Entities in Historical Documents?](https://arxiv.org/abs/2303.17322) (March 2023)
|
||||
- [Evaluation of ChatGPT for NLP-based Mental Health Applications](https://arxiv.org/abs/2303.15727) (March 2023)
|
||||
- [A Perspectival Mirror of the Elephant: Investigating Language Bias on Google, ChatGPT, Wikipedia, and YouTube](https://arxiv.org/abs/2303.16281) (March 2023)
|
||||
- [ChatGPT or academic scientist? Distinguishing authorship with over 99% accuracy using off-the-shelf machine learning tools](https://arxiv.org/abs/2303.16352) (March 2023)
|
||||
- [Zero-shot Clinical Entity Recognition using ChatGPT](https://arxiv.org/abs/2303.16416) (March 2023)
|
||||
- [ChatGPT is a Knowledgeable but Inexperienced Solver: An Investigation of Commonsense Problem in Large Language Models](https://arxiv.org/abs/2303.16421) (March 2023)
|
||||
- [ChatGPT4PCG Competition: Character-like Level Generation for Science Birds](https://arxiv.org/abs/2303.15662) (March 2023)
|
||||
- [ChatGPT as a Factual Inconsistency Evaluator for Abstractive Text Summarization](https://arxiv.org/abs/2303.15621) (March 2023)
|
||||
- [Chat-REC: Towards Interactive and Explainable LLMs-Augmented Recommender System](https://arxiv.org/abs/2303.14524) (March 2023)
|
||||
- [A comprehensive evaluation of ChatGPT's zero-shot Text-to-SQL capability](https://arxiv.org/abs/2303.13547) (March 2023)
|
||||
- [Towards Making the Most of ChatGPT for Machine Translation](https://arxiv.org/abs/2303.13780) (March 2023)
|
||||
- [Error Analysis Prompting Enables Human-Like Translation Evaluation in Large Language Models: A Case Study on ChatGPT](https://arxiv.org/abs/2303.13809) (March 2023)
|
||||
- [ChatGPT Outperforms Crowd-Workers for Text-Annotation Tasks](https://arxiv.org/pdf/2303.15056v1.pdf) (March 2023)
|
||||
- [ChatGPT or Grammarly? Evaluating ChatGPT on Grammatical Error Correction Benchmark](https://arxiv.org/abs/2303.13648) (March 2023)
|
||||
- [ChatGPT and a New Academic Reality: AI-Written Research Papers and the Ethics of the Large Language Models in Scholarly Publishing](https://arxiv.org/abs/2303.13367) (March 2023)
|
||||
- [Are LLMs the Master of All Trades? : Exploring Domain-Agnostic Reasoning Skills of LLMs](https://arxiv.org/abs/2303.12810) (March 2023)
|
||||
- [Is ChatGPT A Good Keyphrase Generator? A Preliminary Study](https://arxiv.org/abs/2303.13001) (March 2023)
|
||||
- [MM-REACT: Prompting ChatGPT for Multimodal Reasoning and Action](https://arxiv.org/abs/2303.11381) (March 2023)
|
||||
- [Large Language Models Can Be Used to Estimate the Ideologies of Politicians in a Zero-Shot Learning Setting](https://arxiv.org/abs/2303.12057) (March 2023)
|
||||
- [Chinese Intermediate English Learners outdid ChatGPT in deep cohesion: Evidence from English narrative writing](https://arxiv.org/abs/2303.11812) (March 2023)
|
||||
- [A Comprehensive Capability Analysis of GPT-3 and GPT-3.5 Series Models](https://arxiv.org/abs/2303.10420) (March 2023)
|
||||
- [ChatGPT as the Transportation Equity Information Source for Scientific Writing](https://arxiv.org/abs/2303.11158) (March 2023)
|
||||
- [Translating Radiology Reports into Plain Language using ChatGPT and GPT-4 with Prompt Learning: Promising Results, Limitations, and Potential](https://arxiv.org/abs/2303.09038) (March 2023)
|
||||
- [ChatGPT Participates in a Computer Science Exam](https://arxiv.org/abs/2303.09461) (March 2023)
|
||||
- [Consistency Analysis of ChatGPT](https://arxiv.org/abs/2303.06273) (Mar 2023)
|
||||
- [Algorithmic Ghost in the Research Shell: Large Language Models and Academic Knowledge Creation in Management Research](https://arxiv.org/abs/2303.07304) (Mar 2023)
|
||||
- [Large Language Models in the Workplace: A Case Study on Prompt Engineering for Job Type Classification](https://arxiv.org/abs/2303.07142) (March 2023)
|
||||
- [Seeing ChatGPT Through Students' Eyes: An Analysis of TikTok Data](https://arxiv.org/abs/2303.05349) (March 2023)
|
||||
- [Extracting Accurate Materials Data from Research Papers with Conversational Language Models and Prompt Engineering -- Example of ChatGPT](https://arxiv.org/abs/2303.05352) (Mar 2023)
|
||||
- [ChatGPT is on the horizon: Could a large language model be all we need for Intelligent Transportation?](https://arxiv.org/abs/2303.05382) (Mar 2023)
|
||||
- [Making a Computational Attorney](https://arxiv.org/abs/2303.05383) (Mar 2023)
|
||||
- [Does Synthetic Data Generation of LLMs Help Clinical Text Mining?](https://arxiv.org/abs/2303.04360) (Mar 2023)
|
||||
- [MenuCraft: Interactive Menu System Design with Large Language Models](https://arxiv.org/abs/2303.04496) (Mar 2023)
|
||||
- [A Comprehensive Survey of AI-Generated Content (AIGC): A History of Generative AI from GAN to ChatGPT](https://arxiv.org/abs/2303.04226) (Mar 2023)
|
||||
- [Exploring the Feasibility of ChatGPT for Event Extraction](https://arxiv.org/abs/2303.03836)
|
||||
- [ChatGPT: Beginning of an End of Manual Annotation? Use Case of Automatic Genre Identification](https://arxiv.org/abs/2303.03953) (Mar 2023)
|
||||
- [Is ChatGPT a Good NLG Evaluator? A Preliminary Study](https://arxiv.org/abs/2303.04048) (Mar 2023)
|
||||
- [Will Affective Computing Emerge from Foundation Models and General AI? A First Evaluation on ChatGPT](https://arxiv.org/abs/2303.03186) (Mar 2023)
|
||||
- [UZH_CLyp at SemEval-2023 Task 9: Head-First Fine-Tuning and ChatGPT Data Generation for Cross-Lingual Learning in Tweet Intimacy Prediction](https://arxiv.org/abs/2303.01194) (Mar 2023)
|
||||
- [How to format inputs to ChatGPT models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb) (Mar 2023)
|
||||
- [Can ChatGPT Assess Human Personalities? A General Evaluation Framework](https://arxiv.org/abs/2303.01248) (Mar 2023)
|
||||
- [Cross-Lingual Summarization via ChatGPT](https://arxiv.org/abs/2302.14229) (Feb 2023)
|
||||
- [ChatAug: Leveraging ChatGPT for Text Data Augmentation](https://arxiv.org/abs/2302.13007) (Feb 2023)
|
||||
- [Dr ChatGPT, tell me what I want to hear: How prompt knowledge impacts health answer correctness](https://arxiv.org/abs/2302.13793) (Feb 2023)
|
||||
- [An Independent Evaluation of ChatGPT on Mathematical Word Problems (MWP)](https://arxiv.org/abs/2302.13814) (Feb 2023)
|
||||
- [ChatGPT: A Meta-Analysis after 2.5 Months](https://arxiv.org/abs/2302.13795) (Feb 2023)
|
||||
- [Let's have a chat! A Conversation with ChatGPT: Technology, Applications, and Limitations](https://arxiv.org/abs/2302.13817) (Feb 2023)
|
||||
- [Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback](https://arxiv.org/abs/2302.12813) (Feb 2023)
|
||||
- [On the Robustness of ChatGPT: An Adversarial and Out-of-distribution Perspective](https://arxiv.org/abs/2302.12095) (Feb 2023)
|
||||
- [How Generative AI models such as ChatGPT can be (Mis)Used in SPC Practice, Education, and Research? An Exploratory Study](https://arxiv.org/abs/2302.10916) (Feb 2023)
|
||||
- [Can ChatGPT Understand Too? A Comparative Study on ChatGPT and Fine-tuned BERT](https://arxiv.org/abs/2302.10198) (Feb 2023)
|
||||
- [A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT](https://arxiv.org/abs/2302.11382) (Feb 2023)
|
||||
- [Zero-Shot Information Extraction via Chatting with ChatGPT](https://arxiv.org/abs/2302.10205) (Feb 2023)
|
||||
- [ChatGPT: Jack of all trades, master of none](https://arxiv.org/abs/2302.10724) (Feb 2023)
|
||||
- [A Pilot Evaluation of ChatGPT and DALL-E 2 on Decision Making and Spatial Reasoning](https://arxiv.org/abs/2302.09068) (Feb 2023)
|
||||
- [Netizens, Academicians, and Information Professionals' Opinions About AI With Special Reference To ChatGPT](https://arxiv.org/abs/2302.07136) (Feb 2023)
|
||||
- [Linguistic ambiguity analysis in ChatGPT](https://arxiv.org/abs/2302.06426) (Feb 2023)
|
||||
- [ChatGPT versus Traditional Question Answering for Knowledge Graphs: Current Status and Future Directions Towards Knowledge Graph Chatbots](https://arxiv.org/abs/2302.06466) (Feb 2023)
|
||||
- [What ChatGPT and generative AI mean for science](https://www.nature.com/articles/d41586-023-00340-6) (Feb 2023)
|
||||
- [Applying BERT and ChatGPT for Sentiment Analysis of Lyme Disease in Scientific Literature](https://arxiv.org/abs/2302.06474) (Feb 2023)
|
||||
- [Exploring AI Ethics of ChatGPT: A Diagnostic Analysis](https://arxiv.org/abs/2301.12867) (Jan 2023)
|
||||
- [ChatGPT for Good? On Opportunities and Challenges of Large Language Models for Education](https://www.edu.sot.tum.de/fileadmin/w00bed/hctl/_my_direct_uploads/ChatGPT_for_Good_.pdf) (Jan 2023)
|
||||
- [The political ideology of conversational AI: Converging evidence on ChatGPT's pro-environmental, left-libertarian orientation](https://arxiv.org/abs/2301.01768) (Jan 2023)
|
||||
- [Techniques to improve reliability - OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/techniques_to_improve_reliability.md)
|
||||
- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts)
|
||||
- [Introducing ChatGPT](https://openai.com/blog/chatgpt) (Nov 2022)
|
@ -0,0 +1,84 @@
|
||||
# Scaling Instruction-Finetuned Language Models
|
||||
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import FLAN1 from '../../img/flan-1.png'
|
||||
import FLAN2 from '../../img/flan-2.png'
|
||||
import FLAN3 from '../../img/flan-3.png'
|
||||
import FLAN4 from '../../img/flan-4.png'
|
||||
import FLAN5 from '../../img/flan-5.png'
|
||||
import FLAN6 from '../../img/flan-6.png'
|
||||
import FLAN7 from '../../img/flan-7.png'
|
||||
import FLAN8 from '../../img/flan-8.png'
|
||||
import FLAN9 from '../../img/flan-9.png'
|
||||
import FLAN10 from '../../img/flan-10.png'
|
||||
import FLAN11 from '../../img/flan-11.png'
|
||||
|
||||
## ¿Qué hay de nuevo?
|
||||
|
||||
<Screenshot src={FLAN1} alt="FLAN1" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
|
||||
Este documento explora los beneficios del escalado del ajuste de instrucciones ([instruction finetuning](https://arxiv.org/pdf/2109.01652.pdf)) y cómo mejora el rendimiento en una variedad de modelos (PaLM, T5), configuraciones de prompts (zero-shot, few-shot, CoT) y referencias (MMLU, TyDiQA). Esto se explora con los siguientes aspectos: escalar el número de tareas (1,8K tareas), escalar el tamaño del modelo y ajustar los datos en la cadena de pensamiento (se usaron 9 conjuntos de datos).
|
||||
|
||||
**Procedimiento de finetuning:**
|
||||
- 1.8K tareas se formularon como instrucciones y se usaron para ajustar el modelo
|
||||
- Se utilizan tanto con como sin ejemplos, y con y sin CoT
|
||||
|
||||
Se muestran las tareas de finetuning y las tareas retenidas a continuación:
|
||||
|
||||
<Screenshot src={FLAN11} alt="FLAN11" />
|
||||
|
||||
## Capacidades y resultados clave
|
||||
|
||||
- El ajuste de instrucciones escala bien con el número de tareas y el tamaño del modelo; esto sugiere la necesidad de escalar el número de tareas y el tamaño del modelo aún más
|
||||
- Agregar conjuntos de datos CoT en el finetuning permite un buen rendimiento en tareas de razonamiento
|
||||
- Flan-PaLM tiene mejores habilidades multilingües; mejora del 14.9% en TyDiQA de una sola pasada; mejora del 8.1% en razonamiento aritmético en idiomas subrepresentados
|
||||
- Plan-PaLM también tiene un buen rendimiento en preguntas de generación abierta, lo que es un buen indicador de una mejor usabilidad
|
||||
- Mejora el rendimiento en referencias de IA responsable (RAI)
|
||||
- Los modelos de ajuste de instrucciones de Flan-T5 demuestran fuertes capacidades de few-shot y superan a los puntos de control públicos como T5
|
||||
|
||||
**Los resultados al escalar el número de tareas de ajuste y el tamaño del modelo:** se espera que la escalabilidad tanto del tamaño del modelo como del número de tareas de ajuste continúe mejorando el rendimiento, aunque la escalabilidad del número de tareas tiene retornos disminuidos.
|
||||
|
||||
<Screenshot src={FLAN2} alt="FLAN2" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
**Resultados al ajustar con datos no-CoT y CoT:** El ajuste conjunto con datos no-CoT y CoT mejora el rendimiento en ambas evaluaciones, en comparación con el ajuste en solo uno u otro.
|
||||
|
||||
<Screenshot src={FLAN3} alt="FLAN3" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
Además, la autoconsistencia combinada con CoT logra resultados de estado del arte en varios benchmarks. CoT + autoconsistencia también mejora significativamente los resultados en benchmarks que involucran problemas matemáticos (por ejemplo, MGSM, GSM8K).
|
||||
|
||||
<Screenshot src={FLAN4} alt="FLAN4" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
El ajuste de CoT desbloquea el razonamiento sin ayuda (zero-shot), activado por la frase "pensemos paso a paso", en tareas de BIG-Bench. En general, Flan-PaLM CoT sin ayuda supera en rendimiento a PaLM CoT sin ajuste.
|
||||
|
||||
<Screenshot src={FLAN6} alt="FLAN6" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
A continuación se presentan algunas demostraciones de CoT sin ayuda para PaLM y Flan-PaLM en tareas no vistas.
|
||||
|
||||
<Screenshot src={FLAN5} alt="FLAN5" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
A continuación se presentan más ejemplos de prompts zero-shot. Muestra cómo el modelo PaLM tiene dificultades con las repeticiones y no responde a las instrucciones en el ajuste sin ayuda, mientras que Flan-PaLM puede desempeñarse bien. Los ejemplos con pocos ejemplos pueden mitigar estos errores.
|
||||
|
||||
|
||||
<Screenshot src={FLAN7} alt="FLAN7" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
A continuación se presentan algunos ejemplos que demuestran las capacidades sin ayuda (zero-shot) del modelo Flan-PaLM en varios tipos diferentes de preguntas abiertas complejas:
|
||||
|
||||
<Screenshot src={FLAN8} alt="FLAN8" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
|
||||
<Screenshot src={FLAN9} alt="FLAN9" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
<Screenshot src={FLAN10} alt="FLAN10" />
|
||||
Fuente de la imagen: [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416)
|
||||
|
||||
Puedes probar [los modelos Flan-T5 en el Hugging Face Hub](https://huggingface.co/google/flan-t5-xxl).
|
@ -0,0 +1,42 @@
|
||||
## LLaMA: Open and Efficient Foundation Language Models
|
||||
|
||||
<Callout emoji="⚠️">
|
||||
Esta sección está en pleno desarrollo.
|
||||
</Callout>
|
||||
|
||||
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import LLAMA1 from '../../img/llama-1.png'
|
||||
|
||||
|
||||
## ¿Qué hay de nuevo?
|
||||
|
||||
Este paper presenta una colección de modelos de lenguaje fundamentales que van desde 7B hasta 65B de parámetros.
|
||||
|
||||
Los modelos están entrenados con trillones de tokens con conjuntos de datos disponibles públicamente.
|
||||
|
||||
El trabajo de [(Hoffman et al. 2022)](https://arxiv.org/abs/2203.15556) muestra que, dado un presupuesto de computación, los modelos más pequeños entrenados con mucha más datos pueden lograr un mejor rendimiento que los modelos más grandes. Este trabajo recomienda entrenar modelos de 10B con 200B tokens. Sin embargo, el artículo de LLaMA encuentra que el rendimiento de un modelo de 7B sigue mejorando incluso después de 1T de tokens.
|
||||
|
||||
<Screenshot src={LLAMA1} alt="LLAMA1" />
|
||||
|
||||
Este trabajo se centra en entrenar modelos (LLaMA) que logren el mejor rendimiento posible en varios presupuestos de inferencia, mediante el entrenamiento de más tokens.
|
||||
|
||||
|
||||
## Capacidades y resultados clave
|
||||
|
||||
En general, LLaMA-13B supera a GPT-3(175B) en muchos puntos de referencia a pesar de ser 10 veces más pequeño y posible de ejecutar en una sola GPU. LLaMA 65B es competitivo con modelos como Chinchilla-70B y PaLM-540B.
|
||||
|
||||
*Paper:* [LLaMA: Open and Efficient Foundation Language Models](https://arxiv.org/abs/2302.13971)
|
||||
|
||||
*Code:* https://github.com/facebookresearch/llama
|
||||
|
||||
## Referencias
|
||||
|
||||
- [Koala: A Dialogue Model for Academic Research](https://bair.berkeley.edu/blog/2023/04/03/koala/) (April 2023)
|
||||
- [Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data](https://arxiv.org/abs/2304.01196) (April 2023)
|
||||
- [Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality](https://vicuna.lmsys.org/) (March 2023)
|
||||
- [LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention](https://arxiv.org/abs/2303.16199) (March 2023)
|
||||
- [GPT4All](https://github.com/nomic-ai/gpt4all) (March 2023)
|
||||
- [ChatDoctor: A Medical Chat Model Fine-tuned on LLaMA Model using Medical Domain Knowledge](https://arxiv.org/abs/2303.14070) (March 2023)
|
||||
- [Stanford Alpaca](https://github.com/tatsu-lab/stanford_alpaca) (March 2023)
|
@ -0,0 +1,11 @@
|
||||
# Notebooks de ingeniería del prompt
|
||||
|
||||
Contiene una colección de notebooks que hemos diseñado para ayudarte a empezar con la ingeniería de prompts. ¡Pronto se añadirán más!
|
||||
|
||||
| Description | Notebook |
|
||||
| :------------ | :---------: |
|
||||
|Aprende cómo realizar muchos tipos diferentes de tareas comunes utilizando las bibliotecas `openai` y `LangChain`.|[Getting Started with Prompt Engineering](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-lecture.ipynb)|
|
||||
|Aprende cómo usar código como razonamiento para resolver tareas comunes utilizando el intérprete de Python en combinación con el modelo de lenguaje.|[Program-Aided Language Model](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-pal.ipynb)|
|
||||
|Aprende más sobre cómo hacer llamadas a las APIs de ChatGPT utilizando la biblioteca `openai`. |[ChatGPT API Intro](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-chatgpt-intro.ipynb)|
|
||||
|Aprende cómo usar las características de ChatGPT utilizando la biblioteca `LangChain`.|[ChatGPT API with LangChain](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-chatgpt-langchain.ipynb)|
|
||||
|Aprende sobre la ingeniería de prompts adversarios e incluye medidas defensivas.|[Adversarial Prompt Engineering](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-chatgpt-adversarial.ipynb)|
|
@ -0,0 +1,192 @@
|
||||
# Papers
|
||||
|
||||
A continuación se presentan los últimos artículos (ordenados por fecha de publicación) sobre ingeniería de prompts. Actualizamos esto diariamente y siempre hay nuevos artículos disponibles. Incorporamos resúmenes de estos artículos en las guías mencionadas anteriormente cada semana.
|
||||
|
||||
## Descripciones generales
|
||||
|
||||
- [A Bibliometric Review of Large Language Models Research from 2017 to 2023](https://arxiv.org/abs/2304.02020) (April 2023)
|
||||
- [A Survey of Large Language Models](https://arxiv.org/abs/2303.18223) (April 2023)
|
||||
- [Nature Language Reasoning, A Survey](https://arxiv.org/abs/2303.14725) (Mar 2023)
|
||||
- [Augmented Language Models: a Survey](https://arxiv.org/abs/2302.07842) (Feb 2023)
|
||||
- [A Survey for In-context Learning](https://arxiv.org/abs/2301.00234) (Dec 2022)
|
||||
- [Towards Reasoning in Large Language Models: A Survey](https://arxiv.org/abs/2212.10403) (Dec 2022)
|
||||
- [Reasoning with Language Model Prompting: A Survey](https://arxiv.org/abs/2212.09597) (Dec 2022)
|
||||
- [Emergent Abilities of Large Language Models](https://arxiv.org/abs/2206.07682) (Jun 2022)
|
||||
- [A Taxonomy of Prompt Modifiers for Text-To-Image Generation](https://arxiv.org/abs/2204.13988) (Apr 2022)
|
||||
- [Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing](https://arxiv.org/abs/2107.13586) (Jul 2021)
|
||||
|
||||
## Enfoques
|
||||
|
||||
- [Why think step-by-step? Reasoning emerges from the locality of experience](https://arxiv.org/abs/2304.03843) (April 2023)
|
||||
- [Revisiting Automated Prompting: Are We Actually Doing Better?](https://arxiv.org/abs/2304.03609) (April 2023)
|
||||
- [REFINER: Reasoning Feedback on Intermediate Representations](https://arxiv.org/abs/2304.01904) (April 2023)
|
||||
- [Reflexion: an autonomous agent with dynamic memory and self-reflection](https://arxiv.org/abs/2303.11366) (March 2023)
|
||||
- [CAMEL: Communicative Agents for "Mind" Exploration of Large Scale Language Model Society](https://arxiv.org/abs/2303.17760) (Mar 2023)
|
||||
- [Self-Refine: Iterative Refinement with Self-Feedback](https://arxiv.org/abs/2303.17651v1) (Mar 2023)
|
||||
- [kNN Prompting: Beyond-Context Learning with Calibration-Free Nearest Neighbor Inference](https://arxiv.org/abs/2303.13824) (Mar 2023)
|
||||
- [Visual-Language Prompt Tuning with Knowledge-guided Context Optimization](https://arxiv.org/abs/2303.13283) (Mar 2023)
|
||||
- [Fairness-guided Few-shot Prompting for Large Language Models](https://arxiv.org/abs/2303.13217) (Mar 2023)
|
||||
- [Context-faithful Prompting for Large Language Models](https://arxiv.org/abs/2303.11315) (Mar 2023)
|
||||
- [Is Prompt All You Need? No. A Comprehensive and Broader View of Instruction Learning](https://arxiv.org/abs/2303.10475) (Mar 2023)
|
||||
- [UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation](https://arxiv.org/abs/2303.08518) (Mar 2023)
|
||||
- [Model-tuning Via Prompts Makes NLP Models Adversarially Robust](https://arxiv.org/abs/2303.07320) (Mar 2023)
|
||||
- [Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer](https://arxiv.org/abs/2303.03922) (March 2023)
|
||||
- [CoTEVer: Chain of Thought Prompting Annotation Toolkit for Explanation Verification](https://arxiv.org/abs/2303.03628) (March 2023)
|
||||
- [Larger language models do in-context learning differently](https://arxiv.org/abs/2303.03846) (March 2023)
|
||||
- [OpenICL: An Open-Source Framework for In-context Learning](https://arxiv.org/abs/2303.02913) (March 2023)
|
||||
- [Dynamic Prompting: A Unified Framework for Prompt Tuning](https://arxiv.org/abs/2303.02909) (March 2023)
|
||||
- [Multitask Prompt Tuning Enables Parameter-Efficient Transfer Learning](https://arxiv.org/abs/2303.02861) (March 2023)
|
||||
- [Effectiveness of Data Augmentation for Prefix Tuning with Limited Data](https://arxiv.org/abs/2303.02577) (March 2023)
|
||||
- [Mixture of Soft Prompts for Controllable Data Generation](https://arxiv.org/abs/2303.01580) (March 2023)
|
||||
- [Prompt, Generate, then Cache: Cascade of Foundation Models makes Strong Few-shot Learners](https://arxiv.org/abs/2303.02151) (March 2023)
|
||||
- [How Robust is GPT-3.5 to Predecessors? A Comprehensive Study on Language Understanding Tasks](https://arxiv.org/abs/2303.00293) (March 2023)
|
||||
- [Can ChatGPT Understand Too? A Comparative Study on ChatGPT and Fine-tuned BERT](https://arxiv.org/pdf/2302.10198.pdf) (Feb 2023)
|
||||
- [EvoPrompting: Language Models for Code-Level Neural Architecture Search](https://arxiv.org/abs/2302.14838) (Feb 2023)
|
||||
- [In-Context Instruction Learning](https://arxiv.org/abs/2302.14691) (Feb 2023)
|
||||
- [Chain of Hindsight Aligns Language Models with Feedback](https://arxiv.org/abs/2302.02676) (Feb 2023)
|
||||
- [Language Is Not All You Need: Aligning Perception with Language Models](https://arxiv.org/abs/2302.14045) (Feb 2023)
|
||||
- [Automatic Prompt Augmentation and Selection with Chain-of-Thought from Labeled Data](https://arxiv.org/abs/2302.12822) (Feb 2023)
|
||||
- [Active Prompting with Chain-of-Thought for Large Language Models](https://arxiv.org/abs/2302.12246) (Feb 2023)
|
||||
- [More than you've asked for: A Comprehensive Analysis of Novel Prompt Injection Threats to Application-Integrated Large Language Models](https://arxiv.org/abs/2302.12173) (Feb 2023)
|
||||
- [A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT](https://arxiv.org/abs/2302.11382) (Feb 2023)
|
||||
- [Guiding Large Language Models via Directional Stimulus Prompting](https://arxiv.org/abs/2302.11520) (Feb 2023)
|
||||
- [How Does In-Context Learning Help Prompt Tuning?](https://arxiv.org/abs/2302.11521) (Feb 2023)
|
||||
- [Scalable Prompt Generation for Semi-supervised Learning with Language Models](https://arxiv.org/abs/2302.09236) (Feb 2023)
|
||||
- [Bounding the Capabilities of Large Language Models in Open Text Generation with Prompt Constraints](https://arxiv.org/abs/2302.09185) (Feb 2023)
|
||||
- [À-la-carte Prompt Tuning (APT): Combining Distinct Data Via Composable Prompting](https://arxiv.org/abs/2302.07994) (Feb 2023)
|
||||
- [GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks](https://arxiv.org/abs/2302.08043) (Feb 2023)
|
||||
- [The Capacity for Moral Self-Correction in Large Language Models](https://arxiv.org/abs/2302.07459) (Feb 2023)
|
||||
- [SwitchPrompt: Learning Domain-Specific Gated Soft Prompts for Classification in Low-Resource Domains](https://arxiv.org/abs/2302.06868) (Feb 2023)
|
||||
- [Evaluating the Robustness of Discrete Prompts](https://arxiv.org/abs/2302.05619) (Feb 2023)
|
||||
- [Compositional Exemplars for In-context Learning](https://arxiv.org/abs/2302.05698) (Feb 2023)
|
||||
- [Hard Prompts Made Easy: Gradient-Based Discrete Optimization for Prompt Tuning and Discovery](https://arxiv.org/abs/2302.03668) (Feb 2023)
|
||||
- [Multimodal Chain-of-Thought Reasoning in Language Models](https://arxiv.org/abs/2302.00923) (Feb 2023)
|
||||
- [Large Language Models Can Be Easily Distracted by Irrelevant Context](https://arxiv.org/abs/2302.00093) (Feb 2023)
|
||||
- [Synthetic Prompting: Generating Chain-of-Thought Demonstrations for Large Language Models](https://arxiv.org/abs/2302.00618) (Feb 2023)
|
||||
- [Progressive Prompts: Continual Learning for Language Models](https://arxiv.org/abs/2301.12314) (Jan 2023)
|
||||
- [Batch Prompting: Efficient Inference with LLM APIs](https://arxiv.org/abs/2301.08721) (Jan 2023)
|
||||
- [Demonstrate-Search-Predict: Composing retrieval and language models for knowledge-intensive NLP](https://arxiv.org/abs/2212.14024) (Dec 2022)
|
||||
- [On Second Thought, Let's Not Think Step by Step! Bias and Toxicity in Zero-Shot Reasoning](https://arxiv.org/abs/2212.08061) (Dec 2022)
|
||||
- [Constitutional AI: Harmlessness from AI Feedback](https://arxiv.org/abs/2212.08073) (Dec 2022)
|
||||
- [Successive Prompting for Decomposing Complex Questions](https://arxiv.org/abs/2212.04092) (Dec 2022)
|
||||
- [Large Language Models are reasoners with Self-Verification](https://arxiv.org/abs/2212.09561v1) (Dec 2022)
|
||||
- [Discovering Language Model Behaviors with Model-Written Evaluations](https://arxiv.org/abs/2212.09251) (Dec 2022)
|
||||
- [Structured Prompting: Scaling In-Context Learning to 1,000 Examples](https://arxiv.org/abs/2212.06713) (Dec 2022)
|
||||
- [PAL: Program-aided Language Models](https://arxiv.org/abs/2211.10435) (Nov 2022)
|
||||
- [Large Language Models Are Human-Level Prompt Engineers](https://arxiv.org/abs/2211.01910) (Nov 2022)
|
||||
- [Ignore Previous Prompt: Attack Techniques For Language Models](https://arxiv.org/abs/2211.09527) (Nov 2022)
|
||||
- [Machine Generated Text: A Comprehensive Survey of Threat Models and Detection Methods](https://arxiv.org/abs/2210.07321) (Nov 2022)
|
||||
- [Teaching Algorithmic Reasoning via In-context Learning](https://arxiv.org/abs/2211.09066) (Nov 2022)
|
||||
- [Enhancing Self-Consistency and Performance of Pre-Trained Language Models through Natural Language Inference](https://arxiv.org/abs/2211.11875) (Nov 2022)
|
||||
- [Ask Me Anything: A simple strategy for prompting language models](https://paperswithcode.com/paper/ask-me-anything-a-simple-strategy-for) (Oct 2022)
|
||||
- [Recitation-Augmented Language Models](https://arxiv.org/abs/2210.01296) (Oct 2022)
|
||||
- [ReAct: Synergizing Reasoning and Acting in Language Models](https://arxiv.org/abs/2210.03629) (Oct 2022)
|
||||
- [Prompting GPT-3 To Be Reliable](https://arxiv.org/abs/2210.09150) (Oct 2022)
|
||||
- [Decomposed Prompting: A Modular Approach for Solving Complex Tasks](https://arxiv.org/abs/2210.02406) (Oct 2022)
|
||||
- [Language Models Are Greedy Reasoners: A Systematic Formal Analysis of Chain-of-Thought](https://arxiv.org/abs/2210.01240v3) (Oct 2022)
|
||||
- [Evaluating the Susceptibility of Pre-Trained Language Models via Handcrafted Adversarial Examples](https://arxiv.org/abs/2209.02128) (Sep 2022)
|
||||
- [Dynamic Prompt Learning via Policy Gradient for Semi-structured Mathematical Reasoning](https://arxiv.org/abs/2209.14610) (Sep 2022)
|
||||
- [Promptagator: Few-shot Dense Retrieval From 8 Examples](https://arxiv.org/abs/2209.11755) (Sep 2022)
|
||||
- [Atlas: Few-shot Learning with Retrieval Augmented Language Models](https://arxiv.org/abs/2208.03299) (Nov 2022)
|
||||
- [DocPrompting: Generating Code by Retrieving the Docs](https://arxiv.org/abs/2207.05987) (July 2022)
|
||||
- [On the Advance of Making Language Models Better Reasoners](https://arxiv.org/abs/2206.02336) (June 2022)
|
||||
- [Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916) (May 2022)
|
||||
- [Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations](https://arxiv.org/abs/2205.11822) (May 2022)
|
||||
- [MRKL Systems: A modular, neuro-symbolic architecture that combines large language models, external knowledge sources and discrete reasoning](https://arxiv.org/abs/2205.00445) (May 2022)
|
||||
- [PPT: Pre-trained Prompt Tuning for Few-shot Learning](https://aclanthology.org/2022.acl-long.576/) (Mqy 2022)
|
||||
- [Toxicity Detection with Generative Prompt-based Inference](https://arxiv.org/abs/2205.12390) (May 2022)
|
||||
- [Learning to Transfer Prompts for Text Generation](https://arxiv.org/abs/2205.01543) (May 2022)
|
||||
- [The Unreliability of Explanations in Few-shot Prompting for Textual Reasoning](https://arxiv.org/abs/2205.03401) (May 2022)
|
||||
- [A Taxonomy of Prompt Modifiers for Text-To-Image Generation](https://arxiv.org/abs/2204.13988) (Apr 2022)
|
||||
- [PromptChainer: Chaining Large Language Model Prompts through Visual Programming](https://arxiv.org/abs/2203.06566) (Mar 2022)
|
||||
- [Self-Consistency Improves Chain of Thought Reasoning in Language Models](https://arxiv.org/abs/2203.11171) (March 2022)
|
||||
- [Training language models to follow instructions with human feedback](https://arxiv.org/abs/2203.02155)
|
||||
- [Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?](https://arxiv.org/abs/2202.12837) (Feb 2022)
|
||||
- [Chain of Thought Prompting Elicits Reasoning in Large Language Models](https://arxiv.org/abs/2201.11903) (Jan 2022)
|
||||
- [Show Your Work: Scratchpads for Intermediate Computation with Language Models](https://arxiv.org/abs/2112.00114) (Nov 2021)
|
||||
- [AI Chains: Transparent and Controllable Human-AI Interaction by Chaining Large Language Model Prompts](https://arxiv.org/abs/2110.01691) (Oct 2021)
|
||||
- [Generated Knowledge Prompting for Commonsense Reasoning](https://arxiv.org/abs/2110.08387) (Oct 2021)
|
||||
- [Multitask Prompted Training Enables Zero-Shot Task Generalization](https://arxiv.org/abs/2110.08207) (Oct 2021)
|
||||
- [Reframing Instructional Prompts to GPTk's Language](https://arxiv.org/abs/2109.07830) (Sep 2021)
|
||||
- [Design Guidelines for Prompt Engineering Text-to-Image Generative Models](https://arxiv.org/abs/2109.06977) (Sep 2021)
|
||||
- [Making Pre-trained Language Models Better Few-shot Learners](https://aclanthology.org/2021.acl-long.295) (Aug 2021)
|
||||
- [Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity](https://arxiv.org/abs/2104.08786) (April 2021)
|
||||
- [BERTese: Learning to Speak to BERT](https://aclanthology.org/2021.eacl-main.316) (April 2021)
|
||||
- [The Power of Scale for Parameter-Efficient Prompt Tuning](https://arxiv.org/abs/2104.08691) (April 2021)
|
||||
- [Prompt Programming for Large Language Models: Beyond the Few-Shot Paradigm](https://arxiv.org/abs/2102.07350) (Feb 2021)
|
||||
- [Calibrate Before Use: Improving Few-Shot Performance of Language Models](https://arxiv.org/abs/2102.09690) (Feb 2021)
|
||||
- [Prefix-Tuning: Optimizing Continuous Prompts for Generation](https://arxiv.org/abs/2101.00190) (Jan 2021)
|
||||
- [Learning to Generate Task-Specific Adapters from Task Description](https://arxiv.org/abs/2101.00420) (Jan 2021)
|
||||
- [Making Pre-trained Language Models Better Few-shot Learners](https://arxiv.org/abs/2012.15723) (Dec 2020)
|
||||
- [Learning from Task Descriptions](https://aclanthology.org/2020.emnlp-main.105/) (Nov 2020)
|
||||
- [AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts](https://arxiv.org/abs/2010.15980) (Oct 2020)
|
||||
- [Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165) (May 2020)
|
||||
- [How Can We Know What Language Models Know?](https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00324/96460/How-Can-We-Know-What-Language-Models-Know) (July 2020)
|
||||
- [Scaling Laws for Neural Language Models](https://arxiv.org/abs/2001.08361) (Jan 2020)
|
||||
|
||||
## Aplicaciones
|
||||
|
||||
- [Automated Reading Passage Generation with OpenAI's Large Language Model](https://arxiv.org/abs/2304.04616) (April 2023)
|
||||
- [WebBrain: Learning to Generate Factually Correct Articles for Queries by Grounding on Large Web Corpus](https://arxiv.org/abs/2304.04358) (April 2023)
|
||||
- [Prompt Pre-Training with Twenty-Thousand Classes for Open-Vocabulary Visual Recognition](https://arxiv.org/abs/2304.04704) (April 2023)
|
||||
- [GPT detectors are biased against non-native English writers](https://arxiv.org/abs/2304.02819) (April 2023)
|
||||
- [Zero-Shot Next-Item Recommendation using Large Pretrained Language Models](https://arxiv.org/abs/2304.03153) (April 2023)
|
||||
- [Large Language Models as Master Key: Unlocking the Secrets of Materials Science with GPT](https://arxiv.org/abs/2304.02213) (April 2023)
|
||||
- [Efficiently Aligned Cross-Lingual Transfer Learning for Conversational Tasks using Prompt-Tuning](https://arxiv.org/abs/2304.01295) (April 2023)
|
||||
- [Better Language Models of Code through Self-Improvement](https://arxiv.org/abs/2304.01228) (April 2023)
|
||||
- [PromptORE -- A Novel Approach Towards Fully Unsupervised Relation Extraction](https://arxiv.org/abs/2304.01209) (April)
|
||||
- [Assessing Language Model Deployment with Risk Cards]() (April 2023)
|
||||
- [Enhancing Large Language Models with Climate Resources](https://arxiv.org/abs/2304.00116) (March 2023)
|
||||
- [BloombergGPT: A Large Language Model for Finance](https://arxiv.org/abs/2303.17564) (March 2023)
|
||||
- [Medical Intervention Duration Estimation Using Language-enhanced Transformer Encoder with Medical Prompts](https://arxiv.org/abs/2303.17408) (March 2023)
|
||||
- [Soft-prompt tuning to predict lung cancer using primary care free-text Dutch medical notes](https://arxiv.org/abs/2303.15846) (March 2023)
|
||||
- [TaskMatrix.AI: Completing Tasks by Connecting Foundation Models with Millions of APIs](https://arxiv.org/abs/2303.16434) (March 2023)
|
||||
- [Larger Probes Tell a Different Story: Extending Psycholinguistic Datasets Via In-Context Learning](https://arxiv.org/abs/2303.16445) (March 2023)
|
||||
- [Linguistically Informed ChatGPT Prompts to Enhance Japanese-Chinese Machine Translation: A Case Study on Attributive Clauses](https://arxiv.org/abs/2303.15587) (March 2023)
|
||||
- [Knowledge-augmented Frame Semantic Parsing with Hybrid Prompt-tuning](https://arxiv.org/abs/2303.14375) (March 2023)
|
||||
- [Debiasing Scores and Prompts of 2D Diffusion for Robust Text-to-3D Generation](https://arxiv.org/abs/2303.15413) (March 2023)
|
||||
- [Zero-shot Model Diagnosis](https://arxiv.org/abs/2303.15441#) (March 2023)
|
||||
- [Prompting Large Language Models to Generate Code-Mixed Texts: The Case of South East Asian Languages](https://arxiv.org/abs/2303.13592) (March 2023)
|
||||
- [SPeC: A Soft Prompt-Based Calibration on Mitigating Performance Variability in Clinical Notes Summarization](https://arxiv.org/abs/2303.13035) (March 2023)
|
||||
- [Large Language Models and Simple, Stupid Bugs](https://arxiv.org/abs/2303.11455) (March 2023)
|
||||
- [Can Generative Pre-trained Transformers (GPT) Pass Assessments in Higher Education Programming Courses?](https://arxiv.org/abs/2303.09325) (Mar 2023)
|
||||
- [SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models](https://arxiv.org/abs/2303.08896) (Mar 2023)
|
||||
- [Large Language Models in the Workplace: A Case Study on Prompt Engineering for Job Type Classification](https://arxiv.org/abs/2303.07142) (March 2023)
|
||||
- [ICL-D3IE: In-Context Learning with Diverse Demonstrations Updating for Document Information Extraction](https://arxiv.org/abs/2303.05063) (March 2023)
|
||||
- [MathPrompter: Mathematical Reasoning using Large Language Models](https://arxiv.org/abs/2303.05398) (March 2023)
|
||||
- [Prompt-Based Learning for Thread Structure Prediction in Cybersecurity Forums](https://arxiv.org/abs/2303.05400) (March 2023)
|
||||
- [Choice Over Control: How Users Write with Large Language Models using Diegetic and Non-Diegetic Prompting](https://arxiv.org/abs/2303.03199) (March 2023)
|
||||
- [Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering](https://arxiv.org/abs/2303.01903) (March 2023)
|
||||
- [Soft Prompt Guided Joint Learning for Cross-Domain Sentiment Analysis](https://arxiv.org/abs/2303.00815) (March 2023)
|
||||
- [SpeechPrompt v2: Prompt Tuning for Speech Classification Tasks](https://arxiv.org/abs/2303.00733) (March 2023)
|
||||
- [Goal Driven Discovery of Distributional Differences via Language Descriptions](https://arxiv.org/abs/2302.14233) (Feb 2023)
|
||||
- [Navigating the Grey Area: Expressions of Overconfidence and Uncertainty in Language Models](https://arxiv.org/abs/2302.13439) (Feb 2023)
|
||||
- [TabGenie: A Toolkit for Table-to-Text Generation](https://arxiv.org/abs/2302.14169) (Feb 2023)
|
||||
- [SGL-PT: A Strong Graph Learner with Graph Prompt Tuning](https://arxiv.org/abs/2302.12449) (Feb 2023)
|
||||
- [Few-Shot Table-to-Text Generation with Prompt-based Adapter](https://arxiv.org/abs/2302.12468) (Feb 2023)
|
||||
- [Language Models Are Few-shot Learners for Prognostic Prediction](https://arxiv.org/abs/2302.12692) (Feb 2023)
|
||||
- [STA: Self-controlled Text Augmentation for Improving Text Classifications](https://arxiv.org/abs/2302.12784) (Feb 2023)
|
||||
- [Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback](https://arxiv.org/abs/2302.12813) (Feb 2023)
|
||||
- [How Generative AI models such as ChatGPT can be (Mis)Used in SPC Practice, Education, and Research? An Exploratory Study](https://arxiv.org/abs/2302.10916) (Feb 2023)
|
||||
- [Grimm in Wonderland: Prompt Engineering with Midjourney to Illustrate Fairytales](https://arxiv.org/abs/2302.08961) (Feb 2023)
|
||||
- [LabelPrompt: Effective Prompt-based Learning for Relation Classification](https://arxiv.org/abs/2302.08068) (Feb 2023)
|
||||
- [Language Model Crossover: Variation through Few-Shot Prompting](https://arxiv.org/abs/2302.09236) (Feb 2023)
|
||||
- [Prompt Tuning of Deep Neural Networks for Speaker-adaptive Visual Speech Recognition](https://arxiv.org/abs/2302.08102) (Feb 2023)
|
||||
- [The Capacity for Moral Self-Correction in Large Language Models](https://arxiv.org/abs/2302.07459) (Feb 2023)
|
||||
- [Prompting for Multimodal Hateful Meme Classification](https://arxiv.org/abs/2302.04156) (Feb 2023)
|
||||
- [PLACES: Prompting Language Models for Social Conversation Synthesis](https://arxiv.org/abs/2302.03269) (Feb 2023)
|
||||
- [Commonsense-Aware Prompting for Controllable Empathetic Dialogue Generation](https://arxiv.org/abs/2302.01441) (Feb 2023)
|
||||
- [Crawling the Internal Knowledge-Base of Language Models](https://arxiv.org/abs/2301.12810) (Jan 2023)
|
||||
- [Legal Prompt Engineering for Multilingual Legal Judgement Prediction](https://arxiv.org/abs/2212.02199) (Dec 2022)
|
||||
- [Investigating Prompt Engineering in Diffusion Models](https://arxiv.org/abs/2211.15462) (Nov 2022)
|
||||
- [Learn to Explain: Multimodal Reasoning via Thought Chains for Science Question Answering](https://arxiv.org/abs/2209.09513v2) (Sep 2022)
|
||||
- [Conversing with Copilot: Exploring Prompt Engineering for Solving CS1 Problems Using Natural Language](https://arxiv.org/abs/2210.15157) (Oct 2022)
|
||||
- [Piloting Copilot and Codex: Hot Temperature, Cold Prompts, or Black Magic?](https://arxiv.org/abs/2210.14699) (Oct 2022)
|
||||
- [Plot Writing From Scratch Pre-Trained Language Models](https://aclanthology.org/2022.inlg-main.5) (July 2022)
|
||||
- [Survey of Hallucination in Natural Language Generation](https://arxiv.org/abs/2202.03629) (Feb 2022)
|
||||
|
||||
## Colecciones
|
||||
|
||||
- [Chain-of-Thought Papers](https://github.com/Timothyxxx/Chain-of-ThoughtsPapers)
|
||||
- [Papers with Code](https://paperswithcode.com/task/prompt-engineering)
|
||||
- [Prompt Papers](https://github.com/thunlp/PromptPapers#papers)
|
@ -0,0 +1,11 @@
|
||||
# Riesgos y Malos Usos
|
||||
|
||||
import { Callout } from 'nextra-theme-docs'
|
||||
|
||||
Ya hemos visto lo efectivos que pueden ser los prompts bien elaborados para varias tareas utilizando técnicas como el aprendizaje de pocos ejemplos (few-shot learning) y el prompting encadenado (chain-of-thought prompting). A medida que pensamos en construir aplicaciones del mundo real sobre modelos de lenguaje de gran escala (LLMs, por sus siglas en inglés), se vuelve crucial pensar en los abusos, riesgos y prácticas de seguridad involucradas con los modelos de lenguaje.
|
||||
|
||||
Esta sección se enfoca en destacar algunos de los riesgos y abusos de los LLMs a través de técnicas como la inyección de prompts. También destaca comportamientos dañinos y cómo mitigarlos potencialmente mediante técnicas de prompting efectivas. Otros temas de interés incluyen la generalización, la calibración, los sesgos, los sesgos sociales y la veracidad, por nombrar algunos.
|
||||
|
||||
<Callout emoji="⚠️">
|
||||
Esta sección está en pleno desarrollo.
|
||||
</Callout>
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"adversarial": "Adversarial Prompting",
|
||||
"factuality": "Veracidad",
|
||||
"biases": "Sesgos"
|
||||
}
|
||||
|
@ -0,0 +1,99 @@
|
||||
# Sesgos
|
||||
|
||||
Las LLMs pueden producir textos problemáticas que pueden ser potencialmente perjudiciales y mostrar sesgos que podrían deteriorar el rendimiento del modelo en tareas posteriores. Algunos de estos sesgos pueden mitigarse mediante estrategias de prompting efectivas, pero podrían requerir soluciones más avanzadas como la moderación y el filtrado.
|
||||
|
||||
### Distribución de ejemplos
|
||||
|
||||
¿La distribución de los ejemplos afecta el rendimiento del modelo o lo sesga de alguna manera al realizar aprendizaje de pocos ejemplos (few-shot learning)? Podemos realizar una prueba sencilla para comprobarlo.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
P: ¡Acabo de recibir las mejores noticias de mi vida!
|
||||
R: Positivo
|
||||
|
||||
P: ¡Acabamos de recibir un aumento en el trabajo!
|
||||
R: Positivo
|
||||
|
||||
P: Estoy muy orgulloso de lo que logré hoy.
|
||||
R: Positivo
|
||||
|
||||
P: ¡Hoy es el mejor día de mi vida!
|
||||
R: Positivo
|
||||
|
||||
P: Realmente estoy esperando el fin de semana.
|
||||
R: Positivo
|
||||
|
||||
P: ¡Acabo de recibir el mejor regalo de mi vida!
|
||||
R: Positivo
|
||||
|
||||
P: Estoy muy feliz en este momento.
|
||||
R: Positivo
|
||||
|
||||
P: Me siento muy afortunado de tener una familia increíble.
|
||||
R: Positivo
|
||||
|
||||
P: El clima afuera es muy sombrío.
|
||||
R: Negativo
|
||||
|
||||
P: Acabo de recibir algunas noticias terribles.
|
||||
R: Negativo
|
||||
|
||||
P: Eso dejó un sabor amargo.
|
||||
R:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Negativo
|
||||
```
|
||||
|
||||
En el ejemplo anterior, parece que la distribución de ejemplos no sesga el modelo. Esto es bueno. Intentemos otro ejemplo con un texto más difícil de clasificar y veamos cómo lo hace el modelo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
P: ¡La comida aquí es deliciosa!
|
||||
R: Positivo
|
||||
|
||||
P: Estoy muy cansado de este trabajo escolar.
|
||||
R: Negativo
|
||||
|
||||
P: No puedo creer que haya suspendido el examen.
|
||||
R: Negativo
|
||||
|
||||
P: ¡Hoy tuve un gran día!
|
||||
R: Positivo
|
||||
|
||||
P: Odio este trabajo.
|
||||
R: Negativo
|
||||
|
||||
P: El servicio aquí es terrible.
|
||||
R: Negativo
|
||||
|
||||
P: Estoy muy frustrado con mi vida.
|
||||
R: Negativo
|
||||
|
||||
P: Nunca tengo un descanso.
|
||||
R: Negativo
|
||||
|
||||
P: Esta comida sabe horrible.
|
||||
R: Negativo
|
||||
|
||||
P: No soporto a mi jefe.
|
||||
R: Negativo
|
||||
|
||||
P: Siento algo.
|
||||
R:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Negativo
|
||||
```
|
||||
|
||||
Si bien esa última oración es algo subjetiva, invertí la distribución y en su lugar usé 8 ejemplos positivos y 2 ejemplos negativos y luego intenté la misma oración exacta de nuevo. ¿Adivina qué respondió el modelo? Respondió "Positivo". El modelo puede tener mucho conocimiento sobre la clasificación de sentimientos, por lo que será difícil hacer que muestre sesgos para este problema. El consejo aquí es evitar sesgar la distribución y en su lugar proporcionar un número más equilibrado de ejemplos para cada etiqueta. Para tareas más difíciles en las que el modelo no tiene demasiado conocimiento, es probable que tenga más dificultades.
|
||||
|
||||
### Orden de los ejemplos
|
||||
|
||||
Al realizar el aprendizaje con pocos ejemplos, ¿afecta el orden el rendimiento del modelo o genera algún tipo de sesgo?
|
||||
|
||||
Puede probar los ejemplos anteriores y ver si puede hacer que el modelo esté sesgado hacia una etiqueta cambiando el orden. El consejo es ordenar los ejemplos al azar. Por ejemplo, evitar tener todos los ejemplos positivos primero y luego los ejemplos negativos al final. Este problema se amplifica aún más si la distribución de etiquetas está sesgada. Siempre asegúrese de experimentar mucho para reducir este tipo de sesgo.
|
@ -0,0 +1,35 @@
|
||||
# Veracidad
|
||||
|
||||
Los LLMs tienen una tendencia a generar respuestas que suenan coherentes y convincentes, pero a veces pueden ser inventadas. Mejorar las instrucciones puede ayudar a mejorar el modelo para generar respuestas más precisas/factuales y reducir la probabilidad de generar respuestas inconsistentes e inventadas.
|
||||
|
||||
Algunas soluciones pueden incluir:
|
||||
|
||||
- proporcionar verdades fundamentales (por ejemplo, un párrafo de un artículo relacionado o una entrada de Wikipedia) como parte del contexto para reducir la probabilidad de que el modelo produzca texto inventado.
|
||||
- configurar el modelo para producir respuestas menos diversas disminuyendo los parámetros de probabilidad e instruyéndolo a admitir (por ejemplo, "No lo sé") cuando no sepa la respuesta.
|
||||
- proporcionar en las instrucciones una combinación de ejemplos de preguntas y respuestas que pueda conocer o no.
|
||||
|
||||
Veamos un ejemplo sencillo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
P: ¿Qué es un átomo?
|
||||
R: Un átomo es una partícula diminuta que lo conforma todo.
|
||||
|
||||
P: ¿Quién es Alvan Muntz?
|
||||
R: ?
|
||||
|
||||
P: ¿Qué es Kozar-09?
|
||||
R: ?
|
||||
|
||||
P: ¿Cuántas lunas tiene Marte?
|
||||
R: Dos, Fobos y Deimos.
|
||||
|
||||
P: ¿Quién es Neto Beto Roberto?
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
R: ?
|
||||
```
|
||||
|
||||
Inventé el nombre "Neto Beto Roberto", por lo que el modelo es correcto en este caso. Intenta cambiar la pregunta un poco y ve si puedes hacer que funcione. Hay diferentes formas de mejorar esto aún más basándose en todo lo que has aprendido hasta ahora.
|
@ -0,0 +1,5 @@
|
||||
# Técnicas de prompting
|
||||
|
||||
A estas alturas, debería ser obvio que mejorar los prompts ayuda a obtener mejores resultados en diferentes tareas. Esa es la idea principal detrás de la ingeniería de prompts.
|
||||
|
||||
Si bien los ejemplos básicos fueron divertidos, en esta sección cubriremos técnicas más avanzadas de ingeniería de prompts que nos permiten lograr tareas más complejas e interesantes.
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"zeroshot": "Prompt sin entrenamiento previo (Zero-shot)",
|
||||
"fewshot": "Prompt con pocas muestras (Few-shot)",
|
||||
"cot": "Prompt cadena de pensamiento (CoT)",
|
||||
"consistency": "Auto-consistencia",
|
||||
"knowledge": "Prompt de conocimiento generado",
|
||||
"ape": "Ingeniería de prompts automático (APE)",
|
||||
"activeprompt": "Prompt activo",
|
||||
"dsp": "Prompt de Estímulo direccional",
|
||||
"react": "ReAct",
|
||||
"multimodalcot": "Prompt CoT multimodal",
|
||||
"graph": "Prompt de grafo"
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
# Prompt activo
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import ACTIVE from '../../img/active-prompt.png'
|
||||
|
||||
Los métodos de Cadena de Pensamiento (CoT) se basan en un conjunto fijo de ejemplos humanamente anotados. El problema con esto es que los ejemplos pueden no ser los más efectivos para diferentes tareas. Para abordar esto, [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf) propusieron recientemente un nuevo enfoque de sugerencias llamado Prompt activo (Active-Prompt) para adaptar LLMs a diferentes sugerencias de ejemplos específicos de tareas (anotados con razonamiento CoT diseñado por humanos).
|
||||
|
||||
A continuación se muestra una ilustración del enfoque. El primer paso es hacer una consulta al LLM con o sin algunos ejemplos de CoT. Se generan k posibles respuestas para un conjunto de preguntas de entrenamiento. Se calcula una métrica de incertidumbre basada en las k respuestas (se utiliza el desacuerdo). Las preguntas más inciertas son seleccionadas para su anotación por humanos. Los nuevos ejemplos anotados se utilizan luego para inferir cada pregunta.
|
||||
|
||||
<Screenshot src={ACTIVE} alt="ACTIVE" />
|
||||
Fuente de la imagen: [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf)
|
@ -0,0 +1,27 @@
|
||||
# Ingeniería de prompts automático (APE)
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import APE from '../../img/APE.png'
|
||||
import APECOT from '../../img/ape-zero-shot-cot.png'
|
||||
|
||||
<Screenshot src={APE} alt="APE" />
|
||||
Fuente: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
|
||||
|
||||
[Zhou et al., (2022)](https://arxiv.org/abs/2211.01910) proponen el marco de trabajo "Automatic Prompt Engineer" (APE) para la generación y selección automática de instrucciones. El problema de generación de instrucciones se plantea como una síntesis de lenguaje natural, abordado como un problema de optimización de caja negra mediante el uso de LLMs para generar y buscar soluciones candidatas.
|
||||
|
||||
El primer paso implica un gran modelo de lenguaje (como modelo de inferencia) que recibe demostraciones de salida para generar candidatos a instrucciones para una tarea. Estas soluciones candidatas guiarán el procedimiento de búsqueda. Las instrucciones se ejecutan usando un modelo de destino y luego se selecciona la instrucción más apropiada en función de las puntuaciones de evaluación calculadas.
|
||||
|
||||
APE descubre un mejor prompt "Chain-of-Thought" sin necesidad de anotaciones humanas, en comparación con el prompt "Pensemos paso a paso" diseñada por humanos ([Kojima et al., 2022](https://arxiv.org/abs/2205.11916)).
|
||||
|
||||
El prompt "Veamos esto paso a paso para asegurarnos de tener la respuesta correcta" provoca razonamiento de cadena de pensamiento y mejora el rendimiento en los conjuntos de datos MultiArith y GSM8K:
|
||||
|
||||
<Screenshot src={APECOT} alt="APECOT" />
|
||||
|
||||
Fuente de la imagen: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
|
||||
|
||||
Este artículo aborda un tema importante relacionado con la ingeniería de prompts, que es la idea de optimizarlas automáticamente. Aunque no profundizamos en este tema en esta guía, aquí hay algunos artículos clave si está interesado en el tema:
|
||||
|
||||
- [AutoPrompt](https://arxiv.org/abs/2010.15980) - propone un enfoque para crear automáticamente consignas para un conjunto diverso de tareas basado en una búsqueda guiada por gradiente.
|
||||
- [Prefix Tuning](https://arxiv.org/abs/2101.00190) - una alternativa ligera al fine-tuning que agrega un prefijo continuo entrenable para tareas de generación de lenguaje natural.
|
||||
- [Prompt Tuning](https://arxiv.org/abs/2104.08691) - propone un mecanismo para aprender prompts suaves mediante la retropropagación.
|
@ -0,0 +1,95 @@
|
||||
# Autoconsistencia
|
||||
|
||||
|
||||
Quizás una de las técnicas más avanzadas para la ingeniería de consignas es la autoconsistencia. Propuesta por [Wang et al. (2022)](https://arxiv.org/pdf/2203.11171.pdf), la autoconsistencia tiene como objetivo "reemplazar la decodificación codiciosa ingenua utilizada en la generación de cadenas de pensamiento". La idea es muestrear múltiples caminos de razonamiento diversos a través de pocos ejemplos de la generación de cadenas de pensamiento, y usar las generaciones para seleccionar la respuesta más consistente. Esto ayuda a mejorar el rendimiento de la generación de cadenas de pensamiento en tareas que implican razonamiento aritmético y sentido común.
|
||||
|
||||
Probemos el siguiente ejemplo para el razonamiento aritmético:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Cuando tenía 6 años, mi hermana tenía la mitad de mi edad. Ahora tengo 70 años,
|
||||
¿cuántos años tiene mi hermana?
|
||||
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
35
|
||||
```
|
||||
|
||||
¡La respuesta es incorrecta! ¿Cómo podemos mejorar esto con autoconsistencia? Vamos a probarlo. Usaremos los pocos ejemplos del artículo de Wang et al. 2022 (Tabla 17):
|
||||
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
P: Hay 15 árboles en el bosque. Los trabajadores plantarán árboles en el bosque hoy.
|
||||
Después de que terminen, habrá 21 árboles. ¿Cuántos árboles plantaron los trabajadores
|
||||
del bosque hoy?
|
||||
R: Comenzamos con 15 árboles. Luego tenemos 21 árboles. La diferencia debe ser el
|
||||
número de árboles que plantaron. Por lo tanto, deben haber plantado 21 - 15 = 6 árboles.
|
||||
La respuesta es 6.
|
||||
|
||||
P: Si hay 3 autos en el estacionamiento y llegan 2 autos más, ¿cuántos autos hay
|
||||
en el estacionamiento?
|
||||
R: Ya hay 3 autos en el estacionamiento. Llegan 2 más. Ahora hay 3 + 2 = 5 autos.
|
||||
La respuesta es 5.
|
||||
|
||||
P: Leah tenía 32 chocolates y su hermana tenía 42. Si se comieron 35, ¿cuántas piezas
|
||||
les quedan en total?
|
||||
R: Leah tenía 32 chocolates y la hermana de Leah tenía 42. Eso significa que originalmente
|
||||
había 32 + 42 = 74 chocolates. Se han comido 35. Así que en total todavía tienen 74 - 35 = 39
|
||||
chocolates. La respuesta es 39.
|
||||
|
||||
P: Jason tenía 20 piruletas. Le dio algunas piruletas a Denny. Ahora Jason tiene 12
|
||||
piruletas. ¿Cuántas piruletas le dio Jason a Denny?
|
||||
R: Jason tenía 20 piruletas. Como ahora solo tiene 12, debe haberle dado el resto a
|
||||
Denny. El número de piruletas que le dio a Denny debe haber sido 20 - 12 = 8 piruletas.
|
||||
La respuesta es 8.
|
||||
|
||||
P: Shawn tiene cinco juguetes. Para Navidad, recibió dos juguetes de su mamá y dos
|
||||
de su papá. ¿Cuántos juguetes tiene ahora?
|
||||
R: Él tiene 5 juguetes. Recibió 2 de su mamá, así que después de eso tiene 5 + 2 = 7
|
||||
juguetes. Luego recibió 2 más de su papá, por lo que en total tiene 7 + 2 = 9 juguetes.
|
||||
La respuesta es 9.
|
||||
|
||||
P: Había nueve ordenadores en la sala del servidor. Se instalaron cinco ordenadores
|
||||
más cada día, de lunes a jueves. ¿Cuántos ordenadores hay ahora en la sala del servidor?
|
||||
R: Hay 4 días de lunes a jueves. Se agregaron 5 ordenadores cada día. Eso significa que
|
||||
en total se agregaron 4 * 5 = 20 ordenadores. Había 9 ordenadores al principio, por lo
|
||||
que ahora hay 9 + 20 = 29 ordenadores. La respuesta es 29.
|
||||
|
||||
P: Michael tenía 58 bolas de golf. El martes, perdió 23 bolas de golf. El miércoles,
|
||||
perdió 2 más. ¿Cuántas bolas de golf tenía al final del miércoles?
|
||||
R: Michael inicialmente tenía 58 bolas. Perdió 23 el martes, así que después de eso tiene
|
||||
58 - 23 = 35 bolas. El miércoles perdió 2 más, por lo que ahora tiene 35 - 2 = 33 bolas.
|
||||
La respuesta es 33.
|
||||
|
||||
P: Olivia tiene $23. Compró cinco bagels por $3 cada uno. ¿Cuánto dinero le queda?
|
||||
R: Compró 5 bagels por $3 cada uno. Esto significa que gastó 5 * 3 = $15. Por lo tanto,
|
||||
le quedan $23 - $15 = $8.
|
||||
|
||||
P: Cuando tenía 6 años, mi hermana tenía la mitad de mi edad. Ahora tengo 70 años,
|
||||
¿cuántos años tiene mi hermana?
|
||||
R:
|
||||
```
|
||||
|
||||
*Salida 1:*
|
||||
```
|
||||
Cuando tenía 6 años, mi hermana tenía la mitad de mi edad, por lo que tenía 3 años.
|
||||
Ahora tengo 70 años, por lo que ella tiene 70 - 3 = 67 años. La respuesta es 67.
|
||||
```
|
||||
|
||||
*Salida 2:*
|
||||
```
|
||||
Cuando el narrador tenía 6 años, su hermana tenía la mitad de su edad, que son 3 años.
|
||||
Ahora que el narrador tiene 70 años, su hermana tendría 70 - 3 = 67 años. La respuesta es 67.
|
||||
```
|
||||
|
||||
*Salida 3:*
|
||||
```
|
||||
Cuando tenía 6 años, mi hermana tenía la mitad de mi edad, por lo que tenía 3 años.
|
||||
Ahora tengo 70 años, por lo que ella tiene 70/2 = 35 años. La respuesta es 35.
|
||||
|
||||
```
|
||||
|
||||
Realizar el cálculo para obtener la respuesta final implica algunos pasos (consulte el documento para obtener detalles), pero por simplicidad, podemos ver que ya está emergiendo una respuesta mayoritaria que esencialmente se convierte en la respuesta final.
|
@ -0,0 +1,92 @@
|
||||
# Prompt cadena de pensamientos (CoT)
|
||||
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import COT from '../../img/cot.png'
|
||||
import ZEROCOT from '../../img/zero-cot.png'
|
||||
|
||||
<Screenshot src={COT} alt="COT" />
|
||||
|
||||
Fuente de la imagen: [Wei et al. (2022)](https://arxiv.org/abs/2201.11903)
|
||||
|
||||
Introducido en [Wei et al. (2022)](https://arxiv.org/abs/2201.11903), el prompt por cadena de pensamientos (CoT) permite capacidades de razonamiento complejas a través de pasos de razonamiento intermedios. Puedes combinarlo con prompts de pocas muestras (few-shot) para obtener mejores resultados en tareas más complejas que requieren razonamiento antes de responder.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los números impares en este grupo suman un número par: 4, 8, 9, 15, 12, 2, 1.
|
||||
A: Al sumar todos los números impares (9, 15, 1) se obtiene 25. La respuesta es Falsa.
|
||||
|
||||
Los números impares en este grupo suman un número par: 17, 10, 19, 4, 8, 12, 24.
|
||||
A: Al sumar todos los números impares (17, 19) se obtiene 36. La respuesta es Verdadera.
|
||||
|
||||
Los números impares en este grupo suman un número par: 16, 11, 14, 4, 8, 13, 24.
|
||||
A: Al sumar todos los números impares (11, 13) se obtiene 24. La respuesta es Verdadera.
|
||||
|
||||
Los números impares en este grupo suman un número par: 17, 9, 10, 12, 13, 4, 2.
|
||||
A: Al sumar todos los números impares (17, 9, 13) se obtiene 39. La respuesta es Falsa.
|
||||
|
||||
Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
A:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Al sumar todos los números impares (15, 5, 13, 7, 1) se obtiene 41. La respuesta es Falsa.
|
||||
```
|
||||
|
||||
¡Wow! Podemos ver un resultado perfecto cuando proporcionamos el paso de razonamiento. De hecho, podemos resolver esta tarea proporcionando incluso menos ejemplos, es decir, solo un ejemplo parece ser suficiente:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los números impares en este grupo suman un número par: 4, 8, 9, 15, 12, 2, 1.
|
||||
A: Al sumar todos los números impares (9, 15, 1) se obtiene 25. La respuesta es Falsa.
|
||||
|
||||
Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
A:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Al sumar todos los números impares (15, 5, 13, 7, 1) se obtiene 41. La respuesta es Falsa.
|
||||
```
|
||||
|
||||
Tenga en cuenta que los autores afirman que esta es una habilidad emergente que surge con modelos de lenguaje lo suficientemente grandes.
|
||||
|
||||
## Prompt CoT sin entrenamiento previo (Zero-shot)
|
||||
|
||||
<Screenshot src={ZEROCOT} alt="Zero-shot COT" />
|
||||
|
||||
Fuente de la imagen: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916)
|
||||
|
||||
Una idea reciente que surgió más recientemente es la idea de [CoT sin entrenamiento previo](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022) que esencialmente implica agregar "Pensemos paso a paso" al prompt original. Veamos cómo funciona el modelo con un problema simple:
|
||||
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Fui al mercado y compré 10 manzanas. Regalé 2 manzanas al vecino y 2 al reparador.
|
||||
Luego fui y compré 5 manzanas más y me comí 1. ¿Cuántas manzanas me quedan?
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
11 manzanas
|
||||
```
|
||||
|
||||
¡La respuesta es incorrecta! Ahora probemos con el prompt especial.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Fui al mercado y compré 10 manzanas. Regalé 2 manzanas al vecino y 2 al reparador.
|
||||
Luego fui y compré 5 manzanas más y me comí 1. ¿Cuántas manzanas me quedan?
|
||||
|
||||
Pensemos paso a paso.
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
En primer lugar, comenzaste con 10 manzanas.
|
||||
Regalaste 2 manzanas al vecino y 2 al reparador, así que te quedaron 6 manzanas.
|
||||
Luego compraste 5 manzanas más, así que ahora tenías 11 manzanas.
|
||||
Finalmente, te comiste una manzana, por lo que te quedan 10 manzanas.
|
||||
```
|
||||
|
||||
Es impresionante que este sencillo prompt sea efectivo para este tarea. Esto es particularmente útil cuando no tienes demasiados ejemplos para usar en el prompt.
|
@ -0,0 +1,16 @@
|
||||
# Prompt de Estímulo direccional
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import DSP from '../../img/dsp.jpeg'
|
||||
|
||||
[Li et al., (2023)](https://arxiv.org/abs/2302.11520) propone una nueva técnica de alineación para guiar mejor al LLM en la generación del resumen deseado.
|
||||
|
||||
Se entrena un LM de política ajustable para generar el estímulo/pista. Se está viendo un mayor uso de RL para optimizar LLM.
|
||||
|
||||
La figura a continuación muestra cómo el prompt de estímulo direccional se compara con el alineamiento estándar. El LM puede ser pequeño y optimizado para generar las pistas que guían a un LLM congelado de caja negra.
|
||||
|
||||
<Screenshot src={DSP} alt="DSP" />
|
||||
Fuente de la imagen: [Li et al., (2023)](https://arxiv.org/abs/2302.11520)
|
||||
|
||||
¡Un ejemplo completo próximamente!
|
@ -0,0 +1,110 @@
|
||||
# Prompt con pocas muestras (Few-shot)
|
||||
|
||||
Si bien los modelos de lenguaje grandes demuestran capacidades notables sin entrenamiento previo (zero-shot), todavía tienen deficiencias usando esta configuración en tareas más complejas. Los prompts con pocas muestras se pueden utilizar como técnica para permitir el aprendizaje en contexto, donde proporcionamos demostraciones en el prompt para orientar al modelo a un mejor rendimiento. Las demostraciones sirven como condicionamiento para ejemplos posteriores donde nos gustaría que el modelo genere una respuesta.
|
||||
|
||||
Según [Touvron et al. 2023](https://arxiv.org/pdf/2302.13971.pdf) este tipo de prompt apareció por primera vez cuando los modelos se escalaron a un tamaño suficiente [(Kaplan et al., 2020)](https://arxiv.org/abs/2001.08361).
|
||||
|
||||
Demostraremos los prompts con pocas muestras a través de un ejemplo que se presentó en [Brown et al. 2020](https://arxiv.org/abs/2005.14165). En el ejemplo, la tarea es usar correctamente una nueva palabra en una oración.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Un "whatpu" es un animal pequeño y peludo originario de Tanzania.
|
||||
Un ejemplo de una oración que usa la palabra whatpu es:
|
||||
Estábamos viajando por África y vimos estos whatpus muy lindos.
|
||||
Hacer un "farduddle" significa saltar hacia arriba y hacia abajo muy rápido.
|
||||
Un ejemplo de una oración que usa la palabra farduddle es:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
Cuando ganamos el juego, todos empezamos a farduddlear en celebración.
|
||||
```
|
||||
|
||||
Podemos observar que el modelo ha aprendido de alguna manera cómo realizar la tarea al proporcionarle solo un ejemplo o muestra (es decir, 1-shot). Para tareas más difíciles, podemos experimentar con aumentar las demostraciones (por ejemplo, 3-shots, 5-shots, 10-shots, etc.).
|
||||
|
||||
Siguiendo los hallazgos de [Min et al. (2022)](https://arxiv.org/abs/2202.12837), haquí hay algunos consejos más sobre demostraciones/ejemplos usando pocas muestras:
|
||||
|
||||
- el espacio de etiquetas y la distribución del texto de entrada especificado por los ejemplos son ambos importantes (independientemente de si las etiquetas son correctas para las entradas individuales)
|
||||
- el formato que utilice también desempeña un papel clave en el rendimiento, incluso si solo usa etiquetas aleatorias, esto es mucho mejor que no tener etiquetas en absoluto.
|
||||
- los resultados adicionales muestran que seleccionar etiquetas aleatorias de una verdadera distribución de etiquetas (en lugar de una distribución uniforme) también ayuda.
|
||||
|
||||
Intentemos algunos ejemplos. Primero, intentemos un ejemplo con etiquetas aleatorias (lo que significa que las etiquetas Negativo y Positivo se asignan aleatoriamente a las entradas):
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Esto es increíble! // Negativo
|
||||
Esto es malo! // Positivo
|
||||
¡Guau, esa película fue increíble! // Positivo
|
||||
¡Qué horrible programa! //
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Negativo
|
||||
```
|
||||
|
||||
Aún obtenemos la respuesta correcta, aunque las etiquetas han sido aleatorizadas. Tenga en cuenta que también mantuvimos el formato, lo que también ayuda. De hecho, con más experimentación, parece que los nuevos modelos GPT con los que estamos experimentando se están volviendo más resistentes incluso a los formatos aleatorios. Ejemplo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
¡Esto es increíble! Positivo
|
||||
¡Esto es malo! Negativo
|
||||
¡Guau, esa película fue genial! Positivo
|
||||
¡Qué espectáculo tan horrible! - - Negativo
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Negativo
|
||||
```
|
||||
|
||||
No hay consistencia en el formato anterior, pero el modelo todavía predijo la etiqueta correcta. Debemos realizar un análisis más exhaustivo para confirmar si esto se aplica a diferentes y más complejas tareas, incluidas diferentes variaciones de estímulos.
|
||||
|
||||
|
||||
### Limitaciones de los prompts con pocas muestras
|
||||
|
||||
Los prompts con pocas muestras funcionan bien para muchas tareas, pero aún no es una técnica perfecta, especialmente cuando se trata de tareas de razonamiento más complejas. Demostremos por qué esto es así. ¿Recuerda el ejemplo anterior donde proporcionamos la siguiente tarea?
|
||||
|
||||
```
|
||||
Los números impares de este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
|
||||
R:
|
||||
```
|
||||
|
||||
Si lo intentamos de nuevo, el modelo produce lo siguiente:
|
||||
|
||||
```
|
||||
Sí, los números impares de este grupo suman 107, que es un número par.
|
||||
```
|
||||
|
||||
Esta no es la respuesta correcta, lo que no solo resalta las limitaciones de estos sistemas, sino que también muestra la necesidad de una ingeniería de prompt más avanzada.
|
||||
|
||||
Intentemos agregar algunos ejemplos para ver si prompts con pocas muestras mejoran los resultados.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Los números impares de este grupo suman un número par: 4, 8, 9, 15, 12, 2, 1.
|
||||
R: La respuesta es Falsa.
|
||||
|
||||
Los números impares de este grupo suman un número par: 17, 10, 19, 4, 8, 12, 24.
|
||||
R: La respuesta es Verdadera.
|
||||
|
||||
Los números impares de este grupo suman un número par: 16, 11, 14, 4, 8, 13, 24.
|
||||
R: La respuesta es Verdadera.
|
||||
|
||||
Los números impares de este grupo suman un número par: 17, 9, 10, 12, 13, 4, 2.
|
||||
R: La respuesta es Falsa.
|
||||
|
||||
Los números impares de este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1.
|
||||
R:
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
La respuesta es Verdadera.
|
||||
```
|
||||
|
||||
Eso no funcionó. Parece que los prompts con pocas muestras no son suficiente para obtener respuestas confiables para este tipo de problema de razonamiento. El ejemplo anterior proporciona información básica sobre la tarea. Si observas más de cerca, el tipo de tarea que hemos introducido implica algunos pasos de razonamiento más. En otras palabras, podría ayudar si descomponemos el problema en pasos y lo demostramos al modelo. Más recientemente, se ha popularizado la técnica de [prompt de cadena de pensamientos]((https://arxiv.org/abs/2201.11903)) (CoT, por sus siglas en inglés) para abordar tareas de razonamiento aritmético, sentido común y simbólico más complejas.
|
||||
|
||||
|
||||
En general, parece que proporcionar ejemplos es útil para resolver algunas tareas. En los casos en los que los prompts sin entrenamiento previo y con pocas muestras no son suficientes, podría significar que lo que aprendió el modelo no es suficiente para hacerlo bien en la tarea. Recomendamos comenzar a pensar en afinar tus modelos o experimentar con técnicas de prompt más avanzadas. A continuación, hablamos de una de las técnicas de activación populares llamada prompt de cadena de pensamientos, que ha ganado mucha popularidad.
|
@ -0,0 +1,5 @@
|
||||
# Prompt de grafo
|
||||
|
||||
[Liu et al., 2023](https://arxiv.org/abs/2302.08043) intrroduce GraphPrompt, un nuevo framework de prompt para grafos para mejorar el rendimiento en tareas posteriores.
|
||||
|
||||
¡Más información en breve!
|
@ -0,0 +1,128 @@
|
||||
# Prompt de conocimiento generado
|
||||
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import GENKNOW from '../../img/gen-knowledge.png'
|
||||
|
||||
<Screenshot src={GENKNOW} alt="GENKNOW" />
|
||||
|
||||
Fuente de la imagen: [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf)
|
||||
|
||||
Los LMs siguen siendo mejorados y una técnica popular incluye la capacidad de incorporar conocimiento o información para ayudar al modelo a hacer predicciones más precisas.
|
||||
|
||||
Usando una idea similar, ¿puede el modelo también ser utilizado para generar conocimiento antes de hacer una predicción? Eso es lo que se intenta en el artículo de [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf) -- generar conocimiento para ser utilizado como parte del prompt. En particular, ¿cuán útil es esto para tareas como el razonamiento del sentido común?
|
||||
|
||||
|
||||
Intentemos un prompt sencillo:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Parte del golf es tratar de obtener un puntaje más alto que los demás. Sí o no?
|
||||
```
|
||||
|
||||
*Salida:*
|
||||
```
|
||||
Sí.
|
||||
```
|
||||
|
||||
Este tipo de error revela las limitaciones de los LMs para realizar tareas que requieren más conocimiento sobre el mundo. ¿Cómo podemos mejorar esto con la generación de conocimiento?
|
||||
|
||||
Primero, generamos algunos "conocimientos":
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Input: Grecia es más grande que México.
|
||||
Conocimiento: Grecia tiene aproximadamente 131,957 km², mientras que México tiene aproximadamente
|
||||
1,964,375 km², lo que hace que México sea un 1,389% más grande que Grecia.
|
||||
|
||||
Input: Los lentes siempre se empañan.
|
||||
Conocimiento: La condensación se produce en las lentes de los anteojos cuando el vapor de agua de
|
||||
su sudor, respiración y humedad ambiental aterriza en una superficie fría, se enfría y luego se
|
||||
convierte en pequeñas gotas de líquido, formando una película que se ve como niebla. Sus lentes
|
||||
estarán relativamente frías en comparación con su aliento, especialmente cuando el aire exterior
|
||||
está frío.
|
||||
|
||||
Input: Un pez es capaz de pensar.
|
||||
Conocimiento: Los peces son más inteligentes de lo que parecen. En muchas áreas, como la memoria,
|
||||
sus habilidades cognitivas igualan o superan a las de los vertebrados "superiores", incluidos los
|
||||
primates no humanos. Las memorias a largo plazo de los peces les ayudan a mantener relaciones
|
||||
sociales complejas.
|
||||
|
||||
Input: Un efecto común de fumar muchos cigarrillos a lo largo de la vida es una probabilidad más
|
||||
alta de tener cáncer de pulmón.
|
||||
Conocimiento: Aquellos que fumaron consistentemente menos de un cigarrillo por día durante su
|
||||
vida tenían nueve veces más riesgo de morir por cáncer de pulmón que los no fumadores. Entre las
|
||||
personas que fumaron entre uno y 10 cigarrillos por día, el riesgo de morir por cáncer de pulmón
|
||||
fue casi 12 veces mayor que el de los no fumadores.
|
||||
|
||||
Input: Una roca es del mismo tamaño que una piedra.
|
||||
Conocimiento: Una piedra es un clasto de roca con un tamaño de partícula de 4 a 64 milímetros
|
||||
según la escala de sedimentología Udden-Wentworth. Las piedras se consideran generalmente más
|
||||
grandes que los granos (diámetro de 2 a 4 milímetros) y más pequeñas que las rocas grandes
|
||||
(diámetro de 64 a 256 milímetros).
|
||||
|
||||
Input: Parte del golf es tratar de obtener un puntaje total más alto que los demás.
|
||||
Conocimiento:
|
||||
```
|
||||
|
||||
*Conocimiento 1:*
|
||||
```
|
||||
El objetivo del golf es jugar un conjunto de hoyos en el menor número de golpes. Una ronda de
|
||||
golf típicamente consta de 18 hoyos. Cada hoyo se juega una vez en la ronda en un campo de golf
|
||||
estándar. Cada golpe se cuenta como un punto, y el número total de golpes se utiliza para
|
||||
determinar el ganador del juego.
|
||||
```
|
||||
|
||||
*Conocimiento 2:*
|
||||
```
|
||||
El golf es un deporte de precisión con club y pelota en el que los jugadores (o golfistas)
|
||||
compiten utilizando muchos tipos de palos para golpear pelotas en una serie de hoyos en un
|
||||
campo, usando el menor número de golpes. El objetivo es completar el recorrido con la puntuación
|
||||
más baja, que se calcula sumando el número total de golpes tomados en cada hoyo. El jugador
|
||||
con la puntuación más baja gana el juego.
|
||||
```
|
||||
|
||||
Estamos utilizando el proporcionado proporcionado en el paper de [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf).
|
||||
|
||||
El siguiente paso es integrar el conocimiento y obtener una predicción. Reformulé la pregunta en formato de preguntas y respuestas (QA) para guiar el formato de la respuesta.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Pregunta: ¿Parte del golf consiste en intentar obtener un total de puntos más alto que los demás?
|
||||
Sí o No?
|
||||
|
||||
Conocimiento: El objetivo del golf es jugar un conjunto de hoyos en el menor número de golpes
|
||||
posible. Una ronda de golf típicamente consiste en 18 hoyos. Cada hoyo se juega una vez en la
|
||||
ronda en un campo de golf estándar. Cada golpe se cuenta como un punto y el número total de
|
||||
golpes se utiliza para determinar el ganador del juego.
|
||||
|
||||
Explicación y Respuesta:
|
||||
```
|
||||
|
||||
*Respuesta 1 (confianza muy alta):*
|
||||
```
|
||||
No, el objetivo del golf no es obtener un total de puntos más alto que los demás. Al contrario,
|
||||
el objetivo es jugar un conjunto de hoyos en el menor número de golpes posible. El número total
|
||||
de golpes se utiliza para determinar el ganador del juego, no el número total de puntos.
|
||||
```
|
||||
|
||||
```
|
||||
Pregunta: ¿Parte del golf consiste en intentar obtener un total de puntos más alto que los demás?
|
||||
Sí o No?
|
||||
|
||||
Conocimiento: El golf es un deporte de precisión en el que los jugadores (o golfistas) compiten
|
||||
usando muchos tipos de palos para golpear bolas en una serie de hoyos en un campo utilizando el
|
||||
menor número de golpes posible. El objetivo es completar el campo con la puntuación más baja,
|
||||
que se calcula sumando el número total de golpes realizados en cada hoyo. El jugador con la
|
||||
puntuación más baja gana el juego.
|
||||
|
||||
Explicación y Respuesta:
|
||||
```
|
||||
|
||||
*Respuesta 2 (confianza mucho más baja):*
|
||||
```
|
||||
Sí, parte del golf consiste en intentar obtener un total de puntos más alto que los demás. Cada
|
||||
jugador intenta completar el campo con la puntuación más baja, que se calcula sumando el número
|
||||
total de golpes realizados en cada hoyo. El jugador con la puntuación más baja gana el juego.
|
||||
```
|
||||
|
||||
Algo realmente interesante ocurrió con este ejemplo. En la primera respuesta, el modelo estaba muy seguro, pero en la segunda, no tanto. Simplifiqué el proceso para fines de demostración, pero hay algunos detalles más a considerar al llegar a la respuesta final. Consulta el paper para obtener más información.
|
@ -0,0 +1,15 @@
|
||||
# Prompt CoT multimodal
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import MCOT from '../../img/multimodal-cot.png'
|
||||
|
||||
[Zhang et al. (2023)](https://arxiv.org/abs/2302.00923) propusieron recientemente un enfoque de generación de cadenas de pensamiento multimodales. El CoT tradicional se centra en la modalidad del lenguaje. En cambio, el CoT multimodal incorpora texto y visión en un marco de dos etapas. El primer paso implica la generación de razones basadas en información multimodal. Esto es seguido por la segunda fase, la inferencia de respuestas, que aprovecha las razones generadas informativas.
|
||||
|
||||
El modelo CoT multimodal (1B) supera al GPT-3.5 en el banco de pruebas de ScienceQA.
|
||||
|
||||
<Screenshot src={MCOT} alt="MCOT" />
|
||||
Fuente de imagen: [Zhang et al. (2023)](https://arxiv.org/abs/2302.00923)
|
||||
|
||||
Lectura adicional:
|
||||
- [Language Is Not All You Need: Aligning Perception with Language Models](https://arxiv.org/abs/2302.14045) (Feb 2023)
|
@ -0,0 +1,14 @@
|
||||
# ReAct
|
||||
|
||||
import { Callout, FileTree } from "nextra-theme-docs";
|
||||
import { Screenshot } from "components/screenshot";
|
||||
import REACT from "../../img/react.png";
|
||||
|
||||
[Yao et al., 2022](https://arxiv.org/abs/2210.03629) presentón un framework donde los LLM se utilizan para generar trazas de razonamiento y acciones específicas de la tarea de manera intercalada. La generación de trazas de razonamiento permite que el modelo induzca, haga seguimiento y actualice planes de acción, incluso manejar excepciones. El paso de acción permite interactuar y recopilar información de fuentes externas, como bases de conocimiento o entornos
|
||||
|
||||
El framework ReAct framework permite a los LLMs interactuar con herramientas externals para recuperar información adicional que produzca respuestas mas fiables y fácticas.
|
||||
|
||||
<Screenshot src={REACT} alt="REACT" />
|
||||
Image Source: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
|
||||
|
||||
¡Ejemplo completo en breve!
|
@ -0,0 +1,22 @@
|
||||
# Prompt sin entrenamiento previo (Zero-shot)
|
||||
|
||||
Los LLMs de hoy en día entrenados con grandes cantidades de datos y ajustados para seguir instrucciones, son capaces de realizar tareas sin necesidad de entrenamiento. Probamos algunos ejemplos de cero entrenamiento en la sección anterior. Aquí hay uno de los ejemplos que usamos:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
Clasifica el texto en neutral, negativo o positivo.
|
||||
|
||||
Texto: Creo que las vacaciones están bien.
|
||||
Sentimiento:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
Neutral
|
||||
```
|
||||
|
||||
Tenga en cuenta que en la instrucción anterior no proporcionamos al modelo ningún ejemplo, eso es el prompt sin entrenamiento.
|
||||
|
||||
El ajuste de instrucciones ha demostrado mejorar el aprendizaje sin entrenamiento [Wei et al. (2022)](https://arxiv.org/pdf/2109.01652.pdf). El ajuste de instrucciones es esencialmente el concepto de ajustar modelos en conjuntos de datos descritos a través de instrucciones. Además, RLHF (aprendizaje por refuerzo a partir de la retroalimentación humana) se ha adoptado para escalar el ajuste de instrucciones, en el que el modelo se alinea mejor con las preferencias humanas. Este reciente desarrollo impulsa modelos como ChatGPT. Discutiremos todos estos enfoques y métodos en las próximas secciones.
|
||||
|
||||
Cuando el prompt sin entrenamiento no funciona, se recomienda proporcionar demostraciones o ejemplos en la instrucción, lo que lleva a un entrenamiento con pocos ejemplos. En la siguiente sección, demostraremos el entrenamiento con pocas muestras/ejemplos.
|
@ -0,0 +1,41 @@
|
||||
# Herramientas y Librerias
|
||||
#### (Ordenadas por nombre)
|
||||
|
||||
- [AI Test Kitchen](https://aitestkitchen.withgoogle.com)
|
||||
- [betterprompt](https://github.com/krrishdholakia/betterprompt)
|
||||
- [ChatGPT Prompt Generator](https://huggingface.co/spaces/merve/ChatGPT-prompt-generator)
|
||||
- [ClickPrompt](https://github.com/prompt-engineering/click-prompt)
|
||||
- [DreamStudio](https://beta.dreamstudio.ai)
|
||||
- [DUST](https://dust.tt)
|
||||
- [Dyno](https://trydyno.com)
|
||||
- [EmergentMind](https://www.emergentmind.com)
|
||||
- [EveryPrompt](https://www.everyprompt.com)
|
||||
- [GPT Index](https://github.com/jerryjliu/gpt_index)
|
||||
- [GPTTools](https://gpttools.com/comparisontool)
|
||||
- [hwchase17/adversarial-prompts](https://github.com/hwchase17/adversarial-prompts)
|
||||
- [Interactive Composition Explorer](https://github.com/oughtinc/ice)
|
||||
- [LangChain](https://github.com/hwchase17/langchain)
|
||||
- [Lexica](https://lexica.art)
|
||||
- [loom](https://github.com/socketteer/loom)
|
||||
- [Metaprompt](https://metaprompt.vercel.app/?task=gpt)
|
||||
- [OpenAI Playground](https://beta.openai.com/playground)
|
||||
- [OpenICL](https://github.com/Shark-NLP/OpenICL)
|
||||
- [OpenPrompt](https://github.com/thunlp/OpenPrompt)
|
||||
- [OpenPlayground](https://nat.dev/)
|
||||
- [Playground](https://playgroundai.com)
|
||||
- [Prodia](https://app.prodia.com/#/)
|
||||
- [Prompt Base](https://promptbase.com)
|
||||
- [Prompt Engine](https://github.com/microsoft/prompt-engine)
|
||||
- [Prompt Generator for OpenAI's DALL-E 2](http://dalle2-prompt-generator.s3-website-us-west-2.amazonaws.com)
|
||||
- [Promptable](https://promptable.ai)
|
||||
- [PromptInject](https://github.com/agencyenterprise/PromptInject)
|
||||
- [Prompts.ai](https://github.com/sevazhidkov/prompts-ai)
|
||||
- [Promptmetheus](https://promptmetheus.com)
|
||||
- [PromptPerfect](https://promptperfect.jina.ai/)
|
||||
- [Promptly](https://trypromptly.com/)
|
||||
- [PromptSource](https://github.com/bigscience-workshop/promptsource)
|
||||
- [Promptist](https://promptist.herokuapp.com/)
|
||||
- [Scale SpellBook](https://scale.com/spellbook)
|
||||
- [sharegpt](https://sharegpt.com)
|
||||
- [ThoughtSource](https://github.com/OpenBioLink/ThoughtSource)
|
||||
- [Visual Prompt Builder](https://tools.saxifrage.xyz/prompt)
|
Loading…
Reference in New Issue