Prompt de Sistema da API Perplexity Ignorado no Modelo Sonar: Correção
🔍 WiseChecker

Prompt de Sistema da API Perplexity Ignorado no Modelo Sonar: Correção

Ao usar a API Perplexity com o modelo Sonar, você pode perceber que o prompt de sistema cuidadosamente elaborado é completamente ignorado. O modelo retorna respostas como se nenhuma instrução tivesse sido dada, usando seu comportamento padrão. Isso acontece porque o modelo Sonar tem um requisito específico para a estruturação do prompt de sistema na chamada da API. Este artigo explica a causa exata do problema e fornece uma correção passo a passo para garantir que seu prompt de sistema seja aplicado corretamente.

Principais Conclusões: Corrigindo o Prompt de Sistema Ignorado no Sonar

  • Ordem dos papéis no array messages: A mensagem com papel system deve ser o primeiro item no array messages, antes de qualquer mensagem user ou assistant.
  • Parâmetro model explícito: Defina o parâmetro model como sonar ou sonar-pro no corpo da requisição para garantir o comportamento correto do endpoint.
  • Sem espaços extras ou formatação: Mantenha o conteúdo do prompt de sistema simples, sem markdown ou quebras de linha excessivas, para evitar erros de análise.

ADVERTISEMENT

Por que o Modelo Sonar Ignora o Prompt de Sistema

A API Perplexity suporta vários modelos, cada um com sua própria lógica de manipulação de mensagens. O modelo Sonar foi projetado para priorizar a mensagem com papel user para contexto, especialmente quando o prompt de sistema não está no início do array messages. Se sua requisição API enviar o prompt de sistema após uma mensagem do usuário, ou se o prompt de sistema contiver caracteres especiais ou formatação excessiva, o modelo Sonar pode descartá-lo silenciosamente. Esse comportamento não é um bug, mas uma escolha de design para otimizar a velocidade e relevância das respostas em consultas conversacionais. A correção exige ordenação e formatação precisas do array messages.

Como Funciona o Array Messages da API

A API espera um array JSON chamado messages que contém um ou mais objetos de mensagem. Cada objeto tem um campo role (system, user ou assistant) e um campo content. A ordem desses objetos é importante. Para o modelo Sonar, a mensagem system deve ser o primeiro elemento. Se qualquer mensagem user ou assistant vier antes da mensagem system, o prompt de sistema é ignorado.

Erro Comum: Inverter a Ordem

Muitos desenvolvedores constroem o array messages adicionando o prompt de sistema após a consulta do usuário. Esse é um padrão natural ao usar bibliotecas de código que processam a entrada do usuário primeiro. O array resultante fica como [{role: "user", content: "..."}, {role: "system", content: "..."}]. O modelo Sonar trata a primeira mensagem como a instrução principal e ignora mensagens system subsequentes.

Passos para Corrigir o Prompt de Sistema Ignorado

Siga estes passos para corrigir sua requisição API e fazer o modelo Sonar respeitar seu prompt de sistema.

  1. Abra seu cliente API ou editor de código
    Acesse o script, coleção Postman ou comando curl que envia requisições para o endpoint da API Perplexity https://api.perplexity.ai/chat/completions.
  2. Localize o array messages
    Encontre o corpo JSON da sua requisição POST. Procure pelo array messages. Ele deve conter um ou mais objetos com campos role e content.
  3. Mova a mensagem system para a primeira posição
    Garanta que o objeto com "role": "system" seja o primeiro elemento do array. O array corrigido deve ficar assim:
    [{"role": "system", "content": "Você é um assistente prestativo que responde em português."}, {"role": "user", "content": "Qual é a capital do Brasil?"}]
  4. Verifique o parâmetro model
    Confira se o campo model no corpo da requisição está definido como "sonar" ou "sonar-pro". Por exemplo: "model": "sonar". Isso garante que a requisição seja roteada para o manipulador de modelo correto.
  5. Simplifique o conteúdo do prompt de sistema
    Remova qualquer formatação markdown, tags HTML ou quebras de linha excessivas do prompt de sistema. Mantenha o conteúdo simples e conciso. Por exemplo, use "Você é um assistente prestativo." em vez de "Você é um assistente prestativo."
  6. Envie a requisição corrigida
    Execute a chamada API novamente. A resposta agora deve refletir seu prompt de sistema. Teste com uma instrução simples como "Responda em uma frase." para confirmar a mudança.

ADVERTISEMENT

Se o Prompt de Sistema Ainda For Ignorado Após a Correção

Se o problema persistir, verifique estas causas e soluções adicionais.

Chave API com Permissões Limitadas

Sua chave API pode estar restrita a um modelo ou nível de uso específico. Verifique se sua chave tem acesso ao modelo Sonar consultando o painel da API Perplexity em API Keys > Permissions. Se a chave estiver restrita a um modelo diferente, gere uma nova chave com acesso total aos modelos.

Prompt de Sistema Excede o Limite de Tokens

O modelo Sonar tem um comprimento máximo de contexto de 4096 tokens. Se o prompt de sistema mais a mensagem do usuário exceder esse limite, o modelo pode truncar ou ignorar o prompt. Reduza o prompt de sistema para menos de 500 tokens. Use a ferramenta de tokenização na documentação da API Perplexity para contar tokens.

Múltiplas Mensagens System no Array

O modelo Sonar reconhece apenas a primeira mensagem system. Se você incluir mais de uma mensagem system no array, apenas a primeira é usada. Remova mensagens system duplicadas e mescle seu conteúdo em uma única mensagem system no início do array.

Cache de Requisições Anteriores

Alguns clientes API armazenam respostas em cache para evitar chamadas redundantes. Limpe o cache do seu cliente ou adicione um campo user único ao corpo da requisição para evitar o cache. O campo user pode ser uma string aleatória como "user": "teste-1234".

Comparação de Suporte a Prompt de Sistema entre Modelos da API Perplexity

Item Sonar / Sonar-Pro Outros Modelos (ex.: Mixtral, Llama)
Exigência de posição do prompt de sistema Deve ser o primeiro no array messages Qualquer posição é aceita
Máximo de tokens no prompt de sistema 500 tokens recomendados Até 1024 tokens
Sensibilidade a formatação Apenas texto simples Markdown básico permitido
Múltiplas mensagens system Apenas a primeira é usada Todas são mescladas

O modelo Sonar exige formatação mais rigorosa do prompt de sistema do que outros modelos da API Perplexity. Sempre coloque a mensagem system primeiro e mantenha-a simples. Para instruções complexas, considere usar um modelo diferente como mixtral-8x7b-instruct, que aceita prompts de sistema em qualquer ordem.

Agora você pode definir prompts de sistema de forma confiável para o modelo Sonar colocando a mensagem system primeiro no array messages e mantendo seu conteúdo simples. Teste sua correção com uma instrução simples para confirmar que o modelo a segue. Para uso avançado, explore a documentação da API Perplexity para os parâmetros temperature e top_p para controlar ainda mais o comportamento do modelo.

ADVERTISEMENT