Saltar para o conteúdo
Aristo

Aprender

Contrato de saída6 minutos

Combine a forma da resposta

Especifique o formato, a estrutura, a extensão, a língua e o tom do resultado, e use um esquema quando um programa o for ler.

Porque é importante

O contrato de saída é a parte do prompt que decide se vai conseguir usar a resposta. Uma análise brilhante na forma errada tem de ser reescrita; uma lista de campos num formato ligeiramente diferente avaria o programa que a lê. Se sabe para onde vai o resultado (um e-mail, um diapositivo, uma folha de cálculo, uma base de dados), diga o que esse destino precisa.

Um contrato completo cobre o formato (tabela, lista, texto corrido, JSON), a estrutura (secções, colunas, ordem), a extensão, a língua e o tom. O pormenor mais esquecido é o caso-limite: o que deve aparecer quando falta um valor, quando um critério não pode ser avaliado ou quando uma entrada está vazia? O guia da Google recomenda nomear o formato de forma explícita, e o da Anthropic sugere descrever pela positiva a forma pretendida em vez de enumerar o que evitar.

Quando um programa for ler a resposta, vá mais longe. A Anthropic e a OpenAI oferecem saídas estruturadas: envia um esquema JSON com o pedido e a resposta fica obrigada a segui-lo. A documentação da OpenAI explica que o modo JSON garante apenas JSON válido, enquanto as saídas estruturadas garantem também o respeito pelo esquema. Descreva o esquema no prompt na mesma, para que o modelo perceba o que significa cada campo.

Como é um bom prompt

  • 0 — Nada sobre a forma. «Compara as duas propostas.»
  • 1 — Uma única indicação vaga. «Compara as duas propostas numa tabela.»
  • 2 — Formato e extensão aproximada. «…uma tabela com no máximo dez linhas e depois um parágrafo de recomendação.» A estrutura, a língua e o tom continuam em aberto.
  • 3 — Formato, estrutura, extensão, língua e tom. «…colunas: critério, proposta A, proposta B, vencedora. Em português, tom neutro, sem preâmbulo.»
  • 4 — Um contrato completo, com os casos-limite. Um esquema ou modelo, mais a forma de mostrar os casos difíceis: «se um critério não puder ser avaliado, põe “empate” como vencedora e explica-o na recomendação».

Nos prompts de imagem, o contrato cobre a composição, o estilo e a proporção.

Erros comuns

  • Pedir «uma tabela» ou «JSON» sem dizer que colunas ou campos.
  • Não indicar a língua quando a entrada e o leitor usam línguas diferentes.
  • Sinais de extensão contraditórios, como «breve» ao lado de uma longa lista de secções obrigatórias.
  • Nenhuma regra para valores em falta ou ambíguos, de modo que o modelo os inventa ou salta a linha.
  • Confiar só na redação do prompt para JSON lido por máquinas quando a API oferece saídas estruturadas.

Experimente com o seu prompt

Cole um prompt na área de trabalho e imagine a resposta a chegar. Onde a vai pôr e o que teria de corrigir antes de a usar? Escreva essas correções no prompt como contrato de saída, incluindo uma linha para o caso difícil. Depois compare a pontuação da saída e use o teste num modelo real se quiser ver as duas respostas lado a lado.

Exemplos resolvidos

Comparar duas ofertas de emprego

Fraco
Compara estas duas ofertas de emprego.
Forte
<oferta_a>
{{cole aqui a primeira oferta}}
</oferta_a>

<oferta_b>
{{cole aqui a segunda oferta}}
</oferta_b>

Compara para mim as duas ofertas acima.

Formato da resposta:
- Uma tabela com quatro colunas: critério, oferta A, oferta B, melhor para mim.
- Uma linha para cada um destes critérios, por esta ordem: salário, reforma, deslocação, férias, flexibilidade, progressão.
- Por baixo da tabela, um parágrafo com no máximo 80 palavras com a tua recomendação.
- Em português europeu, sóbrio e neutro; começa diretamente pela tabela.
- Se uma oferta não referir um critério, escreve «não indicado» nessa célula e não o contes a favor de nenhuma oferta.

A versão forte fixa o modelo da tabela, a ordem das linhas, a extensão, a língua e o tom, e a forma de mostrar um valor em falta, para que a resposta se leia num relance.

Extrair pedidos de reserva

Fraco
Tira a informação destes e-mails.
Forte
<emails>
{{cole aqui o lote de e-mails}}
</emails>

Para cada e-mail acima, extrai o pedido de reserva de espaço que contém. Um programa vai ler a tua resposta, por isso devolve apenas uma matriz JSON, um objeto por e-mail, com estes campos:
- "email_id": o número que aparece no assunto do e-mail
- "event_type": "wedding", "conference", "party" ou "other"
- "date": a data pedida no formato AAAA-MM-DD, ou null se não for indicada
- "guests": um número inteiro, ou null se não for indicado
- "needs_follow_up": true se a data ou o número de convidados faltar ou for ambíguo; caso contrário, false

Se um e-mail não tiver nenhum pedido de reserva, inclui-o na mesma, com "event_type": "other" e todos os outros campos a null, exceto "email_id" e "needs_follow_up".

«A informação» pode ser qualquer coisa. A versão forte dá os nomes dos campos, os tipos, os valores permitidos e o caso vazio. Através de uma API, passe o mesmo esquema à funcionalidade de saídas estruturadas para que a conformidade seja garantida, e não apenas pedida.

Exercício

Reescreva este prompt para que o modelo conheça o formato, a extensão, a estrutura e o tom da newsletter.

Reescreva este prompt com um esquema de saída exato, incluindo o que fazer quando falta um preço.

Reescreva este prompt para especificar a imagem: composição, estilo, proporção e o que deve ficar fora do enquadramento.

Experimente com o seu próprio prompt

Fontes