diff --git a/pipeline_service/llm_bridge.py b/pipeline_service/llm_bridge.py index e7ee630..70b405e 100644 --- a/pipeline_service/llm_bridge.py +++ b/pipeline_service/llm_bridge.py @@ -105,7 +105,8 @@ def _no_llm_error(model_name=None, org_id=None) -> ValueError: async def llm_call(prompt: str, model: str = None, temperature: float = 0.7, - org_id: str = None, user_id: str = None, purpose: str = '') -> str: + org_id: str = None, user_id: str = None, purpose: str = '', + timeout: int = 0) -> str: """Call LLM and return text response. 统一走模型治理推理 API(门禁链 + 双维度记账)。 @@ -133,6 +134,8 @@ async def llm_call(prompt: str, model: str = None, temperature: float = 0.7, } if purpose: payload["_purpose"] = purpose + if timeout: + payload["_timeout"] = int(timeout) data = await _http_chat(payload, org_id or '0', user_id or '', model or '') try: return data["choices"][0]["message"]["content"] @@ -147,14 +150,18 @@ async def call_llm(tenant_id: str, prompt: str, model: str = None, temperature: async def llm_call_msgs(messages: list, model: str = None, temperature: float = 0.7, - org_id: str = None, user_id: str = None, purpose: str = '') -> str: + org_id: str = None, user_id: str = None, purpose: str = '', + timeout: int = 0) -> str: """Call LLM with full message array (system/user/assistant). purpose='utility':辅助任务(分类/选择/摘要),治理层按用途选模型链。 + timeout:单次上游调用超时秒数(0=用端点默认;上限 900,超长文本提取用)。 """ payload = {"model": model or '', "messages": messages, "temperature": temperature} if purpose: payload["_purpose"] = purpose + if timeout: + payload["_timeout"] = int(timeout) data = await _http_chat(payload, org_id or '0', user_id or '', model or '') try: return data["choices"][0]["message"]["content"]