Documentação oficial desta página · v0.20.6
Roteamento de provedores
Usando o OpenRouter ou o Nous Portal como provedor de LLM, o Hermes Agent oferece roteamento de provedores — controle fino de quais provedores por baixo atendem suas requisições e em que ordem.
O OpenRouter distribui as requisições entre muitos provedores (Anthropic, Google, AWS Bedrock, Together AI e outros). O roteamento deixa você otimizar por custo, velocidade ou qualidade, ou impor exigências específicas.
O tráfego que passa pelo Nous Portal respeita as mesmas preferências — e assinantes do Portal têm 10% de desconto nos provedores cobrados por token.
Configuração
Acrescente uma seção provider_routing ao ~/.hermes/config.yaml:
provider_routing:
sort: "price" # como ordenar os provedores
only: [] # lista de permissão: só usa estes
ignore: [] # lista de bloqueio: nunca usa estes
order: [] # ordem explícita de prioridade
require_parameters: false # só usa provedores que suportam todos os parâmetros
data_collection: null # controla a coleta de dados ("allow" ou "deny")
O roteamento só vale com OpenRouter ou Nous Portal. Não tem efeito em conexões diretas com um provedor (ligando na API da Anthropic, por exemplo).
Opções
sort
Controla como o OpenRouter ordena os provedores disponíveis para a sua requisição.
| Valor | Descrição |
|---|---|
"price" | O mais barato primeiro |
"throughput" | O de mais tokens por segundo primeiro |
"latency" | O de menor tempo até o primeiro token primeiro |
provider_routing:
sort: "price"
only
Lista de permissão com os identificadores dos provedores. Quando definida, só eles são usados; o resto é excluído. Use o identificador em minúsculas que o OpenRouter mostra.
provider_routing:
only:
- "anthropic"
- "google"
ignore
Lista de bloqueio. Estes provedores nunca são usados, mesmo se forem o mais barato ou o mais rápido.
provider_routing:
ignore:
- "together"
- "deepinfra"
order
Ordem explícita de prioridade. Os primeiros da lista são preferidos. Os não listados servem de reserva.
provider_routing:
order:
- "anthropic"
- "google"
- "amazon-bedrock"
require_parameters
Com true, o OpenRouter só roteia para provedores que suportam todos os parâmetros da sua
requisição (como temperature, top_p, tools). Isso evita que parâmetros sejam descartados em
silêncio.
provider_routing:
require_parameters: true
data_collection
Controla se os provedores podem usar seus prompts para treino. As opções são "allow" e "deny".
provider_routing:
data_collection: "deny"
Exemplos práticos
Otimizar por custo
Vai para o mais barato disponível. Bom para volume alto e desenvolvimento:
provider_routing:
sort: "price"
Otimizar por resposta rápida
Prioriza provedores de baixa latência, para uso interativo:
provider_routing:
sort: "latency"
Otimizar por vazão
Melhor para geração de texto longo, onde os tokens por segundo pesam:
provider_routing:
sort: "throughput"
Travar em provedores específicos
Garante que todas as requisições passem por um provedor, por consistência:
provider_routing:
only:
- "anthropic"
Evitar provedores específicos
Exclui provedores que você não quer usar (por privacidade de dados, por exemplo):
provider_routing:
ignore:
- "together"
- "lepton"
data_collection: "deny"
Ordem preferida com reservas
Tenta os preferidos primeiro e cai nos outros se não houver:
provider_routing:
order:
- "anthropic"
- "google"
require_parameters: true
Como funciona
As preferências são passadas ao OpenRouter ou ao Nous Portal nas requisições de conversa e nos
resumos de limite de iteração, pelo campo extra_body.provider. (O extra_body é o argumento do
SDK Python da OpenAI; ele vira o objeto provider no topo da requisição JSON.) Tarefas auxiliares,
como compressão e geração de título, são configuradas à parte, em auxiliary.<tarefa>.extra_body.
- Modo CLI — configurado em
~/.hermes/config.yaml, carregado na inicialização - Modo gateway — mesmo arquivo, carregado quando o gateway sobe
A configuração é lida do config.yaml e passada como parâmetro na criação do AIAgent:
providers_allowed ← de provider_routing.only
providers_ignored ← de provider_routing.ignore
providers_order ← de provider_routing.order
provider_sort ← de provider_routing.sort
provider_require_parameters ← de provider_routing.require_parameters
provider_data_collection ← de provider_routing.data_collection
Dá para combinar várias opções. Por exemplo, ordenar por preço, excluir certos provedores e exigir suporte a parâmetros:
provider_routing:
sort: "price"
ignore: ["together"]
require_parameters: true
data_collection: "deny"
Comportamento padrão
Sem a seção provider_routing (o padrão), o agregador usa a lógica de roteamento dele, que costuma
equilibrar custo e disponibilidade sozinho.
O roteamento controla quais provedores por baixo do OpenRouter ou do Nous Portal atendem suas requisições. Para troca automática por um provedor totalmente diferente quando o modelo principal falha, veja Provedores de Reserva.