fix: system_prompt now read from DB LLMConfig

- _get_db_defaults returns system_prompt from DB
- call_llm(system_prompt=None) falls back to DB value
- DB already has system_prompt set for both providers
This commit is contained in:
Yuzhiran Dev
2026-05-27 10:47:02 +08:00
parent b105eee9bb
commit 2c6adf1f43
+8 -3
View File
@@ -79,15 +79,19 @@ def _get_db_defaults(provider: Optional[str] = None) -> dict:
cfg = db.query(LLMConfig).filter(LLMConfig.provider == p).order_by(LLMConfig.is_active.desc()).first() cfg = db.query(LLMConfig).filter(LLMConfig.provider == p).order_by(LLMConfig.is_active.desc()).first()
db.close() db.close()
if cfg: if cfg:
return {"temperature": cfg.temperature, "max_tokens": cfg.max_tokens} return {
"temperature": cfg.temperature,
"max_tokens": cfg.max_tokens,
"system_prompt": cfg.system_prompt or "你是一个专业的内容创作助手。",
}
except Exception: except Exception:
pass pass
return {"temperature": 0.20, "max_tokens": 2048} return {"temperature": 0.20, "max_tokens": 2048, "system_prompt": "你是一个专业的内容创作助手。"}
def call_llm( def call_llm(
prompt: str, prompt: str,
model: Optional[str] = None, model: Optional[str] = None,
system_prompt: str = "你是一个专业的内容创作助手。", system_prompt: Optional[str] = None,
temperature: Optional[float] = None, temperature: Optional[float] = None,
max_tokens: Optional[int] = None, max_tokens: Optional[int] = None,
top_p: float = 0.70, top_p: float = 0.70,
@@ -100,6 +104,7 @@ def call_llm(
defaults = _get_db_defaults(provider) defaults = _get_db_defaults(provider)
temperature = temperature if temperature is not None else defaults["temperature"] temperature = temperature if temperature is not None else defaults["temperature"]
max_tokens = max_tokens if max_tokens is not None else defaults["max_tokens"] max_tokens = max_tokens if max_tokens is not None else defaults["max_tokens"]
system_prompt = system_prompt if system_prompt is not None else defaults["system_prompt"]
cfg = _get_provider_config(provider) cfg = _get_provider_config(provider)
endpoint = f"{cfg['base_url'].rstrip('/')}/chat/completions" endpoint = f"{cfg['base_url'].rstrip('/')}/chat/completions"
headers = { headers = {