Provedores e modelos
Provedores de LLM suportados pelo Hub (OpenAI, Anthropic, OpenRouter, xAI, ZhipuAI), seleção de modelo no UI, comportamento em caso de falha, custos e configuração de credenciais.
Provedores e modelos
O Hub é multi-provider. Cada agente referencia um modelo no formato provider/model_id e o LangGraph resolve a chamada via langchain.chat_models.init_chat_model. A lista de provedores realmente disponíveis em runtime depende das chaves de API presentes no ambiente da aplicação web.
A página descreve o comportamento implementado em apps/langgraph-server/oap_agent/agent.py (resolução de modelo) e em apps/web/src/app/api/models/* (listagem de provedores e modelos no UI).
Provedores suportados
Cinco provedores são reconhecidos pelo resolver de modelos. O endpoint GET /api/models filtra a lista pelas variáveis de ambiente presentes no pod web — provedores sem chave configurada não aparecem no seletor.
| Provider key | Nome exibido | Variável de ambiente | Backend |
|---|---|---|---|
openai | OpenAI | OPENAI_API_KEY | api.openai.com/v1 |
anthropic | Anthropic | ANTHROPIC_API_KEY | api.anthropic.com/v1 |
openrouter | OpenRouter | OPENROUTER_API_KEY | openrouter.ai/api/v1 |
xai | xAI (Grok) | XAI_API_KEY | api.x.ai/v1 |
zhipu | ZhipuAI (GLM) | ZHIPU_API_KEY | ZHIPU_API_BASE (compatível com OpenAI) |
Google Gemini não tem suporte direto no resolver. Para usar modelos Google, configure-os via OpenRouter (openrouter/google/gemini-...).
O identificador final de modelo persistido no campo configurable.model segue o padrão provider/model_id, por exemplo openai/gpt-4o-mini (default), anthropic/claude-3-5-sonnet-latest ou openrouter/anthropic/claude-3.5-sonnet. O model_id pode conter barras adicionais — o parser usa apenas o primeiro / para separar provider do resto.
Como escolher modelo no UI
O seletor de modelo aparece no painel de configuração de cada agente sempre que o schema do grafo expõe um campo com x_oap_ui_config.type = "model_selector". No agente padrão o campo é model e o default é openai/gpt-4o-mini.
Abra o agente
Navegue até Agents no admin web, selecione o agente e abra a aba de configuração (sidebar à direita do chat ou tela dedicada).
Selecione provider e modelo
O componente carrega GET /api/models para preencher os provedores disponíveis e, ao escolher um, dispara GET /api/models/<provider> para listar os modelos do upstream em tempo real (cache de 5 minutos). ZhipuAI retorna uma lista estática (GLM-5, GLM-4.5-Air, GLM-4-Plus, GLM-4-Air, GLM-4-Flash).
Ajuste parâmetros opcionais
temperature(0–2, default 0.7)reasoning_effort(none|low|medium|high) — só tem efeito em OpenAI, OpenRouter e Anthropic (extended thinking)
Salve a configuração
O valor é gravado em assistant.config.configurable.model. A próxima execução do agente já usa o novo modelo.
Override via Langfuse
Quando o agente tem langfuse_prompt_name definido, o config do prompt no Langfuse (chaves provider, model, temperatura, reasoning_effort) sobrescreve a configuração do UI. Isso permite trocar modelo sem redeploy:
{
"provider": "anthropic",
"model": "claude-3-5-sonnet-latest",
"temperatura": 0.3,
"reasoning_effort": "medium"
}Se model já vier prefixado (openai/gpt-4o), o provider é ignorado para evitar duplicação (openai/openai/gpt-4o).
Fallback automático
O Hub não faz failover automático entre provedores em runtime. Se a chamada ao provedor configurado falha, a exceção propaga para o nó call_model do grafo e a execução é marcada como erro (rastreado em Langfuse e GlitchTip).
O único fallback implementado é no carregamento do prompt: se o Langfuse estiver indisponível durante o fetch de langfuse_prompt_name, o agente continua com o system_prompt e modelo configurados no assistant.config.configurable e emite a métrica langfuse_unavailable.
Estratégias recomendadas para resiliência:
- OpenRouter como provider único — o próprio OpenRouter roteia entre upstreams e oferece fallback interno por modelo.
- Múltiplos agentes com modelos distintos, escolhidos por regra de negócio antes da invocação.
- Monitorar erros via GlitchTip e configurar alertas para o nó
call_model(rate de erros por agente).
Custos e quotas
Custos são responsabilidade do provedor — o Hub não impõe quota própria por organização.
Rastreio de uso. Toda chamada ao modelo é instrumentada com Langfuse no compile do grafo, o que captura prompt_tokens, completion_tokens, total_tokens e custo calculado por modelo. Para inspecionar consumo:
- Projeto Langfuse: Simplafy-Hub
- Filtros típicos: por
agent_id, pororg_id(tags), por modelo - Métricas de fallback são emitidas como
langfuse_unavailableno Prometheus do cluster
Quotas e limites. Os limites são os do provedor (rate limits de OpenAI/Anthropic, créditos de OpenRouter/xAI, cota de ZhipuAI). Excessos retornam erro 429 do upstream, que aparece como falha do nó call_model.
Para estimar custo antes de lançar um agente em produção, use a planilha de pricing do provedor multiplicada pelo volume médio de tokens observado em ambiente de staging.
Adicionar credenciais
As chaves de API dos provedores de LLM não ficam em Credential ou CredentialSet por organização — elas são variáveis de ambiente globais do pod web (simplafy-hub-web) e do pod LangGraph (simplafy-hub-langgraph). Isso significa que todos os agentes da plataforma compartilham as mesmas chaves.
Secrets vivem no Infisical, projeto Hub v1 (7bba8ab4-5d8b-475b-b328-35b4b43bd862), paths /web e /langgraph. O Infisical Operator sincroniza para o cluster prd-2, namespace simplafy-prd-hub.
# Listar chaves atuais (via skill infisical)
infisical secrets list --path=/web --env=prd
# Adicionar/atualizar uma chave
infisical secrets set OPENAI_API_KEY=sk-... --path=/web --env=prd
infisical secrets set OPENAI_API_KEY=sk-... --path=/langgraph --env=prdNunca use kubectl patch secret para adicionar chaves — o Infisical Operator sobrescreve a cada 5 min de resync. Sempre passe pelo Infisical primeiro.
Mesmo fluxo, environment staging, namespace simplafy-staging-hub.
infisical secrets set ANTHROPIC_API_KEY=sk-ant-... --path=/web --env=staging
infisical secrets set ANTHROPIC_API_KEY=sk-ant-... --path=/langgraph --env=stagingEm desenvolvimento, defina as chaves em apps/web/.env.local e em um .env lido pelo langgraph dev:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
OPENROUTER_API_KEY=sk-or-...
XAI_API_KEY=xai-...
ZHIPU_API_KEY=...
ZHIPU_API_BASE=https://open.bigmodel.cn/api/paas/v4Reinicie yarn dev e uv run langgraph dev --port 2024 após cada alteração.
Verificar provedores ativos
Após configurar uma nova chave, confirme que ela apareceu no UI:
curl https://hub.simplafy.com.br/api/modelsResposta esperada (apenas providers com chave válida):
{
"providers": [
{ "id": "openai", "name": "OpenAI" },
{ "id": "anthropic", "name": "Anthropic" },
{ "id": "zhipu", "name": "ZhipuAI (GLM)" }
]
}Se o provider esperado não aparece, verifique se a chave foi propagada para o pod correto (tanto web quanto langgraph precisam dela — o web filtra a UI, o langgraph executa a chamada).