fix(llm_bridge): native调用透传_timeout端点预算——pbls design三连超时根因:llm_call_msgs_native只把timeout用作客户端等待,payload无_timeout→端点按供应商端点配置(百炼120s)掐上游,design收尾大请求(17tools/60~125KB)天然72~115s,一半概率120s被杀→内部3重试全灭→任务failed暂停项目;native补_timeout=客户端-60s余量(端点先掐返结构化错误可分类重试),llm_call_msgs客户端等待改timeout+60对齐llm_infer模式
This commit is contained in:
parent
88a361a50e
commit
313f32dd7b
@ -197,7 +197,10 @@ async def llm_call_msgs(messages: list, model: str = None, temperature: float =
|
||||
payload["_timeout"] = int(timeout)
|
||||
if session_id:
|
||||
payload["_session_id"] = session_id
|
||||
# 客户端等待须覆盖端点侧预算 + 余量(同 llm_infer 模式),否则客户端先断连、
|
||||
# 报模糊 TimeoutError 而非端点的结构化错误
|
||||
data = await _http_chat(payload, org_id or '0', user_id or '', model or '',
|
||||
timeout=(int(timeout) + 60 if timeout else 0),
|
||||
project_id=project_id or '')
|
||||
try:
|
||||
return data["choices"][0]["message"]["content"]
|
||||
@ -225,6 +228,14 @@ async def llm_call_msgs_native(messages: list, tools: list = None, model: str =
|
||||
payload["tool_choice"] = "auto"
|
||||
if purpose:
|
||||
payload["_purpose"] = purpose
|
||||
if timeout:
|
||||
# 端点侧上游预算必须随调用方透传(2026-09-15 pbls design 三连超时根因):
|
||||
# 原来 native 只把 timeout 用作客户端等待,payload 不带 _timeout → 端点按
|
||||
# 供应商端点配置(百炼 timeout=120)掐断上游,而 design 收尾大请求天然
|
||||
# 72~115s,一半概率 120s 被杀 → 内部 3 重试全灭 → 任务 failed。
|
||||
# 端点预算 = 客户端等待 - 60s 余量:让端点先掐并返回结构化错误(可分类
|
||||
# 重试),而不是客户端 aiohttp 断连报模糊 TimeoutError。
|
||||
payload["_timeout"] = max(int(timeout) - 60, 60)
|
||||
if session_id:
|
||||
payload["_session_id"] = session_id
|
||||
data = await _http_chat(payload, org_id or '0', user_id or '', model or '',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user