Skip to content

provider=custom 指向官方 API 时成本统计显示 $0.00

问题

当 profile 配置 provider: custombase_url 指向官方 provider 的 API 端点时,hermes insights 中的成本估算显示为:

Est. cost: $0.00 *
* Cost N/A for custom/self-hosted models

这是错误的——使用的模型(如 gpt-4.1-nanoclaude-3-5-haiku)有公开定价,Hermes 在 agent/usage_calculator.py 中已经维护了这些模型的价格表。

受影响场景:当你通过代理、自托管网关(如 LiteLLM、one-api)或企业 API 端点使用官方模型,但仍路由到官方 provider 的底层 API 时。

解决方案

usage_calculator.py 或 provider 初始化逻辑中,添加 base_url 到已知 provider 的映射:

python
OFFICIAL_BASE_URLS = {
    "https://api.openai.com/v1": "openai",
    "https://api.anthropic.com": "anthropic",
    "https://generativelanguage.googleapis.com": "google",
    # ... 其他官方端点
}

def resolve_provider_for_pricing(provider: str, base_url: str) -> str:
    if provider == "custom" and base_url:
        for official_url, official_provider in OFFICIAL_BASE_URLS.items():
            if base_url.rstrip("/").startswith(official_url.rstrip("/")):
                return official_provider
    return provider

这样当 provider=custombase_url 匹配已知官方端点时,自动映射到对应的定价表。

临时绕过:将 profile 的 provider 字段改为对应的官方 provider 名称(如 openai),而不是 custom。如果你使用的是兼容 OpenAI API 格式的网关,通常可以直接用 openai provider 类型。

Issue#9412