Langfuse

Envie as execuções dos agentes para o Langfuse para observabilidade, e gerencie a persona de um agente por um prompt do Langfuse em vez do config.json.

Langfuse

O Langfuse é uma conexão opcional, não um requisito: nada no Pepe assume que ele está lá. Duas funcionalidades usam ele:

Credenciais

As duas funcionalidades leem as mesmas variáveis de ambiente que todo SDK oficial do Langfuse usa, então credenciais já configuradas para outra ferramenta funcionam aqui também:

export LANGFUSE_PUBLIC_KEY=pk-lf-...
export LANGFUSE_SECRET_KEY=sk-lf-...
# Só se você não estiver no cloud.langfuse.com:
export LANGFUSE_BASE_URL=https://seu-langfuse-self-hosted.exemplo.com

Obtenha o par de chaves nas configurações do seu projeto no Langfuse. Defini-lo já liga o export de traces imediatamente, para todos os agentes (veja abaixo se você também quer prompts gerenciados pelo Langfuse, ou traces indo para outro destino). Uma indisponibilidade do Langfuse ou uma chave errada faz o export de traces cair silenciosamente no comportamento de descartar o trace, e uma busca de langfuse_prompt cair para a persona local do agente; nenhum dos dois bloqueia uma conversa ou uma execução.

As duas funcionalidades leem essas variáveis diretamente do processo do Pepe em execução, não pela ferramenta bash de um agente, o que importa se algum dia você pedir a um agente para ajudar a depurar a conexão. LANGFUSE_PUBLIC_KEY/LANGFUSE_SECRET_KEY têm formato de segredo pelo nome, então o Pepe as remove do shell do próprio agente por padrão, assim como qualquer outra credencial (veja Segredos). O agente ainda pode adicionar os dois nomes ao secrets.expose_env se precisar verificá-las diretamente; apenas tenha em mente que uma leitura de tamanho 0 ali significa “removida do meu shell”, não “não definida no servidor”.

Export de traces

O par LANGFUSE_* acima já é suficiente por si só: o export de traces liga assim que LANGFUSE_PUBLIC_KEY e LANGFUSE_SECRET_KEY estão definidas, sem necessidade de nenhuma variável do OTEL separada. Toda execução concluída vira um trace OTLP: um span raiz para a execução inteira, um span filho por chamada de ferramenta e por chamada de modelo, com atributos genéricos do OpenTelemetry e os próprios do Langfuse definidos em cada um, então sessões são agrupadas corretamente e gerações são distinguidas de spans de ferramenta comuns.

Para enviar traces a outro destino que não o Langfuse (um coletor self-hosted, o Honeycomb, qualquer outro backend que fale OTLP), defina as variáveis padrão do OTLP, e elas assumem completamente (o par LANGFUSE_* passa a servir apenas para prompts gerenciados, se você também usar isso):

export OTEL_EXPORTER_OTLP_ENDPOINT=https://seu-coletor.exemplo.com
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic <base64 de usuario:senha>"

Detalhe completo, incluindo as duas variáveis extras do OTEL que você raramente precisa: Traces.

Prompts gerenciados

pepe agent add support --langfuse-prompt support-persona

Defina o langfuse_prompt de um agente (a flag do CLI acima, ou o mesmo campo no editor de agente do dashboard) com o nome de um prompt no Langfuse, e a persona desse agente passa a ser buscada de lá: edite o prompt no Langfuse e a mudança chega ao Pepe em poucos minutos, sem redeploy. É opt-in por agente; um agente sem langfuse_prompt definido fica totalmente inalterado, e um cuja busca falhe (inacessível, nome não resolve) simplesmente usa a persona local, exatamente como se isso nunca tivesse sido configurado. Lê o par LANGFUSE_PUBLIC_KEY/LANGFUSE_SECRET_KEY acima. Detalhe completo: Agentes.