Pular para o conteúdo principal

Prompting de poucos disparos: Exemplos, teoria e casos de uso

O prompting de poucos disparos é uma técnica na qual um modelo de IA recebe alguns exemplos de uma tarefa para aprender antes de gerar uma resposta, usando esses exemplos para melhorar seu desempenho em tarefas semelhantes.
Actualizado 29 de jul. de 2024  · 10 min de leitura

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":

  1. Engenharia imediata para todos
  2. Prompting de disparo zero
  3. Prompting de poucos disparos
  4. 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:

  1. Reconhecimento de padrões: O modelo analisa os exemplos fornecidos, identificando padrões em como os inputs são transformados em outputs.
  2. Inferência de tarefas: A partir desses padrões, o modelo infere a natureza da tarefa que está sendo solicitada a executar.
  3. Generalização: Em seguida, o modelo tenta generalizar os exemplos fornecidos para novas entradas não vistas.
  4. Aplicação: Por fim, o modelo aplica esse padrão aprendido à nova entrada fornecida no final do prompt.

diagrama do processo de aprendizagem no contexto

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. 

Desafios e práticas recomendadas de disparo de poucos tiros

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.

Temas

Aprenda IA com estes cursos!

curso

Generative AI for Business

1 hr
9.8K
Learn the role Generative Artificial Intelligence plays today and will play in the future in a business environment.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Destilação do LLM explicada: Aplicativos, implementação e muito mais

A destilação é uma técnica de treinamento de LLM em que um modelo menor e mais eficiente (como o GPT-4o mini) é treinado para imitar o comportamento e o conhecimento de um modelo maior e mais complexo (como o GPT-4o).
Stanislav Karzhev's photo

Stanislav Karzhev

12 min

blog

O que é IA? Um guia rápido para iniciantes

Descubra o que realmente é inteligência artificial com exemplos, opiniões de especialistas e todas as ferramentas de que você precisa para aprender mais.
Matt Crabtree's photo

Matt Crabtree

11 min

blog

O que é aprendizagem incremental?

O aprendizado incremental é uma metodologia de aprendizado de máquina em que um modelo de IA aprende novas informações ao longo do tempo, mantendo e desenvolvendo o conhecimento anterior.
Abid Ali Awan's photo

Abid Ali Awan

9 min

tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

6 min

tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.
François Aubry's photo

François Aubry

10 min

tutorial

Uma introdução ao uso do DALL-E 3: Dicas, exemplos e recursos

Descubra como usar o DALL-E 3 para criar imagens. Descubra o que é o DALL-E 3, seus principais recursos e como usar os prompts para obter os melhores resultados.
Kurtis Pykes 's photo

Kurtis Pykes

16 min

See MoreSee More