Contador de Tokens de Prompt de Sistema
O prompt de sistema neste exemplo tem apróximadamente 180 tokens. Pode parecer pequeno, mas prompts de sistema em aplicações de produção rotineiramente tem 500 a 3000 tokens quando você adiciona esquemas de ferramentas, instruções de personalidade, salvaguardas e exemplos few-shot. Contar os tokens antes da implantação ajuda a orcar a janela de contexto com precisão em GPT-4o, Claude e Gemini.
Entendendo o Orcamento da Janela de Contexto
Cada chamada de API de LLM tem um limite de janela de contexto. O total de tokens em todas as mensagens na requisição deve caber dentro desse limite:
janela_contexto = prompt_sistema + historico_conversa + definicoes_ferramentas + resposta
| Modelo | Janela de Contexto |
|---|---|
| GPT-4o | 128k tokens |
| GPT-4o mini | 128k tokens |
| Claude 3.5 Sonnet | 200k tokens |
| Claude 3 Haiku | 200k tokens |
| Gemini 1.5 Pro | 1M tokens |
| Gemini 1.5 Flash | 1M tokens |
Para aplicações de chat, o historico de conversa cresce a cada turno. Um prompt de sistema de 500 tokens em uma janela de 128k esta bem para o turno 1, mas uma conversa longa pode preencher a janela independentemente do tamanho do prompt de sistema. O prompt de sistema é um custo fixo; o historico de conversa é um custo variavel.
Diretrizes de Orcamento por Tipo de Aplicação
Chat interativo e agentes
Mantenha prompts de sistema abaixo de 10 a 15% da janela de contexto. Issó preserva espaco para historico de conversa e raciocinio de varias etapas. Um prompt de sistema de 1000 tokens não e inerentemente problematico em um modelo de 128k, mas combine-o com uma conversa de 50 turnos, saídas detalhadas de ferramentas é uma resposta longa de geração de código, e você se apróximara do limite.
Classificação e extração de único turno
O comprimento do prompt de sistema importa menos aqui porque o historico de conversa não se acumula. Você pode usar prompts mais longos com muitos exemplos se eles melhorarem a precisão.
Agentes com muitas ferramentas
Definições de ferramentas consomem tokens. As APIs da OpenAI e Anthropic aceitam esquemas de ferramentas como parte da requisição; eles contam contra a janela de contexto. Um agente complexo com 10 ferramentas e descrições detalhadas de parametros pode ter 2000+ tokens apenas em esquemas de ferramentas antes do prompt de sistema.
Tecnicas de Redução de Tokens
Remova instruções redundantes
Se seu prompt de sistema diz “Seja util, concisó e profissional” e também “Responda de maneira util e profissional com respostas claras e concisas”, essa é a mêsma instrução escrita duas vezes. Uma versão e suficiente.
Aparar frases verbosas
Compare:
Antes: “E da maior importancia que você sempre se lembre de cumprimentar o cliente pelo primeiro nome sempre que o nome dele estiver disponivel para você na conversa.”
Depois: “Cumprimente o cliente pelo nome quando disponivel.”
A versão mais curta transmite instruções identicas com apróximadamente um quarto da contagem de tokens.
Mova exemplos para fora do prompt de sistema
Exemplos few-shot são eficazes mas caros. Um prompt de sistema com cinco exemplos de 200 tokens cada adiciona 1000 tokens de custo fixo a cada requisição. Alternativas:
- Use um sistema de recuperação para buscar exemplos relevantes em tempo de execução com base na consulta do usuario
- Coloque exemplos no primeiro par de mensagens usuario/assistente em vez do prompt de sistema
- Use um modelo ajustado onde os exemplos foram incorporados aos pesos
Use esquemas de ferramentas concisos
Descrições de ferramentas devem descrever o que a ferramenta faz é o que seus parametros significam, não escrever um paragrafo sobre cada uma. Compare:
{
"description": "Esta ferramenta permite consultar informações sobre um pedido específico pelo seu identificador único. Você deve usar esta ferramenta sempre que um cliente perguntar sobre o status do pedido, informações de envio ou os itens que comprou.",
"name": "consulta_pedido"
}
versus:
{
"description": "Retorna status do pedido, informações de envio e itens de linha para um determinado order_id.",
"name": "consulta_pedido"
}
A segunda versão é mais util para o modelo e usa menos tokens.
Cache de Prompt
Se seu prompt de sistema e estavel entre requisições, o cache de prompt elimina a maior parte do custo repetido de token de entrada.
Anthropic
Marque o final do seu prompt de sistema com um ponto de interrupção de controle de cache. Requisições subsequentes com o mêsmo prefixo são servidas do cache a 10% do preco normal de entrada para leituras de cache (a escrita em cache e 25% mais cara que a entrada normal, amortizada em leituras subsequentes).
system_prompt = [
{
"type": "text",
"text": "Você é um agente de suporte ao cliente prestativo...",
"cache_control": {"type": "ephemeral"}
}
]
As entradas de cache duram 5 minutos com atualização automatica no uso.
OpenAI
A OpenAI aplica cache de prompt automaticamente para prompts com mais de 1024 tokens. Leituras de token em cache são faturadas a 50% do preco normal de entrada. Você não precisa optar, mas precisa de um prefixo estavel. Variar o prompt de sistema entre requisições anula o cache.
Quando o cache importa
A $3 por milhão de tokens de entrada (precificação GPT-4o), um prompt de sistema de 1000 tokens custa $0,003 por requisição. A 1 milhão de requisições por dia, issó e $3000 por dia, ou $90.000 por mês. Com 50% de cache, issó cai para $1500 por dia. A economia escala diretamente com o volume de requisições é o comprimento do prompt de sistema.