fix(llm_bridge): 修复purpose碰撞——3个调用函数补purpose参数并塞payload._purpose(上轮重构收敛时丢失,4处调用点传purpose='utility'会TypeError)

This commit is contained in:
ymq 2026-09-04 19:32:33 +08:00
parent 25db66aa61
commit 8a9d0f8294

View File

@ -105,11 +105,13 @@ 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) -> str:
org_id: str = None, user_id: str = None, purpose: str = '') -> str:
"""Call LLM and return text response.
统一走模型治理推理 API门禁链 + 双维度记账
org_id 为空 = 系统级'0'与旧语义不过滤机构等价
purpose='utility'辅助任务分类/选择/摘要治理层按用途选模型链
机构策略配置辅助模型优先 payload _purpose 键透传到端点
"""
# 兼容旧优先级harnessed_agent若宿主加载了独立推理后端
try:
@ -129,6 +131,8 @@ async def llm_call(prompt: str, model: str = None, temperature: float = 0.7,
"messages": [{"role": "user", "content": prompt}],
"temperature": temperature,
}
if purpose:
payload["_purpose"] = purpose
data = await _http_chat(payload, org_id or '0', user_id or '', model or '')
try:
return data["choices"][0]["message"]["content"]
@ -143,9 +147,14 @@ 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) -> str:
"""Call LLM with full message array (system/user/assistant)."""
org_id: str = None, user_id: str = None, purpose: str = '') -> str:
"""Call LLM with full message array (system/user/assistant).
purpose='utility'辅助任务分类/选择/摘要治理层按用途选模型链
"""
payload = {"model": model or '', "messages": messages, "temperature": temperature}
if purpose:
payload["_purpose"] = purpose
data = await _http_chat(payload, org_id or '0', user_id or '', model or '')
try:
return data["choices"][0]["message"]["content"]
@ -156,17 +165,20 @@ async def llm_call_msgs(messages: list, model: str = None, temperature: float =
async def llm_call_msgs_native(messages: list, tools: list = None, model: str = None,
temperature: float = 0.7, org_id: str = None,
user_id: str = None) -> dict:
user_id: str = None, purpose: str = '') -> dict:
"""Native function calling. 传入 tools JSON schema返回 message dict。
Returns:
{"content": str, "tool_calls": [{"id","type","function":{"name","arguments"}}]}
当模型返回 tool_calls content 通常为空字符串
purpose='utility'辅助任务分类/选择/摘要治理层按用途选模型链
"""
payload = {"model": model or '', "messages": messages, "temperature": temperature}
if tools:
payload["tools"] = tools
payload["tool_choice"] = "auto"
if purpose:
payload["_purpose"] = purpose
data = await _http_chat(payload, org_id or '0', user_id or '', model or '')
try:
msg = data["choices"][0]["message"]