simpla.fydocs
Hub APIProduto

Prompts

Versionamento de prompts no Langfuse, convenção de nomenclatura, labels por ambiente e ciclo de validação antes do deploy em produção.

Prompts

Os prompts de cada agente do Hub vivem no Langfuse — não no banco do Hub. A API e o LangGraph buscam o prompt em runtime, com cache curto, e o agente passa a usar a versão marcada como production em até cinco minutos. Esta página descreve a estrutura, as labels, o ciclo de teste e as boas práticas que mantêm a operação estável.

Projeto canônico no Langfuse: Simplafy-Hub. Credenciais ficam no Infisical em /custom/hub-langgraph (LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY).

Estrutura de prompts

Cada agente do Hub aponta para um prompt no Langfuse via o campo langfuse_prompt_name no configurable do assistant. O nome segue uma convenção fixa para garantir unicidade entre agentes:

hub-<client_slug>-<agent_id>
  • client_slug — nome do agente slugificado (ex.: lia-brasal). Omitir se o agente não tiver nome.
  • agent_id — UUID do agente no Hub. Sempre presente, garante unicidade quando o slug se repete.

Exemplos válidos:

hub-lia-brasal-c17c7fcc-816e-4c0f-acb2-a26915ee072f
hub-a1b2c3d4-5e6f-7890-abcd-ef0123456789

Cada prompt deve ter o campo config preenchido. Sem ele, o UI do Langfuse não exibe os metadados do modelo e o agente não consegue derivar provider / temperatura corretamente:

{
  "model": "openai/gpt-4o",
  "temperatura": 0.7,
  "reasoning_model": false,
  "reasoning_effort": "",
  "provider": "openai"
}

O campo model pode vir prefixado com o provider (openai/gpt-4o). O LangGraph detecta o prefixo e evita duplicar — passar provider: "openai" + model: "openai/gpt-4o" é seguro e não gera openai/openai/gpt-4o.

Versionamento via Langfuse

Toda atualização de prompt cria uma nova versão imutável no Langfuse. O agente não busca a "última" versão por número — busca pela label aplicada. Isso permite reverter trocando o destino da label, sem reescrever o prompt.

Fluxo de criação de um novo prompt:

Criar a versão no Langfuse

Via API pública do Langfuse:

curl -X POST https://langfuse.simplafy.com.br/api/public/v2/prompts \
  -u "$LANGFUSE_PUBLIC_KEY:$LANGFUSE_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "hub-lia-brasal-c17c7fcc-816e-4c0f-acb2-a26915ee072f",
    "type": "text",
    "prompt": "Você é a Lia, assistente da Brasal...",
    "labels": ["production", "latest"],
    "config": {
      "model": "openai/gpt-4o",
      "temperatura": 0.7,
      "reasoning_model": false,
      "reasoning_effort": "",
      "provider": "openai"
    }
  }'

Apontar o agente para o prompt

Atualizar o configurable do assistant no LangGraph:

curl -X PATCH https://hub.simplafy.com.br/api/v1/assistants/{assistant_id} \
  -H "Authorization: Bearer $HUB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "configurable": {
      "langfuse_prompt_name": "hub-lia-brasal-c17c7fcc-816e-4c0f-acb2-a26915ee072f"
    }
  }'

O campo langfuse_prompt_name também pode ser definido via metadata._x_oap_langfuse_prompt para compatibilidade com configurações antigas.

Aguardar o cache expirar

O LangGraph mantém um cache de 5 minutos por prompt. Para aplicar imediatamente, reiniciar o pod simplafy-hub-langgraph no cluster — ou simplesmente esperar.

Labels e ambientes

O agente busca exclusivamente prompts marcados com a label production. Labels são o mecanismo de promoção entre ambientes.

LabelUsoObservação
productionVersão ativa em produção. Obrigatória para o agente funcionar.O LangGraph ignora qualquer versão sem essa label.
latestÚltima versão criada. Aplicada automaticamente pelo Langfuse.Útil para testes manuais antes da promoção.
stagingConvenção para validar em ambiente de teste antes de promover.Opcional — configurar via langfuse_prompt_name no assistant de staging.

Para promover uma nova versão para produção, mover a label production da versão antiga para a nova diretamente no UI do Langfuse ou via API:

curl -X PATCH https://langfuse.simplafy.com.br/api/public/v2/prompts/{name}/versions/{version} \
  -u "$LANGFUSE_PUBLIC_KEY:$LANGFUSE_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"newLabels": ["production"]}'

Mover a label production é o método de rollback. Não deletar versões antigas — manter o histórico permite voltar a qualquer ponto sem reescrever o prompt.

Testar no Lab

Antes de aplicar a label production, validar o prompt em um cenário controlado. O fluxo recomendado:

Reproduzir no Langfuse Playground

Abrir a versão latest do prompt no Langfuse e rodar diretamente no Playground com o modelo e a temperatura definidos no config. Isso valida o texto isolado das tools e do histórico do agente.

Rodar contra o agente em staging

Apontar o langfuse_prompt_name no assistant de staging para a versão sob teste (usar a label staging ou a versão específica). Disparar conversas de teste no canal de homologação e observar traces no Langfuse.

Comparar traces antes e depois

No Langfuse, abrir traces da versão atual e da versão nova lado a lado. Verificar:

  • Tool calls que aparecem ou somem
  • Mudança em latência e custo por mensagem
  • Comportamento em conversas longas (efeito de compaction)

Promover para produção

Aplicar a label production à nova versão. O cache de 5min começa a expirar; em até 5 minutos todas as réplicas do LangGraph passam a usar o novo prompt.

Se a busca no Langfuse falhar em runtime, o LangGraph emite uma métrica langfuse_fallback com reason=langfuse_unavailable e o agente cai num prompt vazio. Monitorar essa métrica em rollouts de prompt.

Boas práticas

Sempre preencher config. Sem ele o agente pode acabar usando um provider/modelo diferente do esperado. O config do Langfuse sobrescreve o model definido no configurable do assistant.

Manter um latest separado de production. A label latest é automática. Não usar como destino do agente — usar production explícita para evitar deploys acidentais ao criar uma nova versão.

Não deletar versões antigas. O custo é zero e elas servem de rollback imediato. Para descontinuar, apenas remover labels.

Variáveis no prompt seguem o padrão {{VAR_*}}. O LangGraph faz substituição textual antes de enviar ao modelo. Variáveis sem valor viram string vazia, não erro.

Cache de 5 minutos é por pod. Em um deploy multi-réplica, a propagação não é simultânea. Para testes precisos de uma versão recém-promovida, reiniciar o deployment simplafy-hub-langgraph força refresh imediato em todas as réplicas.

Um agente, um prompt. Não compartilhar langfuse_prompt_name entre agentes diferentes — quebra rastreabilidade no Langfuse e impede ajustes isolados.

On this page