curso
Prompting de poucos disparos: Exemplos, teoria e casos de uso
Modelos de linguagem grandes podem entender e escrever textos que soam muito parecidos com os humanos. Mas quando se trata de fazer com que esses modelos façam isso da maneira exata que queremos, não é tão fácil. Você precisa escolher as técnicas adequadas para obter uma resposta satisfatória.
Uma dessas técnicas é o prompting de poucos disparos. É um método inteligente que ajuda a conectar o que o modelo já sabe com o que precisamos que ele faça para um trabalho específico - você dá ao modelo alguns exemplos rápidos para mostrar a ele o que você quer, facilitando a compreensão e a execução correta da tarefa.
Neste tutorial, você aprenderá:
- O que é um prompt de poucos disparos e por que ele é importante.
- Como funciona a solicitação de poucos disparos, incluindo o fornecimento de demonstrações e o aprendizado pelo exemplo.
- As vantagens do prompting de poucos disparos, como melhor desempenho e requisitos de dados reduzidos.
- Várias aplicações de estímulos de poucos disparos, incluindo tarefas complexas de raciocínio, redação criativa e geração de códigos.
- Desafios e práticas recomendadas em solicitações de poucos disparos, incluindo a seleção de exemplos eficazes e a criação de solicitações.
Este tutorial faz parte do meu "Prompt Engineering": Série de postagens no blog "Do zero ao herói":
- Engenharia imediata para todos
- Prompting de disparo zero
- Prompting de poucos disparos
- Encadeamento de prompts
O que é o Few-Shot Prompting?
O prompting de poucos disparos é uma técnica que envolve o fornecimento de um modelo de linguagem com um pequeno número de exemplos para orientar sua resposta a uma tarefa específica. Esse método situa-se entre o aprendizado zero-shot (em que nenhum exemplo é fornecido) e o ajuste fino totalmente supervisionado (que requer grandes quantidades de dados rotulados).
Em outras palavras, o prompting de poucos disparos é o processo de fornecer a um modelo de linguagem um punhado de demonstrações ou exemplos dentro do próprio prompt. Esses exemplos funcionam como um guia, mostrando ao modelo como abordar e responder a um tipo específico de tarefa ou pergunta. Ao fornecer esses exemplos, você está basicamente dizendo ao modelo: "É assim que você deve reagir em situações semelhantes".
Vejamos um exemplo.
Imagine que queremos que o modelo classifique o sentimento das resenhas de filmes. Um prompt de algumas fotos pode ser assim:
Sugestão:
Classify the sentiment of the third movie review. Use the information from the first two examples:
Review: "This movie was a waste of time."
Sentiment: Negative
Review: "I couldn't stop laughing throughout the film!"
Sentiment: Positive
Review: "The special effects were amazing, but the plot was confusing."
Sentiment:
```markdown
If we input this prompt to the LLM, and if it understands the task correctly, it will output:
```markdown
Sentiment: Mixed
Neste exemplo, o LLM usa os exemplos no prompt para entender como classificar o sentimento da terceira avaliação e gera o resultado de acordo.
O prompt de poucos disparos é importante porque torna os LLMs mais úteis e acessíveis. Primeiro, ele economiza tempo e esforço, pois você não precisa treinar completamente o modelo ou coletar grandes quantidades de dados.
Em segundo lugar, ele é muito flexível - você pode adaptar rapidamente o modelo a diferentes tarefas apenas mudando os exemplos que você dá a ele. Em terceiro lugar, muitas vezes ajuda o LLM a ter um desempenho melhor em tarefas específicas ou complexas, em comparação com pedir que ele faça algo sem nenhuma orientação. Esse método também disponibiliza ferramentas avançadas de IA para mais pessoas, não apenas para especialistas em tecnologia com muitos recursos.
Como funciona o prompt de poucos disparos
A essência do prompting de poucos disparos está em fornecer ao LLM um pequeno conjunto de exemplos ou demonstrações relevantes dentro do próprio prompt. Esses exemplos orientam o modelo, ilustrando como abordar e responder a um tipo específico de tarefa ou pergunta. Normalmente, as demonstrações são estruturadas da seguinte forma:
- Pares de entrada e saída: Cada demonstração geralmente consiste em uma entrada (por exemplo, uma pergunta ou um trecho de texto) e sua saída correspondente (a resposta ou solução desejada).
- Consistência do formato: As demonstrações mantêm um formato consistente, o que ajuda o modelo a reconhecer o padrão que deve seguir.
- Relevância da tarefa: Os exemplos fornecidos são diretamente relevantes para a tarefa em questão, demonstrando a habilidade ou o conhecimento específico necessário.
Por exemplo, se quisermos que o modelo gere dísticos rimados, um prompt de poucos disparos poderia ser assim:
Generate a rhyming couplet about a tree:
Input: "cat"
Output: The curious cat, so sleek and fat,
Curled up cozy on the welcome mat.
Input: "sky"
Output: Look up high into the endless sky,
Where birds and clouds go drifting by.
Input: "tree"
Output:
Quando essas demonstrações são apresentadas, o modelo de linguagem se envolve em um processo geralmente chamado de "aprendizado no contexto" ou "aprendizado por exemplo". Funciona da seguinte maneira:
- Reconhecimento de padrões: O modelo analisa os exemplos fornecidos, identificando padrões em como os inputs são transformados em outputs.
- Inferência de tarefas: A partir desses padrões, o modelo infere a natureza da tarefa que está sendo solicitada a executar.
- Generalização: Em seguida, o modelo tenta generalizar os exemplos fornecidos para novas entradas não vistas.
- Aplicação: Por fim, o modelo aplica esse padrão aprendido à nova entrada fornecida no final do prompt.
Esse processo permite que o modelo adapte seu conhecimento e seus recursos a uma tarefa específica sem exigir nenhuma alteração em seus parâmetros subjacentes.
É importante observar que a eficácia da solicitação de poucos disparos pode variar dependendo de fatores como a complexidade da tarefa, a qualidade e a relevância dos exemplos fornecidos e os recursos do modelo de linguagem subjacente. No entanto, quando usado com eficiência, o prompt de poucos disparos pode fazer com que os modelos de linguagem executem muitas tarefas diferentes com precisão e flexibilidade impressionantes.
Vantagens do prompt de poucos disparos
O prompt de poucos disparos tem algumas vantagens. Vejamos por que esse método é tão útil.
Desempenho aprimorado
Uma das vantagens mais notáveis da solicitação de poucos disparos é a melhoria substancial no desempenho em comparação com as abordagens de zero disparos.
- Precisão aprimorada: As solicitações de poucos disparos ajudam o modelo a entender melhor a tarefa específica, levando a resultados mais precisos, fornecendo exemplos relevantes.
- Maior relevância: Os exemplos orientam o modelo a produzir respostas mais alinhadas com o resultado desejado.
- Adaptação específica à tarefa: O estímulo de poucos disparos ajuda o LLM a usar o que já sabe para entender e executar tarefas novas e específicas.
Por exemplo, considere um cenário em que queremos que o modelo gere descrições de produtos com um tom e formato específicos.
Generate product descriptions:
Product: Wireless Earbuds
Description: Immerse yourself in crystal-clear audio with our sleek wireless earbuds. Featuring noise-cancellation technology and a comfortable fit, these earbuds are perfect for music lovers on the go.
Product: Smart Watch
Description: Stay connected and track your fitness with our advanced smart watch. With heart rate monitoring, GPS, and a vibrant touch screen, it's your perfect companion for an active lifestyle.
Product: Ergonomic Office Chair
Description:
Com esses exemplos, é mais provável que o modelo gere uma descrição relevante e com o estilo adequado para a cadeira de escritório, em comparação com uma abordagem de disparo zero, em que ele poderia produzir uma descrição mais genérica ou menos focada.
Um possível resultado poderia ser:```markdown
Descrição: Transforme o seu espaço de trabalho com a nossa cadeira de escritório ergonômica de última geração. Projetada para oferecer o máximo de conforto e suporte, esta cadeira apresenta suporte lombar ajustável, encosto de malha respirável e apoios de braço personalizáveis. Quer você trabalhe em casa ou em um ambiente corporativo, esta cadeira é a combinação perfeita de estilo e funcionalidade para o profissional moderno.
Faster adaptationFew-shot prompting helps the LLM to quickly learn new tasks or topics, making it fast and easy to switch between different jobs.
Quick task learning: Models can quickly grasp new tasks with just a handful of examples, allowing for rapid prototyping and testing of new applications.Domain adaptation: It's easy to shift the model's focus to different domains or styles by simply changing the examples in the prompt.Iterative refinement: Users can quickly iterate and refine their prompts based on initial results, leading to a more agile development process.For example, if we wanted to adapt the model to generate different types of poetry, we could quickly switch between haikus, limericks, or sonnets just by changing the examples in our prompt:
```markdown
Generate poetry based on the given theme and format.
Theme: Spring
Haiku:
Cherry blossoms bloom
Soft petals dance in the breeze
Nature awakens
Theme: Summer
Haiku:
Theme: A funny cat
Limerick:
There once was a cat named Lou
Who always knew just what to do
He'd climb up a tree
Then meow with glee
And slide down as if on a chute
Theme: A clumsy dog
Limerick:
Um resultado potencial seria:
Haiku:
Scorching sun above
Cicadas sing endlessly
Beach waves cool bare feet
Limerick:
There once was a dog quite unsteady
His paws were not quite ready
He'd trip on his tail
Knock over the mail
But his smile kept his owner steady
Requisitos de dados reduzidos
A solicitação de poucos disparos reduz significativamente a necessidade de grandes quantidades de dados rotulados, o que é uma grande vantagem em relação às abordagens tradicionais de ajuste fino.
- É necessário um número mínimo de exemplos: Em geral, apenas 2 a 5 exemplos são suficientes para orientar o modelo de forma eficaz para muitas tarefas.
- Não é necessário fazer ajustes finos: Ao contrário das abordagens tradicionais de machine learning, o prompting de poucos disparos não exige a atualização dos parâmetros do modelo, o que economiza tempo e recursos computacionais.
- Acessibilidade: Essa abordagem torna os recursos avançados de NLP mais acessíveis aos usuários que talvez não tenham acesso a grandes conjuntos de dados ou aos recursos para treinamento extensivo de modelos.
Aplicações do Few-Shot Prompting
O prompt de poucos disparos pode ser aplicado a muitos domínios. Sua flexibilidade e eficiência o tornam particularmente útil para tarefas que exigem conhecimento especializado ou produção criativa. Vamos explorar alguns dos principais aplicativos:
Tarefas de raciocínio complexas
A solicitação de poucos disparos pode melhorar significativamente a capacidade do LLM de lidar com tarefas que envolvem raciocínio em várias etapas, dedução lógica ou conhecimento específico do domínio.
Vamos ver como podemos usar o prompt de poucos disparos para uma tarefa de diagnóstico médico:
Provide a possible diagnosis and explain your reasoning:
Symptoms: Fever, cough, fatigue
Diagnosis: Common cold
Explanation: The combination of fever, cough, and fatigue is typical of a common cold. No severe symptoms are present, suggesting a mild viral infection.
Symptoms: Chest pain, shortness of breath, dizziness
Diagnosis: Possible heart attack
Explanation: The combination of chest pain, shortness of breath, and dizziness are warning signs of a possible heart attack. Immediate medical attention is required.
Symptoms: Headache, sensitivity to light, nausea
Diagnosis:
Explanation:
Esse prompt orienta o modelo a não apenas fornecer um diagnóstico, mas também a explicar o raciocínio por trás dele, demonstrando um raciocínio médico complexo.
O LLM produziria:```markdown
Diagnóstico: Enxaqueca
Explicação: Esses sintomas juntos são típicos de uma enxaqueca. A dor de cabeça combinada com a sensibilidade à luz (fotofobia) é um forte indicador de enxaqueca, e a náusea geralmente acompanha essa condição. Embora outras causas sejam possíveis, essa combinação sugere fortemente uma enxaqueca.
Creative writingFew-shot prompting is particularly effective in guiding LLMs to generate text in specific styles, formats, or genres.
Let’s see how to generate movie synopsis in different genres using few-shot prompting:
```markdown
Generate movie synopsis:
Genre: Sci-Fi
Synopsis: In a world where dreams can be shared, a skilled "dream thief" is tasked with the impossible: planting an idea in someone's mind. As he delves deeper into the target's subconscious, the lines between reality and dreams blur, threatening to trap him forever.
Genre: Romance
Synopsis: A chance encounter on a rainy day in Paris leads two strangers on a whirlwind 24-hour adventure. As they explore the city and each other's hearts, they must decide if their connection is strong enough to overcome the ocean that will separate them come morning.
Genre: Horror
Synopsis:
Esse prompt orienta o modelo na geração de uma sinopse que capta os principais elementos e o tom do gênero especificado.
Saída:
Synopsis: A remote mountain town is plagued by a series of mysterious disappearances. As a skeptical detective investigates, she uncovers an ancient cult that awakens every hundred years to feed on the town's inhabitants. With time running out and the cult's power growing, she must confront her own dark past to save the remaining townspeople and herself from a terrifying fate.
Geração de código
A solicitação de poucos disparos pode ser incrivelmente útil para ajudar os LLMs a gerar códigos que sigam convenções específicas, sigam as práticas recomendadas ou atendam a requisitos específicos. Os exemplos podem demonstrar a sintaxe e a estrutura corretas de uma determinada linguagem de programação.
Vamos ver como você pode usar o prompting de poucos disparos para gerar funções Python com docstrings e dicas de tipo:
def calculate_area(length: float, width: float) -> float:
"""
Calculate the area of a rectangle.
Args:
length (float): The length of the rectangle.
width (float): The width of the rectangle.
Returns:
float: The area of the rectangle.
"""
return length * width
def celsius_to_fahrenheit(celsius: float) -> float:
"""
Convert temperature from Celsius to Fahrenheit.
Args:
celsius (float): Temperature in Celsius.
Returns:
float: Temperature in Fahrenheit.
"""
return (celsius * 9/5) + 32
def calculate_bmi(weight: float, height: float) -> float:
"""
[Generate a docstring for this function]
"""
# [Generate the function body]
Esse prompt orienta o modelo a gerar uma função com dicas de tipo adequadas e uma docstring detalhada, seguindo o padrão estabelecido.
O resultado seria:
def calculate_bmi(weight: float, height: float) -> float:
"""
Calculate the Body Mass Index (BMI) of a person.
Args:
weight (float): The weight of the person in kilograms.
height (float): The height of the person in meters.
Returns:
float: The calculated BMI value.
Note:
BMI is calculated as weight (kg) divided by height squared (m^2).
This function assumes weight is in kilograms and height is in meters.
"""
return weight / (height ** 2)
Prompting de poucos disparos: Desafios e práticas recomendadas
Embora a solicitação de poucos disparos funcione bem em muitos casos, ela tem seus próprios desafios. Compreender esses desafios e seguir as práticas recomendadas pode nos ajudar a maximizar a eficácia de nossos prompts e obter melhores resultados.
Seleção de exemplos eficazes
A qualidade e a relevância dos exemplos que você escolher são cruciais para o sucesso da solicitação de poucos disparos. Aqui estão algumas dicas:
- Certifique-se de que os exemplos estejam diretamente relacionados à tarefa que você deseja que o modelo execute. Exemplos irrelevantes podem confundir o modelo e levar a um desempenho ruim.
- Use um conjunto diversificado de exemplos que abranjam diferentes aspectos da tarefa. Isso ajuda o modelo a se generalizar melhor para novas entradas.
- Os exemplos devem ser claros e não ambíguos. Evite exemplos complexos ou complicados que possam confundir o modelo.
Design imediato
A criação de prompts eficazes é uma arte que exige uma consideração cuidadosa de como os exemplos são apresentados e de como a tarefa é estruturada. Aqui estão algumas estratégias que você pode seguir:
- Mantenha um formato consistente para todos os exemplos. Isso ajuda o modelo a reconhecer o padrão que precisa seguir.
- Forneça contexto suficiente no prompt para deixar a tarefa clara. Às vezes, uma breve instrução ou descrição pode ajudar a preparar o cenário para os exemplos.
- Mantenha o prompt o mais simples possível e, ao mesmo tempo, forneça as informações necessárias. Prompts muito complexos podem gerar confusão.
Evitar o ajuste excessivo
Um dos riscos da solicitação de poucos disparos é que o modelo pode se ajustar excessivamente aos exemplos fornecidos, levando a resultados que são muito semelhantes aos exemplos ou que não conseguem generalizar bem para novas entradas. Para evitar isso:
- Use uma variedade de exemplos que cubram diferentes cenários e casos extremos. Isso ajuda o modelo a aprender a generalizar em vez de apenas imitar os exemplos.
- Evite usar muitos exemplos, pois isso pode levar a um ajuste excessivo. Alguns exemplos bem escolhidos geralmente são mais eficazes do que um grande número de exemplos semelhantes.
- Teste o desempenho do modelo em uma série de novas entradas para garantir que ele seja bem generalizado. Ajuste os exemplos e o prompt conforme necessário com base nesses testes.
Seguir essas práticas recomendadas ajudará você a criar prompts de poucos disparos mais eficazes que orientem o modelo a executar a tarefa desejada com precisão e eficiência.
Conclusão
O prompting de poucos disparos é uma técnica que ajuda os LLMs a aplicar seus conhecimentos a tarefas específicas.
Ele permite uma rápida adaptação a novas tarefas sem necessidade de retreinamento extensivo. Ele aumenta a precisão em tarefas complexas, fornecendo exemplos relevantes. Ele é útil em vários domínios, desde o raciocínio até a escrita criativa e a codificação, e torna os modelos avançados de linguagem mais acessíveis e adaptáveis.
No entanto, sua eficácia depende de uma seleção cuidadosa de exemplos e de um projeto rápido. A qualidade e a relevância dos exemplos são fundamentais para o desempenho ideal.
Olhando para o futuro, estou empolgado com o que isso pode significar. Imagine sistemas que possam escolher os exemplos perfeitos automaticamente ou adaptar-se rapidamente com base no desempenho deles.
Então, aí está o que você precisa! Em poucas palavras, você pode usar o prompt de poucos disparos. Continue experimentando, continue aprendendo e vejo você na próxima!
Perguntas frequentes
Existe uma maneira de medir ou quantificar a melhoria no desempenho da tarefa quando você usa o prompt de poucos disparos em comparação com as abordagens de zero disparos?
Sim, as melhorias podem ser medidas usando métricas padrão de machine learning, dependendo da tarefa. Para tarefas de classificação, você pode usar a exatidão, a precisão, a recuperação e a pontuação F1. Métricas como BLEU, ROUGE ou avaliação humana podem ser usadas para tarefas de geração.
Há algum setor ou indústria específica que tenha visto aplicações particularmente bem-sucedidas de estímulos de poucos disparos?
A solicitação de poucos disparos tem sido bem-sucedida em vários setores, inclusive no atendimento ao cliente (para gerar respostas), na criação de conteúdo (para assistência à escrita) e no desenvolvimento de software (para geração de código). Ele também está se mostrando valioso no setor de saúde para tarefas como resumo de registros médicos e no setor financeiro para análise de mercado e geração de relatórios.
Como a solicitação de poucos disparos pode afetar o futuro mercado de trabalho para cientistas de dados e engenheiros de machine learning?
A solicitação de poucos disparos pode democratizar o desenvolvimento de aplicativos de IA, permitindo que não especialistas criem facilmente soluções especializadas de IA. Isso pode mudar o foco dos cientistas de dados e dos engenheiros de ML para tarefas mais complexas, engenharia de prompt e desenvolvimento de sistemas de IA mais avançados. Isso também poderia criar novas funções focadas na elaboração de prompts e exemplos eficazes para vários aplicativos.
Quais são as limitações do prompt de poucos disparos quando se trata de domínios técnicos ou altamente especializados?
Em domínios altamente especializados, o estímulo de poucos disparos pode ser difícil se o modelo não tiver conhecimento básico nessa área. Também pode ser um desafio capturar regras ou procedimentos complexos específicos do domínio com apenas alguns exemplos. Nesses casos, pode ser necessário um ajuste fino mais extenso ou um treinamento específico do domínio.
Os usuários devem estar cientes de alguma preocupação ética ou possível uso indevido do prompt de poucos disparos?
Sim, há preocupações éticas. A solicitação de poucos disparos poderia ser usada para orientar os modelos de IA na geração de conteúdo tendencioso ou prejudicial se os exemplos não forem cuidadosamente escolhidos. Há também o risco de vazamento não intencional de dados se informações confidenciais forem incluídas nos prompts.
Aprenda IA com estes cursos!
curso
Understanding Prompt Engineering
programa
AI Business Fundamentals
blog
Destilação do LLM explicada: Aplicativos, implementação e muito mais
Stanislav Karzhev
12 min
blog
O que é IA? Um guia rápido para iniciantes
blog
O que é aprendizagem incremental?
tutorial
Um guia para iniciantes na engenharia de prompts do ChatGPT
tutorial
AI do cursor: Um guia com 10 exemplos práticos
François Aubry
10 min
tutorial