A engenharia de prompt é uma disciplina recente focada no desenvolvimento e otimização de prompts para o uso eficiente de modelos de linguagem (LMs) em diversas aplicações e pesquisas. Competências [Conhecimento; Habilidades; Experiências] em engenharia de prompt auxiliam na compreensão dos recursos e limitações de modelos de linguagem grandes (LLMs). Profissionais a usam para melhorar a capacidade dos LLMs em tarefas como responder a perguntas e raciocínio aritmético. Desenvolvedores a utilizam para projetar técnicas de prompt robustas e eficazes que interagem com LLMs e outras ferramentas.
A engenharia de prompt engloba diversas habilidades e técnicas para interagir e desenvolver com LLMs, sendo essencial para construir e entender seus recursos, podendo ser utilizada para aumentar a segurança dos LLMs e criar novos recursos, como aprimorar os LLMs com conhecimento de domínio e ferramentas externas. Este breve guia de engenharia de prompt contém artigos, guias de aprendizagem, modelos, palestras, referências e novas ferramentas relacionadas à engenharia de prompt.
Configurações de LLM: Um Guia para Iniciantes
O desafio de configurar os Modelos de Linguagem Grandes (LLMs) tornou-se premente. O conteúdo foi elaborado para descomplicar os aspectos mais importantes das configurações, tornando-o acessível mesmo para quem não tem muita experiência prévia.
O que são LLMs e por que as configurações importam?
LLMs são modelos de inteligência artificial que podem gerar texto, traduzir idiomas, escrever diferentes tipos de conteúdo criativo e responder às suas perguntas de maneira informativa. As configurações de um LLM permitem que você controle como o modelo gera as respostas, afetando diretamente a precisão, criatividade e o tom da saída.
Parâmetros Essenciais: Temperatura e Top_p
Ao trabalhar com prompts, você pode interagir diretamente com o LLM ou através de uma API, ajustando alguns parâmetros para obter resultados diferentes para seus prompts. Os dois parâmetros mais importantes são:
Temperatura
- O que é: Controla o grau de aleatoriedade das respostas geradas pelo LLM.
- Como funciona:
- Temperatura baixa: As respostas são mais determinísticas, com o modelo escolhendo sempre o token (palavra) mais provável. Isso resulta em respostas mais factuais e concisas.
- Temperatura alta: Aumenta a aleatoriedade, incentivando respostas mais diversas e criativas. O modelo considera uma gama maior de palavras, tornando as respostas mais "imprevisíveis".
- Quando usar:
- Baixa temperatura: Para tarefas como controle de qualidade, respostas factuais, ou onde a precisão é crucial.
- Alta temperatura: Para geração de poemas, histórias, brainstorming, ou onde a criatividade é o objetivo.
Top_p
- O que é: Outra forma de controlar o determinismo do modelo, usando uma técnica de amostragem chamada amostragem de núcleo.
- Como funciona: Top_p limita a amostragem do modelo aos tokens mais prováveis, com base na soma de suas probabilidades.
- Top_p baixo: O modelo se concentra nos tokens mais prováveis, similar à baixa temperatura.
- Top_p alto: O modelo considera uma gama maior de tokens, permitindo maior diversidade nas respostas.
- Quando usar: Semelhante à temperatura, use um valor baixo para respostas factuais e um valor alto para criatividade.
Recomendação: É geralmente recomendado alterar apenas um desses parâmetros (temperatura ou top_p) de cada vez para controlar o comportamento do modelo de forma mais previsível.
Tabela Resumo
| Parâmetro | Efeito | Uso |
|---|---|---|
| Temperatura | Controla a aleatoriedade das respostas | Baixa (fatos), Alta (criatividade) |
| Top_p | Controla a seleção de tokens mais prováveis | Baixo (precisão), Alto (diversidade) |
Glossário de Termos
- LLM (Large Language Model): Modelo de linguagem grande, um tipo de inteligência artificial que processa e gera texto.
- Prompt: Instrução ou entrada que você fornece a um LLM.
- Token: A menor unidade de texto que um LLM processa (geralmente palavras ou partes de palavras).
- Determinístico: Comportamento previsível e consistente.
- Aleatoriedade: Variação ou imprevisibilidade nas respostas.
- API (Application Programming Interface): Interface que permite que programas diferentes se comuniquem.
Ao experimentar e ajustar esses parâmetros, você poderá moldar as respostas do modelo para atender às suas necessidades específicas . Lembre-se, os resultados podem variar dependendo da versão do LLM que você está usando.
Básico de Prompting: Um Guia para Iniciantes
O conteúdo apresentado de modo simples irá apresentar os fundamentos para que você comece a interagir com Modelos de Linguagem Grandes (LLMs) de forma eficaz.
O que é Prompting?
Prompting é a arte de criar instruções (prompts) que você fornece a um LLM para obter as respostas desejadas. Um prompt pode ser uma pergunta, uma instrução ou qualquer tipo de entrada que você dá ao modelo. A qualidade dos resultados que você obtém depende diretamente de como o prompt é elaborado.
Elementos de um Prompt
Um prompt pode incluir diversos elementos para instruir o modelo e obter melhores resultados. Os principais elementos são:
- Instrução/Pergunta: A parte central do seu prompt, definindo a tarefa que o modelo deve realizar.
- Contexto: Informações adicionais que ajudam o modelo a entender o que você quer.
- Entradas: Dados que o modelo precisa para realizar a tarefa (p.ex: texto, dados numéricos) .
- Exemplos: Demonstrações de como você quer que o modelo responda. Isso é especialmente útil com a técnica de "few-shot prompting", que veremos a seguir.
Os elementos de um prompt são componentes essenciais para a sua elaboração e determinam a eficácia das respostas geradas por um LLM. Um prompt pode conter qualquer um dos seguintes componentes:
- Instrução: Define a tarefa ou instrução específica que você deseja que o modelo execute.
- Contexto: Fornece informações externas ou adicionais que podem direcionar o modelo para melhores respostas.
- Dados de entrada: É a entrada ou pergunta para a qual estamos interessados em encontrar uma resposta.
- Indicador de saída: Indica o tipo ou formato da saída desejada.
Nem todos os componentes são necessários para um prompt, e o formato depende da tarefa em questão.
Formatos de Prompt
Existem diferentes formas de formatar seus prompts, dependendo da tarefa que você deseja realizar:
- Prompt Simples:
- <Pergunta>? ou <Instrução>
- Exemplo: "O céu é..."
- Prompt Zero-Shot: Você pede diretamente ao modelo para responder sem nenhum exemplo.
- Prompt Few-Shot: Você fornece exemplos para demonstrar a tarefa ao modelo. O formato pode ser:
- <Pergunta>? <Resposta> <Pergunta>? <Resposta> <Pergunta>? <Resposta> <Pergunta>?
- Em um formato de Pergunta e Resposta:
- Q: <Pergunta>? A: <Resposta> Q: <Pergunta>? A: <Resposta> Q: <Pergunta>? A: <Resposta> Q: <Pergunta>? A:
- Exemplo:
- Isso é incrível! // Positivo Isso é mau! // Negativo Uau, esse filme foi radical! // Positivo Que espetáculo horrível! // Negativo
Dicas para Criar Prompts
- Seja claro e específico: Quanto mais claro for o seu prompt, melhores serão os resultados.
- Forneça contexto: Dê ao modelo informações suficientes para entender a tarefa.
- Use exemplos (few-shot): Demonstre o tipo de resposta que você deseja, especialmente para tarefas mais complexas .
- Experimente: A melhor maneira de aprender é testar diferentes prompts e ver o que funciona melhor.
Com essas noções básicas, você está pronto para começar a explorar o mundo do prompting e obter o máximo dos LLMs.
As dicas gerais para projetar prompts são cruciais para obter bons resultados ao interagir com LLMs. Aqui estão algumas dicas importantes:
Comece Simples: A criação de prompts é um processo iterativo. Comece com prompts simples e adicione mais elementos e contexto gradualmente para obter melhores resultados. O controle de versão do seu prompt é vital . Use um ambiente simples como o da OpenAI ou Cohere para começar. Muitas vezes, a especificidade, simplicidade e concisão resultam em melhores resultados . Dividir tarefas grandes em subtarefas menores pode evitar adicionar complexidade ao design do prompt no início.
A Instrução: Use comandos como "Escrever", "Classificar", "Resumir", "Traduzir", "Ordenar" etc., para instruir o modelo sobre o que você deseja alcançar . Experimente diferentes palavras-chave, contextos e dados para ver o que funciona melhor para sua tarefa específica. Quanto mais específico e relevante for o contexto, melhor .
Especificidade: Seja específico sobre a instrução e a tarefa que você deseja que o modelo execute. Quanto mais descritivo e detalhado for o prompt, melhores serão os resultados. Isso é importante para obter o resultado ou estilo de geração desejado. Fornecer exemplos no prompt é eficaz para obter a saída desejada em formatos específicos.
Evite Imprecisões: É melhor ser direto e específico em vez de tentar ser "inteligente" ao criar prompts .
Fazer ou não fazer?: Evite dizer o que não fazer; em vez disso, concentre-se em dizer o que fazer. Isso incentiva a especificidade e a atenção aos detalhes que levam a boas respostas.
Exemplos de Prompts: Guia Prático para Iniciantes
Esta seção apresenta exemplos práticos de prompts para ajudar você a começar a usar LLMs. Os exemplos demonstram como diferentes tipos de prompts podem ser usados para alcançar diversos objetivos.
Extração de Informações
Objetivo: Extrair informações específicas de um texto.
Prompt: Extraia o nome dos lugares no texto a seguir. Formato desejado: Local: <lista_de_nomes_de_empresa_separados_por_vírgula> Input: "Embora estes desenvolvimentos sejam encorajadores para os investigadores, muito ainda é um mistério. “Muitas vezes temos uma caixa preta entre o cérebro e o efeito que vemos na periferia”, diz Henrique Veiga-Fernandes, neuroimunologista do Centro Champalimaud para o Desconhecido em Lisboa. “Se queremos utilizá-lo no contexto terapêutico, precisamos de facto de perceber o mecanismo.""
Saída: Local: Centro Champalimaud para o Desconhecido, Lisboa
Tradução
Objetivo: Traduzir um texto para outro idioma.
Prompt: ### Instrução ### Traduza o texto abaixo para o espanhol: Texto: "olá!"
Saída: ¡Hola!
Recomendações (Evitando o que NÃO fazer)
Objetivo: Obter recomendações, evitando pedir informações pessoais.
Prompt: O agente a seguir recomenda filmes para um cliente. O agente é responsável por recomendar um filme dos principais filmes de tendências globais. Deve abster-se de perguntar aos usuários sobre suas preferências e evitar pedir informações pessoais. Se o agente não tiver um filme para recomendar, ele deve responder "Desculpe, não foi possível encontrar um filme para recomendar hoje.". Cliente: Por favor, recomende um filme baseado nos meus interesses. Agente:
Saída: Desculpe, não tenho nenhuma informação sobre seus interesses. No entanto, aqui está uma lista dos principais filmes de tendências globais no momento: [lista de filmes]. Espero que encontre algo que goste!
Estes são apenas alguns exemplos de como os prompts podem ser usados. Ao experimentar e adaptar esses exemplos, você pode criar prompts para uma variedade de tarefas. Lembre-se de ser específico, fornecer contexto e usar exemplos (few-shot) para melhores resultados.
Aqui estão exemplos de prompts para diferentes tarefas, juntamente com explicações:
1. Resumo de Texto
- Prompt (Certo): "Explique os antibióticos".
- Saída (Exemplo): "Os antibióticos são um tipo de medicamento usado para tratar infecções bacterianas... "
- Prompt (Errado): "Antibióticos?" (Muito vago).
- Motivo: Falta especificidade. O modelo não tem contexto suficiente para gerar um resumo útil.
2. Extração de Informações
- Prompt (Certo): "Mencione o produto baseado em modelo de linguagem grande mencionado no parágrafo acima".
- Saída (Exemplo): "O produto baseado em modelo de linguagem grande mencionado no parágrafo acima é o ChatGPT."
- Prompt (Errado): "Quais são os produtos?". (Vago e pode levar a uma lista desnecessária).
- Motivo: Falta direcionamento. Não especifica a informação a ser extraída.
3. Resposta à Pergunta
- Prompt (Certo): "Responda a pergunta com base no contexto abaixo. Mantenha a resposta curta e concisa. Responda 'Não tenho certeza sobre a resposta' se não tiver certeza da resposta. Contexto: Teplizumab... Pergunta: De onde veio originalmente o OKT3? Responder:".
- Saída (Exemplo): "Camundongos."
- Prompt (Errado): "OKT3?". (Incompleto e não fornece contexto).
- Motivo: Ausência de contexto e pergunta clara.
4. Classificação de Texto
- Prompt (Certo): "Classifique o texto em neutro, negativo ou positivo. Texto: Acho que as férias estão boas. Sentimento: neutro. Texto: Acho que a comida estava boa. Sentimento:".
- Saída (Exemplo): "neutro"
- Prompt (Errado): "A comida é boa. Qual o sentimento?".
- Motivo: Falta de exemplos ou formato de saída desejado. O modelo pode não entender o formato esperado.
5. Conversação
- Este tópico se refere a instruir o LLM sobre como se comportar, sua intenção e sua identidade . Exemplos de prompts específicos não foram fornecidos no texto.
6. Geração de Código
- Prompt (Certo): ""Tabela departamentos, colunas = [DepartmentId, DepartmentName] Alunos da tabela, colunas = [DepartmentId, StudentId, StudentName] Crie uma consulta MySQL para todos os alunos do Departamento de Ciência da Computação"".
- Saída (Exemplo): SELECT AlunoId, AlunoNome DE alunos WHERE DepartmentId IN (SELECT DepartmentId FROM departamentos WHERE DepartmentName = 'Ciência da Computação');
- Prompt (Errado): "Código?". (Muito genérico e não fornece informações suficientes).
- Motivo: Ausência de especificação da linguagem e da tarefa a ser executada.
7. Raciocínio
- Prompt (Certo): "Quanto é 9.000 * 9.000?"
- Saída (Exemplo): 81.000.000
- Prompt (Errado): "Resolva o problema.". (Não especifica o problema ou o tipo de raciocínio desejado).
- Motivo: Falta de especificidade e clareza na tarefa.
