Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
"""包装层 LLM 环境解析:为 GAIA 经验学习示例提供带 OpenRouter 兜底的配置。
|
||
|
||
本文件位于 gaia-experience 包装层,**不修改** 上游 AWorld fork。它把散落在各处的
|
||
`os.getenv("LLM_API_KEY"/"LLM_BASE_URL"/"LLM_MODEL_NAME")` 读取集中起来,并加入统一兜底:
|
||
|
||
- 有 LLM_API_KEY / OPENAI_API_KEY -> 直连(沿用 LLM_BASE_URL,可为空即 OpenAI 官方)
|
||
- 否则有 OPENROUTER_API_KEY -> 走 OpenRouter(https://openrouter.ai/api/v1),
|
||
并把模型名映射到 OpenRouter 命名:
|
||
gpt-* -> openai/gpt-*
|
||
claude-* -> anthropic/claude-opus-4.8
|
||
含 "/" -> 原样透传
|
||
其它 -> openai/gpt-5.6-luna
|
||
|
||
默认模型 gpt-5.6-luna。
|
||
"""
|
||
|
||
import os
|
||
|
||
DEFAULT_MODEL = "gpt-5.6-luna"
|
||
OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
|
||
|
||
|
||
def to_openrouter_model(model: str) -> str:
|
||
if not model:
|
||
return "openai/gpt-5.6-luna"
|
||
if "/" in model:
|
||
return model
|
||
if model.startswith("gpt-"):
|
||
return "openai/" + model
|
||
if model.startswith("claude-"):
|
||
return "anthropic/claude-opus-4.8"
|
||
return "openai/gpt-5.6-luna"
|
||
|
||
|
||
def resolve_llm(default_model: str = DEFAULT_MODEL, model_override: str = None) -> dict:
|
||
"""返回 AgentConfig 需要的 provider/model/base_url/api_key 四元组(含 OpenRouter 兜底)。
|
||
|
||
model_override: 若显式给了模型名(如 config.yaml 或 CLI),优先用它。
|
||
"""
|
||
provider = os.getenv("LLM_PROVIDER", "openai")
|
||
model = model_override or os.getenv("LLM_MODEL_NAME", default_model)
|
||
base_url = os.getenv("LLM_BASE_URL")
|
||
api_key = os.getenv("LLM_API_KEY") or os.getenv("OPENAI_API_KEY")
|
||
|
||
if not api_key and os.getenv("OPENROUTER_API_KEY"):
|
||
api_key = os.getenv("OPENROUTER_API_KEY")
|
||
base_url = base_url or OPENROUTER_BASE_URL
|
||
model = to_openrouter_model(model)
|
||
|
||
return {
|
||
"llm_provider": provider,
|
||
"llm_model_name": model,
|
||
"llm_base_url": base_url,
|
||
"llm_api_key": api_key,
|
||
}
|