mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-18 14:52:04 +00:00
feat(config): extra HTTP headers for LLM API calls (#3526 salvage)
Named providers / custom_providers entries in config.yaml now accept an extra_headers dict scoped to that endpoint — for reverse proxies, API gateways, and custom auth schemes (e.g. Cloudflare Access service tokens). - hermes_cli/config.py: normalize extra_headers on provider entries (_normalize_custom_provider_entry + providers-dict translation), add get_custom_provider_extra_headers / apply_custom_provider_extra_headers_to_client_kwargs helpers keyed on base_url (case/trailing-slash insensitive, no substring bypass — mirrors the TLS helpers) - hermes_cli/runtime_provider.py: surface extra_headers in the resolved runtime for named custom providers (providers dict, legacy custom_providers list, and the credential-pool path) - run_agent.py / agent/agent_init.py: merge per-provider extra_headers onto the OpenAI client default_headers at construction and on every _apply_client_headers_for_base_url re-application (credential swaps, rebuilds), most-specific level wins; OpenAI-wire only (native Anthropic/Bedrock scoped out) - agent/auxiliary_client.py: accept model.extra_headers as an alias of model.default_headers for the global variant - cli-config.yaml.example: documented commented example - Header values are treated as secrets and never logged Salvaged from PR #3526 by @jneeee, reimplemented against current main. Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
This commit is contained in:
parent
4a09b692ec
commit
b98baa3039
10 changed files with 561 additions and 4 deletions
|
|
@ -85,6 +85,25 @@ model:
|
|||
#
|
||||
# default_headers:
|
||||
# User-Agent: "curl/8.7.1"
|
||||
#
|
||||
# extra_headers: accepted as an alias of default_headers (merged, with
|
||||
# extra_headers winning when both are set) — matches the per-provider
|
||||
# extra_headers key below.
|
||||
#
|
||||
# Per-provider variant: named providers / custom_providers entries accept an
|
||||
# extra_headers dict scoped to that endpoint only — for reverse proxies,
|
||||
# gateways, or custom auth (e.g. Cloudflare Access service tokens).
|
||||
# Merged onto SDK/provider defaults with the entry's values winning.
|
||||
# Header values are treated as secrets and are never logged.
|
||||
#
|
||||
# providers:
|
||||
# my-proxy:
|
||||
# base_url: "https://llm.internal.example.com/v1"
|
||||
# key_env: "MY_PROXY_API_KEY"
|
||||
# extra_headers:
|
||||
# CF-Access-Client-Id: "xxxx.access"
|
||||
# CF-Access-Client-Secret: "${CF_ACCESS_SECRET}"
|
||||
# X-Client-Name: "hermes-agent"
|
||||
|
||||
# Named provider overrides (optional)
|
||||
# Use this for per-provider request timeouts, non-stream stale timeouts,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue