O que é Engenharia de Prompt?

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
Introdução
Um prompt é como uma instrução clara ou um conjunto de instruções que você dá a uma ferramenta ou pessoa. Seja uma palavra-chave que você digita em um motor de busca, um comando para um programa de computador ou uma pergunta que você faz a um amigo, os prompts os ajudam a entender o que você está procurando ou o que você quer que eles façam.
A engenharia de prompts, a arte e a ciência de criar prompts eficazes, tornou-se cada vez mais essencial com o aumento da popularidade dos Grandes Modelos de Linguagem (LLMs), pois permite a utilização de todas as capacidades dos LLMs.
Este artigo o ajudará a dominar a engenharia de prompts através da perspectiva dos Modelos de Linguagem.
Prompts e LLMs
Ao trabalhar com engenharia de prompts, você geralmente usa uma API para interagir com o LLM. Essas APIs consistem em um conjunto de hiperparâmetros que podem ser ajustados para obter os resultados desejados. Nesta discussão, examinaremos a API de Inferência do Hugging Face (conforme ilustrado na imagem abaixo) e exploraremos a importância de cada parâmetro.
from huggingface_hub import InferenceClient
# Parâmetro de Endpoints de Inferência HF
endpoint_url = "https://YOUR_ENDPOINT.endpoints.huggingface.cloud"
hf_token = "hf_YOUR_TOKEN"
# Cliente de Streaming
client = InferenceClient(endpoint_url, token=hf_token)
# Parâmetros de Geração
gen_kwargs = {
"max_new_tokens": 512,
"top_k": 50, # Ajustando o parâmetro de amostragem top-k
"top_p": 0.8, # Ajustando o parâmetro de amostragem nucleus
"temperature": 0.5, # Ajustando a temperatura para aleatoriedade
"repetition_penalty": 1.5, # Ajustando a penalidade de repetição para evitar respostas repetitivas
"stop_sequences": ["\nUser:", "", "</s>"],
}
# Prompt
prompt = "What are the effects of climate change on"
# Geração de texto
stream = client.text_generation(prompt, stream=True, details=True, **gen_kwargs)
Conforme mencionado acima, diferentes hiperparâmetros podem ser ajustados para influenciar a qualidade e a diversidade do texto gerado. Vamos analisar mais de perto os vários hiperparâmetros incluídos na propriedade gen_kwards acima -
Hiperparâmetros
Temperatura
É como ajustar o nível de tempero na sua culinária – temperaturas mais altas significam mais aleatoriedade, como adicionar tempero para dar sabor, enquanto temperaturas mais baixas mantêm as coisas previsíveis, como seguir uma receita. Por exemplo, em tarefas de escrita criativa, como gerar poesia ou fazer brainstorming de ideias para histórias, uma configuração de temperatura mais alta pode resultar em um texto mais diverso e imaginativo.
Top_k
Pense nisso como restringir as escolhas em uma biblioteca aos livros mais populares. Ele seleciona os tokens mais prováveis durante a geração de texto, refinando a saída. Considere um chatbot de atendimento ao cliente que auxilia os usuários com dúvidas comuns. Ao definir um parâmetro top_k, o chatbot pode priorizar as respostas com base nas informações mais relevantes, garantindo que os usuários recebam assistência precisa e útil sem serem sobrecarregados por detalhes desnecessários.
Top_p
Top_p define um limite para os tokens considerados, escolhendo tokens até que uma probabilidade cumulativa de p seja atingida. Tanto top_k quanto top_p são usados para controlar a diversidade e a qualidade.
Max_new_tokens
É como definir um limite de palavras para uma redação. Max_new_tokens determina quanto texto o modelo pode gerar, mantendo-o dentro de um comprimento especificado. Por exemplo, se você estiver gerando respostas para um chatbot, definir um limite máximo de tokens garante que as respostas permaneçam concisas e relevantes para o contexto da conversa ou você pode aumentar
Penalidade de repetição
A penalidade de repetição desencoraja o modelo de reutilizar tokens, promovendo a diversidade no texto gerado. Em uma aplicação de IA conversacional, como um assistente virtual, definir uma penalidade de repetição garante que as respostas do assistente permaneçam variadas e naturais durante interações prolongadas.
Penalidade de Frequência
A penalidade de frequência incentiva o modelo a explorar tokens menos comuns, tornando o texto mais único. Suponha que você esteja desenvolvendo um aplicativo agregador de notícias que resume artigos de várias fontes. Ao aplicar uma penalidade de frequência, o aplicativo pode priorizar publicações menos conhecidas ou tópicos de nicho, oferecendo aos usuários uma gama diversificada de perspectivas.
Penalidade de Presença
A penalidade de presença orienta o modelo a gerar texto que se alinha a critérios específicos ou evita certos tópicos, garantindo relevância. Em um sistema de moderação de conteúdo para fóruns online, definir uma penalidade de presença ajuda a filtrar linguagem inadequada ou ofensiva. Por exemplo, se um usuário tentar postar comentários discriminatórios, a penalidade de presença orientaria o sistema a gerar uma mensagem de aviso.
Dicas gerais para criar prompts melhores
Começando com a Simplicidade
Você deve começar criando prompts simples e diretos e, gradualmente, introduzir complexidade através do refinamento, em vez de sobrecarregar com todas as informações no início. Assim, ao lidar com uma tarefa grande, tente dividi-la em subconjuntos.
Orientação Clara
Os comandos devem ser claros e explícitos. Por exemplo:
Prompt ruim: " The quick brown fox jumps over the lazy dog, Translate this."
Prompt melhor: "Translate the following English text into Spanish: 'The quick brown fox jumps over the lazy dog.'"
Especificidade
Melhore a clareza do prompt incluindo exemplos relevantes e instruções detalhadas.
Prompt ruim: “Write about social media and its effects.”
Prompt melhor: “Write a 500-word essay discussing social media's impact on teenagers' mental health. Include statistics from reputable sources such as the American Psychological Association and provide real-life examples of individuals affected by excessive social media use. “
Evitando Confusão
Garanta que os prompts sejam claros e diretos para evitar ambiguidade nas respostas do modelo.
Melhoria Contínua
Refine os prompts iterativamente com base no feedback e no desempenho para otimizar os resultados.
Ferramentas, frameworks e bibliotecas para engenharia de prompts em LLMs
A escolha das melhores ferramentas de engenharia de prompts depende se você está otimizando prompts para experimentação, implantação em produção ou fluxos de trabalho específicos do modelo.
Hugging Face Transformers
Ele oferece interfaces para o ajuste fino de modelos em tarefas específicas e permite a criação de prompts personalizados.
OpenAI Codex API
A API da OpenAI inclui recursos para engenharia de prompts, permitindo que os usuários gerem código ou texto com base em prompts.
GPT-3 Playground
Plataformas como o GPT-3 Playground oferecem ambientes interativos para experimentar com prompts e observar as respostas do modelo em tempo real.
Google's T5 Framework
T5 (Text-To-Text Transfer Transformer) é um framework que transforma todas as tarefas de PNL em um formato texto-a-texto, simplificando a engenharia de prompts para diversas tarefas.
AllenNLP
AllenNLP oferece ferramentas para construir e avaliar modelos de PNL, incluindo mecanismos para design e avaliação de prompts.
Técnicas Avançadas para Engenharia de Prompts
Nesta seção, abordarei algumas técnicas SOTA (State-of-the-art) que são implementadas sob o guarda-chuva da Engenharia de Prompts em processamento de linguagem natural (PNL) e ajuste fino de modelos de linguagem. Pode haver uma ligeira sobreposição com os métodos mencionados acima, considere esta uma abordagem mais formal e estruturada para entender as técnicas:
Prompting Zero-shot
Como evidente pelo termo ‘zero-shot’, a inferência é direta sem fornecer contexto adicional ao LLM. Em vez disso, ele gera resultados com base em seu conhecimento pré-existente.
Prompt:
Quem foi o primeiro homem no espaço?
Saída:
O primeiro homem no espaço foi Yuri Gagarin, um cosmonauta soviético.
Prompting Few-shot
No que diz respeito ao Prompting Few-shot, trata-se de dar uma pequena orientação ao Modelo de Linguagem (LLM) antes de fazer a pergunta. Este contexto extra serve a dois grandes propósitos: em primeiro lugar, ajuda o LLM a compreender o que está a acontecer, para que possa dar uma resposta mais precisa. Em segundo lugar, permite que o LLM aprenda coisas novas que ainda não encontrou, mantendo o seu conhecimento atualizado e adaptável.
Prompt:
Componha um poema com três estrofes, cada uma focando em um tema diferente: amor, natureza e solidão.
Saída:
Em teu abraço, encontro meu consolo,
Uma sinfonia de corações batendo como um só,
Perdido na dança do abraço da paixão.
Contemple as árvores sussurrantes, suas folhas a brilhar,
A tela da natureza pintada com tons divinos,
Serenidade encontrada no murmúrio do fluir.
Na quietude da noite, estou sozinho,
Uma alma solitária sob o céu estrelado,
Encontrando consolo no silêncio, completamente por conta própria.
Encadeamento de Prompts
O encadeamento de prompts é uma técnica poderosa para dividir tarefas complexas em etapas mais gerenciáveis. Ao alimentar a saída de um prompt na entrada de outro, é possível otimizar processos e resolver problemas complexos de forma eficiente.
Esta abordagem oferece várias vantagens: simplifica as instruções, identifica áreas de dificuldade para uma resolução de problemas focada e melhora a validação dos resultados. Além disso, o encadeamento de prompts permite a execução paralela de tarefas, possibilitando o processamento simultâneo de múltiplas subtarefas.
Prompt-1:
Existe uma rotina de exercícios, disponível no site <link>:
Por favor, identifique quaisquer exercícios mencionados no site. Forneça-os como citações diretas, entre as tags XML <quotes></quotes>. Se não houver exercícios, por favor, diga "Não há exercícios mencionados."
Saída-1:
<quotes>
"10 flexões"
"20 agachamentos"
</quotes>
Prompt-2:
Aqui estão os exercícios mencionados na rotina, entre as tags XML <quotes></quotes>:
<quotes>
"10 flexões"
"20 agachamentos"
</quotes>
Por favor, use estes exercícios para construir uma rotina de exercícios. Certifique-se de que suas instruções sejam claras e fáceis de seguir.
Saída-2:
# Gera um plano de treino abrangente
Prompting de Cadeia de Pensamento
A técnica de Prompting de Cadeia de Pensamento espelha o cenário em que um aluno recebe um problema de exemplo e é subsequentemente desafiado a resolver problemas semelhantes.
Prompt:
P: Sally tem 50 maçãs. Ela dá 15 para sua amiga e depois compra o triplo do que deu. Quantas maçãs Sally tem agora?
R: Sally começou com 50 maçãs. Depois de dar 15, ela ficou com 50 - 15 = 35 maçãs. Em seguida, ela compra o triplo do que deu, o que é 3 * 15 = 45 maçãs. Adicionando as maçãs que ela comprou ao que ela tinha, Sally agora tem 35 + 45 = 80 maçãs. Portanto, Sally tem 80 maçãs.
P: Joe tem 20 ovos. Ele compra mais 2 caixas de ovos. Cada caixa contém 12 ovos. Quantos ovos Joe tem agora?
Saída:
R: Joe começou com 20 ovos. 2 caixas de 12 ovos são 24 ovos. 20 + 24 = 44. Portanto, Joe tem 44 ovos, e a resposta é 44.
Em situações em que você tem menos exemplos ou nenhum exemplo, adicionar uma frase como ""Vamos pensar passo a passo"" ao prompt original é eficaz para melhorar o desempenho do modelo.
Cadeia de Pensamento Automática (Auto-CoT)
Ele gera automaticamente exemplos que mostram ao LLM como resolver problemas. Esses exemplos são chamados de "demonstrações" e são criados ao solicitar que o LLM articule seu processo de pensamento e elucide como abordaria um problema.
Como funciona o Auto-CoT?
O Auto-CoT funciona em duas etapas:
- Agrupamento de perguntas: Primeiro, ele agrupa perguntas semelhantes. Isso ajuda a garantir que as demonstrações cubram uma ampla gama de diferentes tipos de problemas.
- Amostragem de demonstrações: Em seguida, ele seleciona uma pergunta representativa de cada cluster e pede ao LLM para gerar uma demonstração para ela. O LLM faz isso pensando em voz alta e explicando seu raciocínio passo a passo.
Ajuste Fino de LLMs
Frequentemente, o ajuste fino não é considerado parte da engenharia de prompts, mas, de forma semelhante à engenharia de prompts, é um método para adaptar grandes modelos de linguagem (LLMs) a tarefas específicas.
Envolve treinar o modelo já treinado com nosso conjunto de dados rotulados especializado, ajustando assim seus parâmetros. Embora as últimas camadas sejam frequentemente ajustadas para se adequar aos novos dados, o ajuste fino pode envolver a modificação de parâmetros em várias camadas para capturar melhor as características específicas do domínio, mantendo o conhecimento aprendido no treinamento original.
Tradicionalmente, o ajuste fino era um processo complexo e intensivo em recursos que exigia hardware poderoso, experiência em aprendizado de máquina e grandes quantidades de dados rotulados.
No entanto, agora com plataformas como Hugging Face, que fornecem modelos pré-treinados e pipelines de ajuste fino fáceis de usar, o ajuste fino tornou-se mais acessível e eficiente. Ao integrar as capacidades do Hugging Face com abordagens tradicionais de ajuste fino, podemos aproveitar modelos pré-treinados como pontos de partida, reduzindo a necessidade de grandes quantidades de dados rotulados e experiência.
A Truefoundry também oferece a facilidade de ajustar seus LLMs, com sua interface intuitiva e simples, você pode ajustar seus modelos em 3 passos simples:
- Conectando seu banco de dados
- Comparando entre trabalhos de finetuning e escolhendo o certo para suas necessidades.
- Implante seu modelo ajustado.
Geração Aumentada por Recuperação (RAG)
No RAG, a recuperação é usada como um componente ao lado da geração para aprimorar o desempenho do modelo em tarefas como resposta a perguntas e geração de texto. O RAG é adaptável para cenários com fatos em evolução, o que é valioso porque o conhecimento fixo dos LLMs não consegue acompanhar. O RAG permite que os modelos de linguagem pulem o retreinamento, acessando as informações mais recentes por meio da geração baseada em recuperação para produzir resultados confiáveis.
Nos últimos anos, os sistemas RAG progrediram do RAG Ingênuo básico para modelos RAG Avançado e RAG Modular mais sofisticados.
O RAG Ingênuo recupera informações com base na entrada do usuário, mas tem dificuldades com a precisão devido a dados desatualizados e respostas irrelevantes. O RAG Avançado melhora isso ajustando o processo de recuperação, tornando-o mais preciso e relevante.
O RAG Modular vai além, oferecendo diferentes módulos personalizáveis, como busca e memória, permitindo flexibilidade na resolução de problemas específicos. No geral, esses avanços visam tornar os sistemas de conversação mais inteligentes e confiáveis, gerenciando melhor a recuperação de informações e a geração de respostas.
Truefoundry também oferece uma interface ponta a ponta para RAG com a capacidade de integrar-se a qualquer armazenamento de metadados, embeddings ou modelos LLM
Aprendizagem por reforço a partir de feedback humano (RLHF)
Por um bom tempo, a ideia de treinar um modelo de linguagem usando aprendizagem por reforço parecia inviável devido a desafios tanto de engenharia quanto algorítmicos. Entender os detalhes técnicos do RLHF envolverá vários pré-requisitos de aprendizagem por reforço, então tentarei manter a explicação bem geral.
Considere um problema em que nosso objetivo é treinar um robô para navegar em um labirinto. Tradicionalmente, na Aprendizagem por Reforço (RL), o robô visa alcançar seu objetivo rapidamente e recebe feedback com base em seu desempenho no labirinto. Mas a Aprendizagem por Reforço a partir de Feedback Humano (RLHF) vai um passo além, permitindo que humanos forneçam informações adicionais. Eles podem comentar sobre mais do que apenas a velocidade, como se o robô evita obstáculos ou segue um caminho que parece bom.
Por exemplo, se o robô escolher um caminho que desvia de obstáculos ou segue uma rota que os humanos gostam, ele pode receber alguns pontos de bônus. Dessa forma, o robô aprende não apenas a alcançar o objetivo rapidamente, mas também a considerar o que os humanos preferem.
Na engenharia de prompts para grandes modelos de linguagem (LLMs), o RLHF é bastante útil. Ele garante que os prompts melhorem na obtenção das respostas que desejamos, aprimora a qualidade dos prompts com verificações humanas, permite-nos personalizar prompts para se adequarem às nossas preferências e acompanha as mudanças no que é popular ao longo do tempo. Ao incluir a entrada humana, ajuda a garantir que os resultados estejam mais próximos do que procuramos, em diferentes tarefas e campos.
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI













.webp)






.webp)

.webp)
.webp)





.png)



