"""智谱 GLM 评测台评审:OpenAI 兼容端点 + ChatOpenAI 装配。""" from __future__ import annotations from langchain_openai import ChatOpenAI from app.adapters.llm.openai_base_url import normalize_openai_compatible_base_url from app.core.config import settings from app.core.eval_judge_spec import EvalJudgeLlmSpec def build_zhipu_eval_judge_spec( judge_model: str | None, ) -> EvalJudgeLlmSpec | None: """密钥缺失时返回 None。""" api_key = (settings.eval_judge_api_key or settings.zhipu_api_key or "").strip() if not api_key: return None want = (judge_model or "").strip() base = normalize_openai_compatible_base_url( settings.eval_judge_base_url, fallback="https://open.bigmodel.cn/api/paas/v4", ) model = want or (settings.eval_judge_model or "glm-5") ctx = int(settings.eval_judge_context_window_tokens) llm_kw: dict = { "api_key": api_key, "base_url": base, "model": model, "temperature": settings.eval_judge_temperature, } return EvalJudgeLlmSpec( llm=ChatOpenAI(**llm_kw), provider="zhipu", resolved_model=model, context_window_tokens=ctx, )