feat(regulatory): 输出法规核查过程日志
This commit is contained in:
@@ -4,6 +4,7 @@ import json
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
import inspect
|
||||
from collections.abc import Callable
|
||||
from typing import Any
|
||||
|
||||
@@ -152,9 +153,13 @@ def _parse_json_object(raw: str) -> dict[str, Any]:
|
||||
def _call_completion_with_retries(completion_func: Callable[..., str], messages: list[dict[str, str]]) -> str:
|
||||
attempts = max(1, int(getattr(settings, "REGULATORY_LLM_REVIEW_MAX_ATTEMPTS", 3) or 3))
|
||||
delay_seconds = float(getattr(settings, "REGULATORY_LLM_REVIEW_RETRY_DELAY_SECONDS", 0.5) or 0)
|
||||
timeout_seconds = float(getattr(settings, "REGULATORY_LLM_REVIEW_TIMEOUT_SECONDS", 15) or 15)
|
||||
accepts_timeout = _accepts_timeout(completion_func)
|
||||
last_error: Exception | None = None
|
||||
for attempt in range(1, attempts + 1):
|
||||
try:
|
||||
if accepts_timeout:
|
||||
return completion_func(messages, temperature=0.0, timeout=timeout_seconds)
|
||||
return completion_func(messages, temperature=0.0)
|
||||
except (LLMRequestError, OSError, TimeoutError) as exc:
|
||||
last_error = exc
|
||||
@@ -167,6 +172,14 @@ def _call_completion_with_retries(completion_func: Callable[..., str], messages:
|
||||
raise LLMRequestError("LLM复核调用失败。")
|
||||
|
||||
|
||||
def _accepts_timeout(completion_func: Callable[..., str]) -> bool:
|
||||
try:
|
||||
signature = inspect.signature(completion_func)
|
||||
except (TypeError, ValueError):
|
||||
return True
|
||||
return "timeout" in signature.parameters
|
||||
|
||||
|
||||
def _should_call_llm(completion_func: Callable[..., str] | None) -> bool:
|
||||
if completion_func is not None:
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user