feat:修改投顾agent和nl2sql的功能
This commit is contained in:
+27
-8
@@ -169,21 +169,40 @@ class LLMClient:
|
||||
temperature: float | None,
|
||||
max_tokens: int | None,
|
||||
) -> str:
|
||||
payload = {
|
||||
"model": model,
|
||||
"messages": messages,
|
||||
"temperature": self.cfg.temperature if temperature is None else temperature,
|
||||
"max_tokens": self.cfg.max_tokens if max_tokens is None else max_tokens,
|
||||
"stream": False,
|
||||
}
|
||||
request_max_tokens = self.cfg.max_tokens if max_tokens is None else max_tokens
|
||||
url = f"{backend.base_url}/chat/completions"
|
||||
# 指数退避:retry_backoff_sec → 翻倍 → …,最多 max_retries 次
|
||||
for attempt in range(self.cfg.max_retries):
|
||||
payload = {
|
||||
"model": model,
|
||||
"messages": messages,
|
||||
"temperature": self.cfg.temperature if temperature is None else temperature,
|
||||
"max_tokens": request_max_tokens,
|
||||
"stream": False,
|
||||
}
|
||||
try:
|
||||
async with backend.client(self.cfg.timeout) as client:
|
||||
r = await client.post(url, headers=backend.headers, json=payload)
|
||||
r.raise_for_status()
|
||||
return r.json()["choices"][0]["message"]["content"]
|
||||
choice = r.json()["choices"][0]
|
||||
message = choice["message"]
|
||||
content = message.get("content")
|
||||
if isinstance(content, str) and content.strip():
|
||||
return content
|
||||
|
||||
# DeepSeek reasoning models may consume the entire small token budget
|
||||
# in reasoning_content, leaving content empty and finish_reason=length.
|
||||
if choice.get("finish_reason") == "length" and attempt < self.cfg.max_retries - 1:
|
||||
request_max_tokens = max(request_max_tokens * 4, 256)
|
||||
logger.warning(
|
||||
"chat backend=%s model=%r returned empty content after token limit; "
|
||||
"retrying with max_tokens=%d",
|
||||
backend.name,
|
||||
model,
|
||||
request_max_tokens,
|
||||
)
|
||||
continue
|
||||
raise ValueError("LLM 返回空内容")
|
||||
except Exception:
|
||||
if attempt == self.cfg.max_retries - 1:
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user