# unifyllm 网关模型档案(https://unifyllm.ai,多协议 LLM 网关)
# 走 OpenAI 兼容端点:litellm `openai/` 前缀 + api_base 覆盖,key 用 Bearer 认证。
# 网关上还有 claude-sonnet-5 / opus 4-5~4-7 / gpt-5.4 / gemini-3.5-flash 等,
# 按需加 variant 即可(GET /v1/models 可拉全量,见 scripts/diag_unifyllm.py)。
#
# 注意事项(2026-07-10 实测,见 diag_unifyllm.py):
# - gpt-5.x:litellm 客户端硬拦 temperature != 1,optimal_temperature 必须 1.0
# - gemini-3.1-pro:temperature 0.3 时返回空内容(0 tool_call 0 text),必须 1.0
# - parallel_tool_calls 参数网关接受(claude 实测返回 2 个并行调用)
# - thinking/reasoning_effort 透传未验证,先全 false(同 glm.yaml 的 TODO 思路)
# - 价格字段留 0:网关价目未知,拿到价目表后补(成本先记 0)
# - 服务器直连 unifyllm.ai TLS 握手失败,需代理出口(HTTPS_PROXY);部署前先跑 diag 验证
family: unifyllm

variants:
  fable5:
    display_name: Claude Fable 5
    model_id: openai/claude-fable-5
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 200000
    reliable_context: 120000
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: excellent
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 150
    optimal_temperature: 0.3
    prompt_caching: false     # anthropic-beta header 走 OpenAI 兼容端点无效,不发
    extended_thinking: false

  opus48:
    display_name: Claude Opus 4.8
    model_id: openai/claude-opus-4-8
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 200000
    reliable_context: 120000
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: excellent
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 150
    optimal_temperature: 0.3
    prompt_caching: false
    extended_thinking: false

  sonnet46:
    display_name: Claude Sonnet 4.6
    model_id: openai/claude-sonnet-4-6
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 200000
    reliable_context: 120000
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: excellent
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 120
    optimal_temperature: 0.3
    prompt_caching: false
    extended_thinking: false

  gpt56_sol:
    display_name: GPT-5.6 Sol
    model_id: openai/gpt-5.6-sol
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 262144
    reliable_context: 131072
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: excellent
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 120
    optimal_temperature: 1.0  # 硬约束:litellm 拦 gpt-5* 的 temp != 1
    prompt_caching: false
    extended_thinking: false

  gpt55:
    display_name: GPT-5.5
    model_id: openai/gpt-5.5
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 262144
    reliable_context: 131072
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: excellent
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 120
    optimal_temperature: 1.0  # 硬约束:litellm 拦 gpt-5* 的 temp != 1
    prompt_caching: false
    extended_thinking: false

  gpt54_mini:
    display_name: GPT-5.4 Mini
    model_id: openai/gpt-5.4-mini
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 262144
    reliable_context: 131072
    max_output: 8192
    parallel_tools: true
    tool_calling_quality: good
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: good
    enable_run_python: true
    max_iterations: 100
    optimal_temperature: 1.0  # 硬约束:litellm 拦 gpt-5* 的 temp != 1
    prompt_caching: false
    extended_thinking: false

  gemini31_pro:
    display_name: Gemini 3.1 Pro
    model_id: openai/gemini-3.1-pro-preview
    api_base: https://unifyllm.ai/v1
    api_key_env: UNIFYLLM_API_KEY
    max_context: 1000000
    reliable_context: 262144
    max_output: 8192
    parallel_tools: false     # gemini 走网关未实测该参数,保守关闭
    tool_calling_quality: good
    thinking_enabled: false
    thinking_transport: none
    reasoning_effort_levels: []
    default_reasoning_effort: ""
    code_quality: excellent
    enable_run_python: true
    max_iterations: 120
    optimal_temperature: 1.0  # 硬约束:0.3 时返回空内容(实测)
    prompt_caching: false
    extended_thinking: false
