Gerenciamento de Prompts
Visão Geral
O Floopy permite que você gerencie prompts diretamente no dashboard, em vez de deixá-los fixos no código da sua aplicação. Crie um prompt uma vez, referencie-o pelo nome nas suas chamadas de API e atualize-o a qualquer momento sem precisar fazer deploy novamente. O gateway resolve a versão mais recente no momento da requisição.
Criando Prompts
Acesse Prompts no dashboard e clique em Create Prompt. Dê um nome e escreva o corpo do prompt. Você pode criar prompts de sistema, templates de mensagens de usuário ou templates de conversa completos.
Os prompts suportam variáveis usando a sintaxe de chaves duplas:
Summarize the following {{document_type}} in {{language}}:
{{content}}Quando o gateway processa uma requisição que referencia este prompt, ele substitui os valores das variáveis fornecidos na chamada de API. Se uma variável obrigatória estiver ausente, o gateway retorna um erro.
Histórico de Versões
Toda vez que você edita um prompt, o Floopy salva a versão anterior automaticamente. O histórico de versões exibe:
- Todas as versões anteriores com timestamps.
- Quem fez cada alteração.
- Uma comparação lado a lado (diff) entre quaisquer duas versões.
Você pode reverter para uma versão anterior a qualquer momento selecionando-a e clicando em Restore.
Resolução em Tempo Real
Os prompts são resolvidos pelo gateway no momento da requisição. Quando você atualiza um prompt no dashboard, todas as requisições futuras usam imediatamente a nova versão — não há atraso de cache nem período de propagação. Isso significa que você pode iterar na qualidade dos prompts em produção sem alterar o código da sua aplicação.
Rastreamento de Feedback
Anexe feedback às respostas dos prompts para acompanhar a qualidade ao longo do tempo. O Floopy suporta:
- Positivo / negativo — feedback binário simples de usuários finais ou revisores.
- Dimensões customizadas — avalie as respostas em dimensões específicas como precisão, tom, utilidade, ou qualquer critério personalizado que você definir.
O feedback é vinculado à versão específica do prompt que gerou a resposta, para que você possa ver como a qualidade muda entre as versões.
Dimensões avançadas de feedback e analytics estão disponíveis no plano Pro e superiores.
Testes A/B
Divida o tráfego entre duas ou mais versões de prompt para comparar o desempenho. Defina uma porcentagem de divisão e deixe o Floopy rotear as requisições de acordo. Acompanhe feedback e métricas por variante para determinar qual versão tem melhor desempenho.
Consulte Testes A/B para detalhes completos sobre configuração de experimentos e aplicação dos vencedores.
Usando Prompts via Gateway
Em vez de incluir o prompt completo no body da requisição, referencie um prompt gerenciado enviando o header floopy-prompt-id. O gateway resolve o template do prompt e substitui as variáveis usando o objeto inputs no body da requisição.
| Header | Descrição |
|---|---|
floopy-prompt-id | O UUID do prompt a ser resolvido |
floopy-prompt-version | Fixar uma versão específica (omita para usar a mais recente) |
| Campo do Body | Descrição |
|---|---|
inputs | Objeto com pares chave-valor para substituir nas variáveis {{key}} |
O campo inputs é removido da requisição antes de chegar ao provedor LLM — ele é usado apenas para substituição de variáveis.
Ordem de Resolução de Variáveis
inputsdo body da requisição — primeira prioridade- Valores padrão do template da configuração do prompt no dashboard — fallback
- Sem correspondência — o placeholder
{{key}}permanece no texto como está
Exemplo
Dado um template de prompt salvo no dashboard:
Summarize the following {{document_type}} in {{language}}:
{{content}}Chame a API com o objeto inputs para preencher as variáveis:
import { OpenAI } from "openai";
const client = new OpenAI({ baseURL: "https://api.floopy.ai/v1", apiKey: process.env.FLOOPY_API_KEY,});
const response = await client.chat.completions.create( { model: "gpt-4o", messages: [{ role: "user", content: "placeholder" }], inputs: { document_type: "legal contract", language: "English", content: "This agreement is entered into by and between...", }, } as any, { headers: { "floopy-prompt-id": "e51a2820-8ab5-4d6a-96a0-cc7bb4759371", "floopy-prompt-version": "2", }, },);
console.log(response.choices[0].message.content);from openai import OpenAIimport os, httpx
# Using httpx directly since the OpenAI SDK doesn't support "inputs"response = httpx.post( "https://api.floopy.ai/v1/chat/completions", headers={ "Authorization": f"Bearer {os.environ['FLOOPY_API_KEY']}", "Content-Type": "application/json", "floopy-prompt-id": "e51a2820-8ab5-4d6a-96a0-cc7bb4759371", "floopy-prompt-version": "2", }, json={ "model": "gpt-4o", "messages": [{"role": "user", "content": "placeholder"}], "inputs": { "document_type": "legal contract", "language": "English", "content": "This agreement is entered into by and between...", }, },)
print(response.json()["choices"][0]["message"]["content"])curl https://api.floopy.ai/v1/chat/completions \ -H "Authorization: Bearer $FLOOPY_API_KEY" \ -H "Content-Type: application/json" \ -H "floopy-prompt-id: e51a2820-8ab5-4d6a-96a0-cc7bb4759371" \ -H "floopy-prompt-version: 2" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "placeholder"}], "inputs": { "document_type": "legal contract", "language": "English", "content": "This agreement is entered into by and between..." } }'O gateway substitui {{document_type}}, {{language}} e {{content}} no template do prompt pelos valores de inputs, e então envia o prompt final para o provedor LLM.
Usando Prompts Sem Inputs
Se o seu prompt não possui variáveis, você pode omitir o campo inputs inteiramente. O gateway resolve as mensagens do prompt e as utiliza diretamente:
const response = await client.chat.completions.create( { model: "gpt-4o", messages: [{ role: "user", content: "placeholder" }], }, { headers: { "floopy-prompt-id": "e51a2820-8ab5-4d6a-96a0-cc7bb4759371", }, },);response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "placeholder"}], extra_headers={ "floopy-prompt-id": "e51a2820-8ab5-4d6a-96a0-cc7bb4759371", },)curl https://api.floopy.ai/v1/chat/completions \ -H "Authorization: Bearer $FLOOPY_API_KEY" \ -H "Content-Type: application/json" \ -H "floopy-prompt-id: e51a2820-8ab5-4d6a-96a0-cc7bb4759371" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "placeholder"}] }'Sintaxe de Variáveis
O formato completo para variáveis de prompt é {{ fl:name:type }} onde:
fl:é um prefixo obrigatório que identifica a variável como uma variável de template do Floopy.nameé o nome da variável (ex:user_name,topic,language).typeé o tipo de dado:string,number,boolean, etc.
Exemplos:
Hello {{ fl:user_name:string }}, please summarize this text at atemperature of {{ fl:temperature:number }}.
Include references: {{ fl:include_refs:boolean }}O editor de prompts no dashboard destaca as variáveis automaticamente quando você as digita neste formato. Se você usar a sintaxe abreviada {{name}} (sem o prefixo fl: e o tipo), o gateway trata a variável como string por padrão.
Configuração do Modelo
Ao criar ou editar um prompt, você pode configurar parâmetros do modelo que são aplicados sempre que o prompt é resolvido pelo gateway:
- Temperature (0—2) — Controla a aleatoriedade. Valores mais baixos produzem saídas mais determinísticas; valores mais altos aumentam a criatividade e variação.
- Max Tokens — Número máximo de tokens que o modelo pode gerar na resposta.
- Top P (0—1) — Limiar de amostragem por núcleo. O modelo considera apenas os tokens cuja massa de probabilidade acumulada atinge este limiar.
- Frequency Penalty (-2 a 2) — Reduz repetição penalizando tokens que já apareceram. Valores positivos diminuem a repetição; valores negativos a encorajam.
- Presence Penalty (-2 a 2) — Encoraja o modelo a falar sobre novos tópicos penalizando tokens que já apareceram, independentemente da frequência.
- Stop Sequences — Strings separadas por vírgula que fazem o modelo parar de gerar quando encontradas.
- Reasoning Effort — Controla quanto processamento o modelo dedica ao raciocínio antes de responder. Opções: None, Minimal, Low, Medium, High.
- Response Format — O formato da resposta do modelo: texto simples ou modo JSON. O modo JSON restringe a saída a JSON válido.
Esses parâmetros são salvos com a versão do prompt. Se você não definir um parâmetro, o valor padrão do modelo é utilizado.
Boas Práticas
- Use nomes de variáveis descritivos. Nomes como
{{customer_name}}são mais claros do que{{x}}e tornam os prompts mais fáceis de manter. - Versione de forma intencional. Faça uma alteração lógica por versão para que o diff seja significativo e as reversões sejam limpas.
- Colete feedback cedo. Mesmo um simples sinal de positivo/negativo ajuda a identificar regressões rapidamente.
- Teste antes de publicar. Use o Playground para testar alterações nos prompts antes de colocá-los em produção.