flowral.docs

Gerenciamento de providers de modelos

Diretriz

Flowral terá uma única UI de providers personalizados acessível em Central de Controle > IA > Providers e no Flower/Flowral Agents > Settings > Providers. Ambas compartilham o mesmo Rust core e a mesma fonte de estado. Interface deve ser compatível com OpenCode V2+, sem tentar suportar sintaxes legadas.

Modelo

ProviderProfile: id, nome, tipo de API/runtime, URL base HTTPS ou localhost permitido, auth reference, headers seguros, modelos, limites, preços opcionais, timeout, estado/teste e escopo (usuário/projeto).

ModelProfile: key, modelID remoto, nome exibido, capabilities conhecidas, context/output limit opcionais, variantes e custos conhecidos (não inventar). Manual override é possível com indicação de origem.

Credencial sempre é referência ao keyring ou variável de ambiente, nunca string serializada no arquivo de tema, profile exportado ou repositório.

Exemplo OpenCode V2 — provider personalizado

{
  "$schema": "https://opencode.ai/config.json",
  "providers": {
    "my-gateway": {
      "name": "My Gateway",
      "env": ["MY_GATEWAY_API_KEY"],
      "package": "@opencode/ai/providers/openai-compatible",
      "settings": {
        "baseURL": "https://api.example.org/v1"
      },
      "models": {
        "coding": {
          "name": "Coding Model",
          "modelID": "upstream/coder"
        }
      }
    }
  }
}

Este é um exemplo de schema, sem endpoint/credencial reais. A estrutura V2 usa providers plural, settings.baseURL, models, modelID. Não usar schema V1 provider singular. Ref: https://dev.opencode.ai/v2/docs/providers/.

Fluxos UI

  • Adicionar template (OpenAI-compatible, Anthropic-compatible, Ollama local ou custom selecionado conforme catálogo real).
  • Definir HTTPS baseURL; mostrar aviso claro para HTTP externo; localhost permitido com consentimento.
  • Definir fonte da chave (keyring/env), sem ecoar segredo nos logs.
  • Selecionar modelos manualmente ou descobrir via API somente quando compatível; não inferir capabilities inexistentes.
  • Testar conexão com custo mínimo possível, mostrar endpoint/status/latença/erro de autenticação; não enviar prompt de teste sem avisar.
  • Habilitar/ocultar modelo, escolher defaults por projeto/agente, configurar limite/custo opcional.
  • Exportar configurações sem segredo; importar com preview e diff; restore com rollback.

Integração com outros agentes

Não escrever configurações de Claude/Codex/Hermes usando schema OpenCode. Registry é neutro, adapters por ferramenta convertem apenas campos suportados por cada versão. Exibir Not supported em vez de fingir sincronização universal.

Validação e segurança

Validar URL, evitar SSRF por campos remotos (URLs localhost só no contexto solicitado), proibir command injection e paths não autorizados. Usar TLS, timeouts, per-provider rate limits. Nunca compartilhar chaves entre projetos/clients silenciosamente; marcar contas e modelos pagos.

Aceite

Ao criar um provider custom na GUI, um profile OpenCode V2 válido aparece em arquivo de config com schema correto, sem chave plaintext. A seleção de modelo funciona, teste de conexão reporta resultado e desativar reverte mudança sem destruir outros providers.