💻 源码
"""
DashScope API 调用封装(本项目唯一联网层)。
"""

from __future__ import annotations

from dashscope import Generation

from config import API_KEY, MODEL_NAME, SEED, TEMPERATURE

_call_count = 0


def get_call_count() -> int:
    return _call_count


def call_llm(messages: list[dict[str, str]]) -> str:
    global _call_count
    _call_count += 1
    if not API_KEY:
        raise RuntimeError(
            "未读取到系统环境变量 DASHSCOPE_API_KEY,"
            "请先在 Windows 系统环境变量中配置后重新打开终端。"
        )

    response = Generation.call(
        api_key=API_KEY,
        model=MODEL_NAME,
        messages=messages,
        temperature=TEMPERATURE,
        seed=SEED,
        result_format="message",
    )

    if response.status_code != 200:
        raise RuntimeError(
            f"模型调用失败:code={response.status_code}, message={response.message}"
        )

    return response.output.choices[0].message.content.strip()