import os
from openai import OpenAI
from backend.config import get_llm_config
def get_client(*, timeout: float | None = None) -> OpenAI:
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise RuntimeError("环境变量 DASHSCOPE_API_KEY 未设置")
llm_config = get_llm_config()
client_timeout = timeout if timeout is not None else float(
llm_config.get("timeout_seconds", 60)
)
return OpenAI(
api_key=api_key,
base_url=llm_config["base_url"],
timeout=client_timeout,
)
def call_llm(
prompt: str,
*,
model: str | None = None,
temperature: float | None = None,
system_prompt: str | None = None,
timeout: float | None = None,
) -> str:
llm_config = get_llm_config()
client = get_client(timeout=timeout)
response = client.chat.completions.create(
model=model or llm_config["model"],
messages=[
{
"role": "system",
"content": system_prompt or llm_config["system_prompt"],
},
{"role": "user", "content": prompt},
],
temperature=llm_config["temperature"] if temperature is None else temperature,
)
return response.choices[0].message.content or ""