Técnicas de engenharia de prompt
Os modelos GPT-3, GPT-3.5, GPT-4 e GPT-4o do OpenAI são baseados em prompt. Com modelos baseados em prompt, o usuário interage com o modelo inserindo um prompt de texto, ao qual o modelo responde com um preenchimento de texto. Esse preenchimento é a continuação do texto de entrada do modelo.
Embora esses modelos sejam extremamente poderosos, seu comportamento também é muito sensível ao prompt. Isso torna a construção de prompt uma habilidade importante para desenvolver.
A criação de prompt pode ser complexa. Na prática, o prompt atua para configurar os pesos do modelo para concluir a tarefa desejada. É mais uma arte do que uma ciência, muitas vezes exigindo experiência e intuição para criar um prompt bem-sucedido. O objetivo deste artigo é ajudar você a começar esse processo de aprendizagem. Ele tenta captar conceitos e padrões gerais que se aplicam a todos os modelos GPT. No entanto, é importante entender que cada modelo se comporta de forma diferente. Portanto, os aprendizados podem não se aplicar da mesma forma a todos os modelos.
Noções básicas
Essa seção aborda os conceitos e os elementos básicos dos prompts GPT.
Os prompts de texto são como os usuários interagem com modelos GPT. Assim como acontece com todos os modelos de linguagem generativa, os modelos GPT tentam produzir a série seguinte de palavras que provavelmente seguirá do texto anterior. É como se estivéssemos dizendo Qual é a primeira coisa que vem à sua mente quando eu digo <prompt>
? Os exemplos abaixo demonstram esse comportamento. Com base nas primeiras palavras de conteúdo conhecido, o modelo é capaz de continuar o texto com precisão.
Prompt | Completion |
---|---|
Há 87 anos, nossos | antepassados criaram, neste continente, uma nova nação, concebida em Liberdade e dedicada à proposta de que todos os homens são iguais. […] |
“Pode me chamar de Ismael.” | "Há alguns anos, não importa exatamente quanto tempo, tendo pouco ou nenhum dinheiro na minha bolsa e nenhum interesse específico em terra, pensei em navegar um pouco e ver a parte líquida do mundo." [...] |
À medida que você desenvolve prompts mais complexos, é útil ter em mente esse comportamento essencial. Independentemente do prompt fornecido, o modelo está simplesmente respondendo com o que ele determina que é mais provável (considerando seus dados e objetivos de treinamento). Se você fizer uma pergunta em seu prompt, o modelo não está seguindo um caminho de código "Q&A" separado, mas parece responder à pergunta porque uma resposta é o tipo mais provável de resposta para a pergunta fornecida como entrada.
Componentes do prompt
Ao usar a API de Preenchimento, embora não haja nenhuma distinção entre diferentes partes do prompt, ainda pode ser útil para o aprendizado e a discussão identificar componentes subjacentes do prompt. Com a API de Preenchimento do Chat, há seções distintas do prompt que são enviadas para a API na forma de uma matriz de dicionários com funções associadas: sistema, usuário e assistente. Essas diretrizes se concentram de forma mais geral em como pensar na criação de prompts em vez de fornecer diretrizes prescritivas específicas para uma API em vez de outra.
Também é importante entender que, embora possa haver outras maneiras válidas de analisar os prompts, o objetivo desse detalhamento é oferecer uma forma relativamente simples de pensar sobre a criação de prompts. Com a API de Preenchimento, todos os componentes são opcionais, mas pelo menos um deve estar presente e a maioria dos prompts inclui mais de um componente. Também pode haver uma área indefinida entre os componentes. A ordem apresentada abaixo corresponde aproximadamente à frequência com que cada componente é usado, de mais para menos.
Instruções
As instruções provavelmente são o componente de prompt mais usado. As instruções são simplesmente: instruções para o modelo sobre o que fazer. Embora simples no conceito, eles podem ser complexos na prática. A tabela a seguir ilustra isso com instruções simples e mais complexas, em duas formas diferentes.
Tipo de instrução | Prompt | Completion |
---|---|---|
Instruções simples | Escreva uma introdução para um boletim informativo semanal. | Bem-vindos ao nosso boletim semanal. Nesta semana, vamos focar em produtividade. Compartilharemos dicas e truques de produtividade para todas as áreas da sua vida. Esperamos que você goste e compartilhe com seus amigos! |
Instruções complexas | Escrever uma introdução para um boletim informativo semanal para minha empresa chamado Contoso. Deve mencionar a reunião ótima que tivemos com todos na semana passada e agradecer à equipe por todo o seu trabalho árduo nos últimos meses que foram difíceis. | Bem-vindos ao boletim semanal da Contoso! Tivemos uma ótima reunião com todos na semana passada e quero agradecer à equipe por todo o seu trabalho árduo nos últimos meses que foram difíceis. Estamos ansiosos por um futuro brilhante e estou confiante de que, com a dedicação e o compromisso da nossa equipe, alcançaremos grandes feitos. Agradeço por fazer parte da nossa equipe e espero trabalhar com todos vocês nas próximas semanas e meses. Atenciosamente, [Seu nome] |
Instruções Complexas | Escreva uma introdução para um boletim informativo semanal, incluindo o seguinte: - Minha empresa se chama Contoso - Uma saudação enérgica - Agradecimento à equipe pelo trabalho árduo durante meses difíceis - Perspectiva positiva para o próximo trimestre - Assinado pelo SLT |
Olá, equipe da Contoso! Eu quero agradecer vocês pelo ótimo trabalho nos últimos meses. Foram dois meses difíceis, mas todos vocês uniram esforços e fizeram um trabalho incrível. Tenho orgulho de todos vocês. Estou muito confiante quanto ao próximo trimestre. Acho que vamos realizar grandes feitos. Agradecemos novamente, a Equipe de Liderança Sênior. |
Conteúdo principal
O conteúdo principal refere-se a algum tipo de texto que é processado ou transformado pelo modelo. O conteúdo principal geralmente é usado em conjunto com instruções. Um exemplo simples seria a tradução de idioma. No exemplo a seguir, o texto em inglês seria considerado o conteúdo principal, enquanto que "Traduzir para o francês:" é uma instrução.
Prompt | Completion |
---|---|
Como chegar ao museu? Traduzir para o francês: |
Pouvez-vous s'il vous plaît me dire comment aller au musée? |
O conteúdo primário também pode ser mais longo. No exemplo a seguir, o conteúdo principal é a seção de introdução da entrada da Wikipédia sobre complexidade de tempo, que tem quase 300 palavras. Este conteúdo foi abreviado em nossa tabela para facilitar a exibição.
Prompt | Completion |
---|---|
Na ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo do computador necessário para executar um algoritmo. A complexidade de tempo é normalmente estimada por [...] Resuma o texto anterior em algumas frases: |
A complexidade de tempo é uma medida de quanto tempo um algoritmo leva para ser executado. Normalmente, ela é demonstrada como uma função do tamanho da entrada. A medida mais comum é a complexidade de tempo no pior cenário, que é a quantidade máxima de tempo necessária para entradas de um determinado tamanho. |
Na ciência da computação, a complexidade de tempo é a complexidade computacional que descreve a quantidade de tempo do computador necessário para executar um algoritmo. A complexidade de tempo é normalmente estimada por [...]TL;DR (Muito longo, não lido) |
A complexidade de tempo de um algoritmo é o tempo necessário para executar um algoritmo. A complexidade de tempo geralmente é estimada contando o número de operações básicas executadas pelo algoritmo, supondo que cada operação básica leve uma quantidade fixa de tempo para ser executada. A complexidade de tempo geralmente é expressa como uma função do tamanho da entrada. |
Os modelos GPT também podem lidar com o conteúdo principal que é estruturado. No exemplo a seguir, um TSV sobre cervejas na Bélgica (abreviado para exibição neste artigo) é transmitido para o modelo como parte do prompt. Ele é capaz de interpretar o conteúdo e responder a perguntas sobre os dados corretamente.
Prompt | Completion |
---|---|
Belgian Beer Brands Beer name Beer style color ABV Brewery "Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist) "Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00% […] Fazendo referência à tabela acima, quantas cervejas têm o ABV menor que 6%? |
Há 10 cervejas na tabela com o ABV menor que 6%. |
Exemplos
Os prompts bem-sucedidos geralmente dependem da prática de aprendizado de "única tentativa" ou "poucas tentativas". Isso se refere à inclusão de um ou mais exemplos do comportamento desejado do modelo, normalmente incluindo pares de entrada e saída. Isso não é aprender no sentido de que o modelo é permanentemente alterado, mas sim que os exemplos condicionem melhor o modelo para responder conforme desejado apenas para a inferência atual. Às vezes, o uso de prompts sem exemplos é chamado de aprendizado "sem tentativa". Observe que, com a API de Preenchimento de Chat, alguns exemplos de aprendizado são normalmente adicionados à matriz de mensagens na forma de interações de usuário/assistente de exemplo após a mensagem inicial do sistema.
Tipo de aprendizado | Prompt | Completion |
---|---|---|
Zero-shot | Título: o técnico está confiante de que lesão não vai atrapalhar o Warriors Tópico: |
O técnico está confiante de que a lesão não vai atrapalhar a temporada do Warriors. O time ainda está focado em seus objetivos e continuará trabalhando duro para alcançá-los. |
Few-shot | Título: Correa, do Twins, usará a cláusula de autoexclusão e testará agência independente Tópico: beisebol Título: Copa do Mundo do Catar terá áreas para torcedores ficarem sóbrios Tópico: futebol Título: Yates: informação para a 6ª semana de Fantasy Football Tópico: futebol americano Título: o técnico está confiante de que lesão não vai atrapalhar o Warriors Tópico: |
Basquete |
O exemplo acima ilustra a utilidade do aprendizado com poucas tentativas. Sem os exemplos, o modelo parece estar adivinhando o comportamento desejado, enquanto os exemplos demonstram ao modelo como funcionar corretamente. Isso também demonstra o poder do modelo. Ele pode inferir a categoria de etiqueta desejada, mesmo sem uma etiqueta de "basquete" nos exemplos.
Indicação
As sugestões atuam como o "estímulo" para a saída do modelo, ajudando a direcionar o modelo para a saída desejada. Geralmente, é um prefixo no qual o modelo pode ser criado. No exemplo abaixo, mostramos a sugestão direcionando a história para incluir elementos-chave. As sugestões geralmente são usadas junto com instruções, mas nem sempre. Nos exemplos abaixo, o modelo está sendo usado para resumir um email de declaração longa. Uma sugestão é usada em um caso para ajudar a concentrar a saída do modelo e sugerir um formato de saída específico (pontos de marcador) no outro.
No contexto das instruções da API de Preenchimento de Chat, siga a forma da mensagem do sistema e os exemplos de poucas tentativas são indicados fornecendo uma série de interações de usuário/assistente de exemplo para ajudar na preparação do modelo.
Quantidade de sugestões | Prompt | Completion |
---|---|---|
0 | As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […] Resuma a mensagem de email acima: |
A finalidade deste email é informar os funcionários sobre alterações recentes na experiência de análise de desempenho, que faz parte da abordagem de Desenvolvimento e Desempenho da Contoso. As alterações incluem uma estrutura aperfeiçoada, experiência atualizada do usuário na ferramenta e prompts centrados. Além disso, agora há uma seção opcional de Iniciadores de Conversa para os funcionários sinalizarem tópicos que gostariam de discutir com seus gerentes. |
1 | As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […] Resuma a mensagem de email acima: A principal vantagem da mensagem é |
que a Contoso está melhorando a experiência de análise de desempenho, tornando-a mais focada em prioridades, expectativas e nos impacto principais. Além disso, estão atualizando a experiência do usuário na ferramenta com dicas, recursos e diretrizes. Por fim, estão adicionando diretrizes sobre como ativar as principais prioridades em toda a empresa. |
2 | As análises de desempenho são um componente fundamental da nossa abordagem de Desenvolvimento e Desempenho na Contoso. […] Resuma a mensagem de email acima: Pontos principais: • |
A Contoso está introduzindo alterações na experiência de análise de desempenho, com base em comentários dos funcionários. • As alterações incluem um novo foco em prioridades, expectativas e impacto principais; uma experiência de usuário atualizada; e novas diretrizes sobre as principais prioridades em toda a empresa. • As análises de desempenho são um momento para refletir sobre o desempenho e o aprendizado passados, bem como planejar prioridades futuras e oportunidades de crescimento. • Funcionários e gerentes devem escrever comentários antes da reunião de análise de desempenho. • Deve haver pelo menos duas análises de desempenho por ano. • O tempo de investimento para cada análise deve permanecer quase o mesmo. |
Conteúdo de suporte
Conteúdo de apoio são informações que o modelo pode utilizar para influenciar a saída de alguma forma. Ele difere do conteúdo principal, pois não é o principal objetivo da tarefa, mas geralmente é usado junto com o conteúdo principal. Exemplos comuns incluem informações contextuais, como a data atual, o nome do usuário, as preferências do usuário e assim por diante. O exemplo a seguir usa o conteúdo de apoio para ajudar a organizar um conjunto de workshops planejados para o usuário. Sem o apoio (tópicos importantes), o modelo simplesmente lista os workshops (truncados para exibição). Quando informado dos meus tópicos importantes, o modelo é capaz de agrupar as reuniões com precisão.
Conteúdo de suporte | Prompt | Completion |
---|---|---|
Sem | Lista do workshop: Descrição do título Início do planejamento do workshop – junte-se a nós para iniciar nosso workshop! Ouça nossos líderes discutirem sobre prioridades entre grupos e aprendizados para o próximo ano. O convite para esse evento já foi enviado para todos em [...] Resuma os workshops acima, agrupados por tópico: |
Lista do workshop: Início do planejamento do workshop - Encerramento do planejamento do workshop - MeetUp principal - Perspectivas do cliente - Áreas de impacto e foco principal - Melhores práticas - Acelerar a adoção do aplicativo [...] |
With | Lista do workshop: Descrição do título Início do planejamento do workshop – junte-se a nós para iniciar nosso workshop! Ouça nossos líderes discutirem sobre prioridades entre grupos e aprendizados para o próximo ano. O convite para esse evento já foi enviado para todos em [...] Meus tópicos importantes: engenharia de prompt, pesquisa e modelos GPT Resuma os workshops acima, agrupados pelos tópicos importantes: |
1. Engenharia de prompt: - Novas dicas de engenharia de prompt - A arte da engenharia de prompt 2. Pesquisa: - Introdução à pesquisa de vetor com incorporação 3. Modelos GPT: - Introdução ao GPT-4 - GPT-35-Turbo em profundidade. |
Diretrizes específicas do cenário
Embora os princípios da engenharia de prompt possam ser generalizados para muitos tipos diferentes de modelos, certos modelos esperam uma estrutura de prompt especializada. Para modelos de GPT da OpenAI do Azure, atualmente há duas APIs distintas em que a engenharia de prompt entra em jogo:
- API de Conclusão de Chat.
- API de Conclusão.
Cada API requer que os dados de entrada sejam formatados de forma diferente, o que, por sua vez, afeta o design geral do prompt. A API de Conclusão de Chat tem suporte para os modelos GPT-35-Turbo e GPT-4. Esses modelos são projetados para receber uma entrada formatada em uma transcrição específica de chat armazenada dentro de uma matriz de dicionários.
A API de Conclusão dá suporte aos modelos GPT-3 mais antigos e tem requisitos de entrada muito mais flexíveis, pois usa uma cadeia de caracteres de texto sem regras de formato específicas.
As técnicas nesta seção ensinarão estratégias para aumentar a precisão e o aterramento das respostas geradas com um LLM (Modelo de Linguagem Grande). No entanto, é importante lembrar que, mesmo ao usar a engenharia de prompt efetivamente, você ainda precisa validar as respostas geradas pelos modelos. Só porque um prompt cuidadosamente elaborado funcionou bem para um cenário específico, não significa necessariamente que ele será generalizado de forma mais ampla para certos casos de uso. Entender as limitações das LLMs é tão importante quanto entender como aproveitar seus pontos fortes.
Este guia não se aprofunda na mecânica por trás da estrutura de mensagens para Conclusão de Chat. Se você não estiver familiarizado com a interação com modelos de Conclusão de Chat programaticamente, recomendamos ler nosso guia de instruções sobre a API de Conclusão de Chat primeiro.
Observação
Todos os exemplos nesta seção do guia foram testados em um modelo base do GPT-4 em inglês. Se você estiver lendo uma versão localizada deste artigo em outro idioma, essas respostas representam uma tradução localizada dos resultados em inglês. Para saber mais sobre as possíveis limitações dependendo do idioma que você está usando para solicitar um modelo, consulte nossa Nota de transparência de IA responsável.
Few-shot learning
Uma maneira comum de adaptar modelos de linguagem a novas tarefas é usar o few-shot learning. No few-shot learning, um conjunto de exemplos de treinamento é fornecido como parte do prompt para dar contexto adicional ao modelo.
Ao usar a API de Conclusões de Chat, uma série de mensagens entre o usuário e o assistente (escritas no novo formato de prompt) pode servir como exemplos para o few-shot learning. Esses exemplos podem ser usados para preparar o modelo para responder de uma determinada maneira, emular comportamentos específicos e fornecer respostas a perguntas comuns.
Mensagem do sistema | Exemplos de few-shot learning |
---|---|
O assistente é um chatbot inteligente projetado para ajudar os usuários a responder suas perguntas relacionadas a impostos. Instruções - Responda apenas a perguntas relacionadas a impostos. - Se você não tiver certeza de uma resposta, poderá dizer "não sei" ou "não tenho certeza" e recomendar que os usuários acessem o site do IRS para obter mais informações. |
Usuário: "Quando preciso declarar meus impostos?" Assistente – "Em 2023, você precisará declarar seus impostos até 18 de abril. A data cai após o prazo habitual de 15 de abril porque esse dia cai em um sábado em 2023. Para obter mais informações, confira https://www.irs.gov/filing/individuals/when-to-file " Usuário: "Como posso ver o status do meu reembolso de imposto?" Assistente - "Você pode verificar o status do seu reembolso de imposto visitando https://www.irs.gov/refunds " |
A tabela acima descreve a estrutura básica do prompt, mas para obter uma explicação detalhada do formato exato do prompt, você precisará consultar o Guia de Conclusão do Chat.
Cenários que não são de chat
Embora a API de Conclusão de Chat seja otimizada para trabalhar com conversas de vários turnos, ela também pode ser usada para cenários que não são de chat. Por exemplo, para um cenário de extração de sentimento, você pode usar o seguinte prompt:
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente projetado para analisar o sentimento dos dados de fala. Os usuários colarão uma cadeia de caracteres de texto e você responderá com uma avaliação da resposta do orador. Taxa em uma escala de 1 a 10 (10 sendo a mais alta). Explique por que essa classificação foi dada. | olá obrigado por ligar para a farmácia contoso com quem eu estou falando hoje entendo sua frustração maria você pode me dizer o que exatamente está tentando fazer OK com certeza fico feliz em verificar isso para você aguarde um momento vejo aqui que você estava tomando uma forma genérica de lipitor é isso mesmo OK vejo que seu médico parou de prescrever esses medicamentos em 2021 na verdade OK sim ficarei feliz em verificar isso para você porque às vezes há uma lacuna no sistema e simplesmente isso não é reportado então deixe-me dar uma olhada aqui só um momento então estou vendo aqui que seu médico prescreveu esses medicamentos para você de 2012 a 2021 OK sim de acordo com os registros mais recentes fornecidos pelo consultório médico agora você está tomando um medicamento diferente metformina gostaria que prescrevêssemos a receita para você e você possa retirar o metformina 500mg de nada maria nos avise se há mais alguma coisa que possamos fazer por você hoje. | Classificação de sentimento: 8 O locutor neste texto parece ser educado, útil e paciente ao abordar as preocupações do cliente. Ele dedica tempo para verificar as informações, fornecer explicações claras e oferecer assistência. No entanto, a classificação não é 10 porque ainda há um indício de incerteza em algumas partes da conversa, o que pode não transmitir total confiança ao cliente. |
Começar com instruções claras
As informações da sequência são exibidas no prompt. Isso ocorre porque os modelos de estilo GPT são criados de uma certa maneira que define como processam a entrada. Nossa pesquisa sugere que informar ao modelo a tarefa que você deseja que ele faça no início da prompt, antes de compartilhar informações ou exemplos contextuais adicionais, pode ajudar a produzir saídas de alta qualidade.
Observação
Embora seguir essa técnica ainda seja geralmente recomendado, ao contrário das versões anteriores do modelo (GPT-3 e anteriores), nossos testes mostraram que a resposta do modelo com os modelos ChatGPT e GPT-4 foi a mesma, independentemente de usar ou não a técnica. No caso do exemplo abaixo, vemos que adicionar a instrução "Várias fontes ... erupção" no início ou no final do prompt não causou nenhuma alteração na resposta do modelo final.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Sua tarefa é verificar se a instrução "Várias fontes mencionam a possibilidade de outra grande erupção" é apoiada por uma citação específica do seguinte conjunto de snippets. --- SNIPPETS [1] 14% de chance de um megaterremoto atingir Seattle, dizem especialistas SEATTLE - Há uma chance de 14% de um terremoto de magnitude 9 em Cascadia atingir Seattle nos próximos 50 anos, segundo estimativas do Serviço Geológico dos Estados Unidos. "Infelizmente, não podemos... [2] Especialistas em terremotos expõem as últimas perspectivas para o “Really Big One” de Seattle "Dizemos que há aproximadamente uma chance de 14% de ocorrer outro terremoto de magnitude 9 nos próximos 50 anos", disse um geofísico da Universidade de Washington... --- A instrução "Várias fontes mencionam a possibilidade de outra grande erupção" está diretamente implícita ou declarada pelos snippets? |
Não, a instrução não está diretamente implícita ou declarada pelos snippets. Os snippets mencionam a chance de um "megaterremoto" e um "terremoto de magnitude 9 tipo Cascadia" atingir Seattle nos próximos 50 anos, mas não mencionam uma chance de haver outra grande erupção vulcânica. |
Repita as instruções no final
Os modelos podem ser suscetíveis ao desvio de relevância, o que nesse contexto significa que as informações no final do prompt podem ter influência mais significativa sobre a saída do que as informações no início do prompt. Portanto, vale a pena experimentar repetir as instruções no final do prompt e avaliar o impacto na resposta gerada.
Preparar a saída
Isso se refere à inclusão de algumas palavras ou frases no final do prompt para obter uma resposta de modelo que segue o formulário desejado. Por exemplo, usar uma indicação como “Here’s a bulleted list of key points:\n- ”
pode ajudar a garantir que a saída seja formatada como uma lista de pontos de marcador.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. Responda com o menor número possível de palavras. | John Smith é casado com Lucy Smith. Eles têm cinco filhos, e ele trabalha como engenheiro de software na Microsoft. Quais consultas de pesquisa devo fazer para verificar isso? ## Uma possível consulta de pesquisa é: | "John Smith casado com Lucy Smith cinco filhos engenheiro de software da Microsoft" |
No prompt acima, o texto Uma possível consulta de pesquisa é: prepara o modelo para produzir uma única saída. Sem essa indicação, o modelo produz várias consultas de pesquisa como saída.
Adicionar sintaxe clara
O uso de sintaxe clara para seu prompt, incluindo pontuação, títulos e marcadores de seção, ajuda a comunicar a intenção e, muitas vezes, facilita a análise de saídas.
No exemplo abaixo, separadores (---
neste caso) foram adicionados entre diferentes fontes de informações ou etapas. Isso permite o uso de como uma condição de ---
como condição de parada para geração. Além disso, títulos de seção ou variáveis especiais são apresentados em maiúsculas para diferenciá-los.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Você lerá um parágrafo e emitirá consultas a um mecanismo de pesquisa para verificar os fatos. Explique também as consultas. --- PARÁGRAFO John Smith é casado com Lucy Smith. Eles têm cinco filhos, e ele trabalha como engenheiro de software na Microsoft. Quais consultas de pesquisa devo fazer para verificar isso? --- CONSULTAS |
1. "John Smith Microsoft": para verificar se John Smith está de fato empregado na Microsoft. 2. "John Smith Lucy Smith": para verificar se John Smith é casado com Lucy Smith. 3. "Filhos John Smith": para verificar se John Smith tem cinco filhos. |
Se você não tiver certeza de qual sintaxe usar, considere usar Markdown ou XML. Os modelos foram treinados em uma grande quantidade de conteúdo da Web em XML e Markdown, o que pode fornecer melhores resultados.
Dividir a tarefa
Os LLMs (modelos de linguagem grande) geralmente têm um desempenho melhor se a tarefa for dividida em etapas menores. Por exemplo, no prompt de consulta de pesquisa mencionada anteriormente, o prompt pode ser reestruturado para que o modelo primeiro seja instruído a extrair fatos relevantes e, em seguida, instruído a gerar consultas de pesquisa que possam ser usadas para verificar esses fatos.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Você lerá um parágrafo e emitirá consultas a um mecanismo de pesquisa para verificar os fatos. --- PARÁGRAFO John Smith é casado com Lucy Smith. Eles têm cinco filhos, e ele trabalha como engenheiro de software na Microsoft. Quais consultas de pesquisa devo fazer para verificar isso? --- Agora você extrairá declarações factuais e emitirá consultas para verificá-las. Ao emitir uma consulta, use a função PESQUISAR("consulta") DECLARAÇÕES FATUAIS |
1. John Smith é casado com Lucy Smith 2. Eles têm cinco filhos 3. Ele trabalha como engenheiro de software na Microsoft CONSULTAS PESQUISAR("John Smith casado com Lucy Smith") PESQUISAR("Tamanho da família de John Smith") PESQUISAR("John Smith engenheiro de software da Microsoft") |
Observe o uso de sintaxe clara para diferenciar as seções e preparar a saída. Neste exemplo simples, dividir uma tarefa de uma etapa em duas etapas não causa grande impacto, mas em um texto maior com muitas declarações factuais, dividir a tarefa pode fazer uma diferença significativa.
Uso de funcionalidades
Às vezes, podemos fazer com que o modelo use uma funcionalidade em vez de depender de seus próprios parâmetros para obter informações e respostas. A pesquisa, por exemplo, pode ser uma funcionalidade para ajudar a atenuar respostas inventadas e obter informações atualizadas.
Uma maneira simples de usar uma funcionalidade é interromper a geração depois que as chamadas de funcionalidade forem geradas pelo modelo e, em seguida, colar os resultados de volta no prompt. Veja abaixo um exemplo do que pode ser a chamada de acompanhamento depois de fazer as chamadas PESQUISAR acima. Observe como colamos os resultados da pesquisa no prompt e substituímos as chamadas PESQUISAR anteriores.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Você lerá um parágrafo, extrairá declarações factuais e, em seguida, usará os resultados do mecanismo de pesquisa para verificar os fatos --- PARÁGRAFO John Smith é casado com Lucy Smith. Eles têm cinco filhos, e ele trabalha como engenheiro de software na Microsoft. Quais consultas de pesquisa devo fazer para verificar isso? --- DECLARAÇÕES FATUAIS - John Smith é casado com Lucy Smith - John e Lucy têm cinco filhos - John trabalha como engenheiro de software na Microsoft --- Aqui estão várias consultas de pesquisa emitidas para pesquisar as declarações acima: CONSULTAS DE PESQUISA - John Smith casado com Lucy Smith - Número de filhos de John Smith - John Smith engenheiro de software da Microsoft --- Aqui estão os snippets dos resultados da pesquisa: SNIPPETS: [1] … O casamento de John Smith foi em 25 de setembro de 2012… [2] … John Smith foi ao baile acompanhado por sua esposa Lucy [3] John foi acompanhado ao jogo de futebol por suas duas filhas e três filhos [4] … Depois de passar 10 anos na Microsoft, Lima fundou sua própria startup, Tailspin Toys [5] John M é o ferreiro da cidade, e ele se casou com Fiona. Eles têm uma filha chamada Lucy --- Dado os snippets, verifique cada uma das declarações fatuais acima: |
- John Smith é casado com Lucy Smith: confirmado. Snippet [1] e [2] ambos mencionam que Lucy é a esposa de John Smith. - John e Lucy têm cinco filhos: confirmado. Snippet [3] menciona que John estava acompanhado de suas duas filhas e três filhos. - John trabalha como engenheiro de software na Microsoft: parcialmente confirmado. O Snippet [4] menciona que John passou 10 anos na Microsoft, mas não afirma explicitamente que ele trabalha lá. Mais pesquisas podem ser necessárias para confirmar o seu status atual de emprego. |
Solicitação de cadeia de pensamento
Esta é uma variação da técnica de dividir a tarefa. Em vez de dividir uma tarefa em etapas menores, nessa abordagem, a resposta do modelo é instruída a prosseguir passo a passo e apresentar todas as etapas envolvidas. Isso reduz a possibilidade de imprecisão dos resultados e facilita a avaliação da resposta do modelo.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Quem foi o atleta individual mais condecorado (com o máximo de medalhas) nos Jogos Olímpicos realizados em Sydney? Adote uma abordagem passo a passo em sua resposta, cite fontes e forneça justificativas antes de compartilhar a resposta final no formato abaixo: A RESPOSTA é: <name> |
Etapa 1: determinar o ano dos Jogos Olímpicos de Sydney. Os Jogos Olímpicos de Sydney foram realizados no ano 2000. Etapa 2: encontrar uma lista de atletas individuais que ganharam várias medalhas nos Jogos Olímpicos de Sydney de 2000. De acordo com o site oficial dos Jogos Olímpicos, houve vários atletas individuais que ganharam várias medalhas nos Jogos Olímpicos de Sydney de 2000. Alguns dos nomes notáveis incluem: • Ian Thorpe (Austrália) - 3 ouro, 2 pratas, 0 bronze • Pieter van den Hoogenband (Países Baixos) - 2 ouro, 0 prata, 2 bronzes • Lenny Krayzelburg (EUA) - 3 ouro, 0 prata, 0 bronze • Inge de Bruijn (Países Baixos) - 3 ouro, 1 prata, 0 bronze Etapa 3: determinar o atleta com mais medalhas. Depois de revisar a lista de atletas individuais que ganharam várias medalhas nos Jogos Olímpicos de Sydney de 2000, podemos ver que o atleta com mais medalhas é Ian Thorpe, da Austrália, que ganhou um total de 5 medalhas (3 de ouro e 2 de prata). Portanto, a RESPOSTA é: Ian Thorpe. |
Especificar a estrutura de saída
Usar o seu prompt para especificar a estrutura da saída pode ter um efeito significativo sobre a natureza e a qualidade dos resultados. Às vezes, entradas de mensagem do sistema como "escrever apenas fatos verdadeiros" ou "não fabricar informações" podem não ser mitigações adequadas. Em vez disso, solicitar que a resposta do modelo inclua citações também pode ajudar a reduzir a prevalência de respostas incorretas.
Se você instruir o modelo a citar o material de origem quando ele faz instruções, essas instruções têm muito mais probabilidade de serem fundamentadas. A solicitação de citações faz com que o modelo cometa dois erros cada vez que gera uma resposta: o primeiro erro é a resposta inventada e o segundo é a citação incorreta. Observe que quanto mais próxima a citação estiver do texto compatível, menor será a distância que o modelo precisa antecipar a citação, o que sugere que as citações embutidas no texto são mitigações melhores para a geração de conteúdo falso do que as citações no final do conteúdo.
Da mesma forma, se você pedir ao modelo para extrair instruções factuais de um parágrafo, ele poderá extrair instruções compostas, como "X está fazendo Y E Z" (o que pode ser mais difícil de verificar). Isso pode ser evitado especificando uma estrutura de saída como (entidade1, relação, entidade2).
Os exemplos abaixo mostram o uso de citações e direcionando a resposta do modelo para se ajustar a uma estrutura definida.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações | Liste os diferentes comportamentos exibidos pelo agente de Suporte ao Cliente na conversa a seguir. --- olá obrigado por ligar para a farmácia contoso com quem eu estou falando hoje entendo sua frustração maria você pode me dizer o que exatamente está tentando fazer OK com certeza fico feliz em verificar isso para você aguarde um momento vejo aqui que você estava tomando uma forma genérica de lipitor é isso mesmo OK vejo que seu médico parou de prescrever esses medicamentos em 2021 na verdade OK sim ficarei feliz em verificar isso para você porque às vezes há uma lacuna no sistema e simplesmente isso não é reportado então deixe-me dar uma olhada aqui só um momento então estou vendo aqui que seu médico prescreveu esses medicamentos para você de 2012 a 2021 OK sim de acordo com os registros mais recentes fornecidos pelo consultório médico agora você está tomando um medicamento diferente metformina gostaria que prescrevêssemos a receita para você e você possa retirar o metformina 500mg de nada maria nos avise se há mais alguma coisa que possamos fazer por você hoje. --- Como foi a resposta do agente de Suporte ao Cliente? Classifique e liste seus vários comportamentos e cite o motivo por trás da classificação, usando o formato COMPORTAMENTO("motivo") |
1. COMPORTAMENTO educado de saudação("O agente inicia a conversa com uma saudação educada e pede o nome do chamador") 2. COMPORTAMENTO empático("A agente reconhece a frustração de Maria e tenta entender sua preocupação") 3. COMPORTAMENTO atento("O agente escuta o problema do cliente e pede mais detalhes") 4. COMPORTAMENTO proativo("O agente oferece marcar o problema para o cliente") 5. COMPORTAMENTO informativo("O agente fornece as informações relevantes sobre o histórico de prescrição do cliente") 6. COMPORTAMENTO detalhado("O agente verifica se há possíveis lacunas no sistema e fornece uma resposta completa") 7. COMPORTAMENTO confirmatório("O agente confirma a medicação atual com o cliente") 8. COMPORTAMENTO orientado à solução("O agente oferece para preencher a nova prescrição para o cliente") 9. COMPORTAMENTO cortês("O agente agradece ao cliente e oferece assistência adicional, se necessário") |
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. | Clusterize os títulos de notícias a seguir em categorias de tópico com base em padrões vistos dentro do texto. Também mencione a razão por trás de como essas categorias foram definidas. Formato de saída: { "TOPIC_NAME": "", "HEADLINES": [], "REASONING": "" } Títulos de notícias de entrada: 1. "De livros a apresentações em 10s com AR + ML" 2. "Demonstração de 1993 de Yann LeCun, aos 32 anos, apresentando a primeira Rede Convolucional do mundo para reconhecimento de texto" 3. "Modelo de Movimento de Primeira Ordem aplicado para animar pinturas" 4. "Robinhood e outras corretoras bloqueiam literalmente a compra de $GME, $NOK, $BB, $AMC; permitindo vendas" 5. "Ações da United Airlines caíram mais de 5% na negociação pré-mercado" Saída: |
{ "ARTIFICIAL_INTELLIGENCE": { "HEADLINES": [ "De livros a apresentações em 10s com AR + ML", "Demonstração de 1993 do Yann LeCun, aos 32 anos, apresentando a primeira Rede Convolucional do mundo para reconhecimento de texto", "Modelo de Movimento de Primeira Ordem aplicado para animar pinturas" ], "REASONING": "Esses títulos estão relacionadas à inteligência artificial, aprendizado de máquina e seus aplicativos em vários campos." }, "FINANCIAL_MARKETS": { "HEADLINES": [ "Robinhood e outros agentes bloqueiam literalmente a compra de $GME, $NOK, $BB, $AMC; permitindo vendas", "Ações da United Airlines caíram mais de 5% na negociação pré-mercado", "O Bitcoin estava quase em $20.000 há um ano atrás" ], "REASONING": "Esses títulos estão relacionados a mercados financeiros, ações, criptomoedas e plataformas de negociação." } } |
Parâmetros de temperatura e Top_p
Alterar o parâmetro de temperatura altera a saída do modelo. O parâmetro de temperatura pode ser definido entre 0 e 2. Um valor mais alto, 0,7 por exemplo, torna a saída mais aleatória e produz respostas mais divergentes, enquanto um valor menor, como 0.2, torna a saída mais focada e concreta. Uma história fictícia pode ser gerada usando uma temperatura mais alta. Considerando que, para gerar um documento legal, é recomendável usar uma temperatura muito menor. Top_probability é outro parâmetro e é semelhante à temperatura, pois também controla a aleatoriedade da resposta do modelo, mas o faz de uma maneira diferente. A recomendação geral é alterar um desses dois parâmetros de cada vez, não ambos.
Fornecer contexto de fundamentação
Uma das formas mais eficazes de fornecer respostas confiáveis é fornecer os dados do modelo para que ele possa basear suas respostas (dados de fundamentação). Se o caso de uso depender de informações atualizadas e confiáveis e não for puramente um cenário criativo, é altamente recomendável fornecer dados de fundamentação. Em geral, quanto mais perto você conseguir chegar de obter o material de origem para a forma final da resposta desejada, menos trabalho o modelo precisará fazer, o que significa que haverá menos oportunidade de erro. Aqui está um exemplo em que o sistema recebe uma postagem no blog recente que descreve o lançamento do GPT-4 no Serviço OpenAI do Azure e é solicitado a nomear alguns de seus clientes iniciais.
Mensagem do sistema | Usuário | Assistente |
---|---|---|
Você é um assistente de IA que ajuda as pessoas a encontrar informações. Você fornecerá respostas exclusivamente do texto abaixo e responderá em 100 palavras ou menos: "Na Microsoft, estamos constantemente descobrindo novas maneiras de liberar a criatividade, desbloquear a produtividade e elevar o nível das nossas habilidades para que mais pessoas possam se beneficiar do uso da IA. Isso está permitindo que nossos clientes... … reduzindo assim a probabilidade de que o modelo gere uma resposta prejudicial."1 Responda em 100 palavras ou menos. Use listas de marcadores sempre que possível. |
Quem são alguns dos primeiros clientes dos modelos GPT-4 do Serviço OpenAI do Azure? | Aqui estão alguns dos primeiros clientes dos modelos GPT-4 do Serviço OpenAI do Azure: - Epic Healthcare: eles planejam usar o GPT-4 para ajudar médicos e enfermeiros a gastar menos tempo com entrada e investigação de dados. – Coursera: está usando o Serviço OpenAI do Azure com GPT-4 para criar uma nova experiência de aprendizado com IA em sua plataforma. - Coca-Cola: está usando o OpenAI do Azure para criar um hub de conhecimento e planeja aproveitar as funcionalidades multimodal do GPT-4 para marketing, publicidade, relações públicas e relações com o cliente. - Outras empresas de todos os tamanhos estão usando a IA do Azure para melhorar as experiências dos clientes, resumir conteúdo mais extenso, ajudar a escrever software e reduzir riscos ao prever os dados fiscais corretos. |
1 Texto de blog de lançamento do GPT-4 da OpenAI do Azure.
Práticas recomendadas
- Seja específico. Deixe o mínimo de espaço possível para interpretação. Restrinja o espaço operacional.
- Seja descritivo. Use analogias.
- Aprimore-se. Às vezes, será necessário repetir o modelo. Dê instruções antes e depois do conteúdo principal, use uma instrução e uma sugestão etc.
- A ordem é importante. A ordem em que você apresentar as informações ao modelo poderá impactar o resultado. Se você colocar as instruções antes do conteúdo ("resuma o seguinte...") ou depois ("resuma o acima...") pode fazer a diferença na saída. Até mesmo a ordem dos exemplos de poucas tentativas é importante. Isso é conhecido como viés de recência.
- Dê uma “saída” ao modelo. Às vezes, pode ser útil dar ao modelo um caminho alternativo se não for possível concluir a tarefa atribuída. Por exemplo, ao fazer uma pergunta sobre um texto, você poderá incluir algo como "responder com "não encontrado" se não houver resposta." Isso pode evitar que o modelo gere respostas falsas.
Eficiência do espaço
Embora o tamanho da entrada aumente a cada nova geração de modelos GPT, continuará havendo casos em que são fornecidos mais dados do que o modelo consegue lidar. Os modelos GPT dividem palavras em "tokens." Embora as palavras comuns com várias sílabas geralmente são um único token, palavras menos comuns são divididas em sílabas. Às vezes, os tokens podem ser contraditórios, conforme mostrado pelo exemplo abaixo, que demonstra limites de token para diferentes formatos de data. Nesse caso, escrever a palavra inteira do mês é mais eficiente do que uma data completamente numérica. O intervalo atual de suporte a tokens vai de 2.000 tokens com modelos GPT-3 anteriores a até 32.768 tokens com a versão 32k do modelo GPT-4 mais recente.
Por conta desse espaço limitado, é importante usá-lo da forma mais eficiente possível.
- Tabelas – conforme mostrado nos exemplos na seção anterior, os modelos GPT podem entender facilmente os dados em formato de tabela. Essa pode ser uma maneira eficiente de incluir dados, em vez de anteceder cada campo com nome (como com JSON).
- Espaço em branco – espaços em branco consecutivos são tratados como tokens separados, sendo uma maneira fácil de ocupar espaço. Os espaços que antecedem uma palavra, por outro lado, normalmente são tratados como parte do mesmo token que a palavra. Observe cuidadosamente o uso do espaço em branco e não utilize pontuação quando somente um espaço é o suficiente.
Conteúdo relacionado
- Saiba mais sobre o Azure OpenAI.
- Introdução ao modelo ChatGPT com o início rápido do ChatGPT.
- Para obter mais exemplos, confira o repositório do GitHub de Exemplos do OpenAI do Azure