Prompt e Contexto

From Systems analysis wiki
Jump to navigation Jump to search

Prompt e contexto são conceitos fundamentais na engenharia de prompt para grandes modelos de linguagem (LLMs).

O contexto é um componente criticamente importante do prompt, determinando a capacidade do LLM de gerar respostas precisas, relevantes e úteis. A engenharia de prompt eficaz consiste em grande parte na arte de coletar, filtrar, estruturar e apresentar o contexto correto ao modelo no momento certo, superando ao mesmo tempo as limitações dos LLMs modernos.

Definição de Prompt

Prompt (do inglês prompt) é o conjunto completo de dados de entrada fornecido a um LLM para gerar uma resposta. Não é apenas uma pergunta ou um comando, mas um texto estruturado que pode incluir:

  • Instruções: Orientações diretas ao modelo sobre o que fazer, em que formato, estilo ou tom.
  • Consulta principal (Query): A pergunta direta do usuário ou a descrição da tarefa principal.
  • Contexto: Informações adicionais necessárias para a correta execução da consulta.
  • Exemplos (Few-shot examples): Demonstração do formato ou estilo de resposta desejado em tarefas semelhantes.

A qualidade e a completude do prompt determinam diretamente a relevância, a precisão e a utilidade da resposta do LLM.

Definição de Contexto

Contexto, no âmbito da engenharia de prompt, é qualquer informação dentro do prompt que ajuda o modelo a entender melhor a tarefa, as especificidades da situação ou as expectativas do usuário, mas que não faz parte de seus dados de treinamento originais. O contexto fornece os detalhes situacionais necessários para gerar uma resposta adequada.

O contexto pode incluir:

  • Histórico do diálogo anterior (em chatbots).
  • Dados extraídos de fontes externas (documentos, bancos de dados, páginas da web) — a base do RAG.
  • Informações sobre o usuário (perfil, preferências).
  • Detalhes específicos da tarefa ou situação atual.
  • Exemplos de execução de tarefas semelhantes (como parte do few-shot prompting).

É importante distinguir o contexto fornecido no prompt do conhecimento geral adquirido pelo modelo durante seu pré-treinamento. A engenharia de prompt foca na provisão eficaz de contexto especificamente situacional.

Relação e Influência

Prompt e contexto são conceitos fundamentais no funcionamento dos transformadores, determinando como o modelo percebe os dados de entrada e com base em que gera o resultado. Arquitetonicamente, um transformer não distingue especificamente entre "prompt" e "contexto" – ambos são partes da sequência de tokens de entrada, que são convertidos em embeddings, enriquecidos com informações posicionais e processados coletivamente pelas camadas de autoatenção.

Prompt e contexto estão intrinsecamente ligados: o contexto é uma parte integrante do prompt.

  • O contexto molda o prompt: O engenheiro seleciona e estrutura o contexto relevante para inclusão no prompt.
  • O contexto direciona o modelo: A informação fornecida permite que o LLM restrinja o espaço de respostas possíveis, foque nos aspectos relevantes e evite alucinações.
  • A qualidade do contexto determina a qualidade da resposta: Um contexto insuficiente, irrelevante ou contraditório leva a respostas imprecisas, genéricas ou errôneas. Um contexto preciso e completo aumenta a especificidade e a utilidade da geração.
  • Influência na interpretação das instruções: O contexto pode refinar ou modificar a interpretação de instruções gerais no prompt.

A eficácia de um prompt depende em grande parte do sucesso do engenheiro em coletar, filtrar e apresentar o contexto relevante ao modelo.

Tipos de Contexto

O contexto pode ser classificado por diferentes critérios:

Por fonte:

  • Fornecido pelo usuário: A entrada explícita do usuário, sua pergunta ou descrição da tarefa.
  • Do histórico do diálogo: Mensagens anteriores do usuário e do assistente (memória de curto prazo).
  • Recuperado (Retrieved): Dados de fontes externas (documentos, bancos de dados, web) por meio de RAG.
  • Do perfil/base de conhecimento: Informações de longo prazo sobre o usuário ou o domínio.
  • Estático/Instrutivo: Informações inseridas pelo engenheiro no template do prompt (instruções, exemplos, definições de papéis).

Por dinamicidade:

  • Contexto estático: Parte invariável do prompt (instruções, definições, exemplos). Define a tarefa geral.
  • Contexto dinâmico: Informações que mudam de uma consulta para outra (dados do usuário, resultados de RAG, hora atual). Fornece detalhes específicos.

Por tempo de armazenamento (Memória):

  • Contexto de curto prazo: Histórico da sessão de diálogo atual.
  • Contexto de longo prazo: Dados salvos sobre o usuário ou interações anteriores, que exigem mecanismos de armazenamento e recuperação.

Gerenciamento de Contexto

O gerenciamento eficaz do contexto é uma tarefa chave na engenharia de prompt, especialmente à luz das limitações da janela de contexto dos LLMs. Os principais métodos são:

  • RAG: O método mais comum para trabalhar com grandes volumes de informação. Permite encontrar e incluir dinamicamente no prompt apenas os fragmentos mais relevantes de uma vasta base de conhecimento. Requer um banco de dados vetorial e mecanismos de busca eficientes (lexicais ou semânticos).
  • Chunking (Divisão em blocos): Divisão de documentos grandes em partes semanticamente relacionadas ou de tamanho fixo para indexação e posterior recuperação via RAG.
  • Sumarização: Compressão de um longo histórico de diálogo ou de documentos volumosos para transmitir o sentido principal dentro da janela de contexto limitada.
  • Gerenciamento de Memória (Memory Management): Uso de várias estratégias para armazenar e recuperar o histórico de diálogos em chatbots e agentes (por exemplo, ConversationBufferMemory, ConversationSummaryBufferMemory em LangChain).
  • Janela deslizante (Sliding Window): Manter apenas as N últimas mensagens do diálogo no contexto.
  • Filtragem e Priorização: Seleção dos fragmentos de contexto mais relevantes com base em sua importância (por exemplo, usando pontuações de relevância fornecidas pela busca) antes de montar o prompt final.

O Papel do Contexto na Engenharia de Prompt

  • Aumento da Relevância: O contexto permite que o modelo gere respostas que correspondem precisamente à consulta e à situação do usuário.
  • Redução de Alucinações: Fornecer informações factuais (via RAG) força o modelo a se basear nelas em vez de inventar fatos.
  • Personalização: O contexto sobre o usuário (preferências, histórico) permite adaptar as respostas.
  • Gerenciamento de Estado: Em diálogos e processos de múltiplos passos, o contexto (histórico) garante a continuidade e a consciência do modelo sobre os passos anteriores.
  • Superação das Limitações de Conhecimento do Modelo: O RAG permite que o modelo responda a perguntas sobre eventos que ocorreram após seu treinamento ou sobre dados específicos/privados.

Limitações

  • Limite da Janela de Contexto: Apesar do aumento para 1-2 milhões de tokens nos modelos modernos, o processamento de tais volumes pode ser caro e lento. Exige estratégias eficientes de compressão e seleção (RAG, sumarização).
  • Busca por Contexto Relevante: A eficácia do RAG depende da qualidade da busca. Um contexto recuperado incorretamente pode confundir o modelo ("lixo na entrada, lixo na saída").
  • "Vale da Indiferença" (Valley of Meh): Informações localizadas no meio de um prompt muito longo podem ser ignoradas pelo modelo. Requer a estruturação do prompt (por exemplo, a "técnica do sanduíche").
  • Risco de Injeção de Contexto: Se o contexto for extraído de fontes não confiáveis (por exemplo, páginas da web), ele pode conter instruções maliciosas (injeções de prompt).

Ver também

  • Grandes modelos de linguagem
  • Janela de contexto
  • Bancos de dados vetoriais
  • LangChain

Literatura

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.