Skip to content

Visão geral dos modelos

O Ongrid não vem com um modelo embutido. A plataforma é um router multi-provider: você fornece API keys para um ou mais upstreams, o manager expõe o catálogo configurado ao picker do SPA por-mensagem, e cada chamada de chat / RCA / translate despacha para o upstream certo em runtime.

Sete providers são suportados de fábrica:

ProviderModelo padrãoEnv key
Anthropicclaude-sonnet-4-6ONGRID_ANTHROPIC_API_KEY
OpenAIgpt-5.4ONGRID_OPENAI_API_KEY
Zhipu (GLM)glm-4.7ONGRID_ZHIPU_API_KEY
DeepSeekdeepseek-v4-flashONGRID_DEEPSEEK_API_KEY
Geminigemini-2.5-proONGRID_GEMINI_API_KEY
Kimikimi-k2.6ONGRID_KIMI_API_KEY
Custom (OpenAI-compatible)ONGRID_CUSTOM_API_KEY + base URL

Mais:

Os dois caminhos de configuração

Ambos os caminhos produzem o mesmo []llm.ProviderConfig que o router consome; eles diferem apenas em quem opera o knob.

Env-semeado (boot)

cmd/ongrid/main.gocfg.LLM.* e semeia linhas correspondentes em system_settings.llm.* via setting.Service.SetIfAbsent. Primeiro boot de uma instalação fresca com ONGRID_ANTHROPIC_API_KEY=... termina com uma instalação Anthropic-default funcionando — sem login no SPA necessário.

SetIfAbsent é a chave — re-boots nunca sobrescrevem edits do operador no SPA.

UI de Settings (runtime)

/settings/llm no SPA deixa um admin:

  • Adicionar / rotacionar a API key por-provider (armazenada em system_settings.llm.<provider>_api_key com a flag de secret setada).
  • Editar a BaseURL (relays, endpoints regionais, mirrors China-based).
  • Manter a lista de modelo por-provider (o conjunto fechado que o picker mostra).
  • Fixar o modelo padrão por-provider.
  • Escolher o default provider — o que o chat da home cai quando nenhum pin por-mensagem está setado.

Os 6 cards de vendor mais o 7º card "Custom" renderizam com seus logos reais de mark de provider (originados de simple-icons) para que admins os reconheçam sem ler labels.

Hot swap

Edits de provider têm efeito em 60s sem restart do manager. O TTL de cache DB → router é o 60s do resolver, mais o 60s do próprio MultiClient — então pior caso 120s. Edge agents não são afetados; o manager é o único client LLM.

O resolver

LLMSettingsResolver lê de system_settings.llm.* e monta []llm.ProviderConfig. Cai para defaults de env por-campo para que uma instalação meio-configurada (chave setada via env, BaseURL deixada em branco) ainda funcione.

go
// internal/manager/biz/setting/llm.go:133
func (r *LLMSettingsResolver) ResolveProviders(ctx context.Context) (
    providers []llm.ProviderConfig, defaultProvider string, err error,
)

Provider IDs são strings estáveis: openai, anthropic, zhipu, gemini, deepseek, kimi, custom. Esses ids aparecem em todo lugar — o picker de chat, audit logs, ChatReq.Provider, opção WithProvider.

GET /v1/aiops/models retorna o catálogo que o picker do SPA renderiza:

json
{
  "providers": [
    {
      "id": "anthropic",
      "label": "Anthropic",
      "default_model": "claude-sonnet-4-6",
      "models": ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5"]
    },
    {
      "id": "zhipu", "label": "Zhipu (GLM)",
      "default_model": "glm-4.7",
      "models": ["glm-5.1", "glm-5", "glm-4.7", "glm-4.7-flash"]
    }
  ],
  "default": "anthropic"
}

Providers sem API key configurada são silenciosamente descartados — é assim que o picker sabe o que está realmente disponível. API keys em si nunca são retornadas por este endpoint.

Dispatch por-call

Um ChatReq carrega um campo Provider; quando setado, MultiClient.Chat despacha para o sub-client correspondente. Quando vazio, o router usa o default configurado (DB > env > primeiro ordenado).

go
// internal/pkg/llm/router.go
func (m *MultiClient) Chat(ctx context.Context, req ChatReq) (*ChatResp, error)

Para chamadas de graph-kernel (o agent ReAct), o equivalente é llm.WithProvider(id) como uma opção de modelo eino — veja Roteamento.

O que está onde

Veja também

  • Arquitetura — onde a camada LLM se senta na camada L3 de inteligência.
  • Variáveis de ambiente — a matriz completa ONGRID_*_API_KEY + ONGRID_*_MODEL + ONGRID_*_BASE_URL.