feat(inference): 接purpose透传——_resolve_call/chat_inference支持用途标记,辅助任务(分类/选择/摘要)走辅助模型链,_purpose转发上游前剥离

This commit is contained in:
yumoqing 2026-09-04 19:32:34 +08:00
parent 9fb020b11e
commit 6feacaf51c

View File

@ -75,8 +75,11 @@ def _texts_len(messages):
# ────────────────────────── 解析链 ──────────────────────────
async def _resolve_call(sor, org_id, user_id, model_name, capability,
est_tokens, task_ref):
"""门禁链 ①-⑥ + 预授权 + 加载模型/适配模板。
est_tokens, task_ref, purpose=''):
"""门禁链 ①-⑥ + 加载模型/适配模板。
purpose='utility'辅助任务分类/选择/摘要模型链为 辅助
需机构策略配置 utility_model_id未配则等同普通链
返回 dictgovern ctx + payload 所需全部信息任何一级不过抛 GovernError
本层无 __LEGACY__ 兜底新接口只认新表机构未配策略直接报可行动错误
@ -87,7 +90,7 @@ async def _resolve_call(sor, org_id, user_id, model_name, capability,
raise GovernError('缺少机构标识(机构隔离必需):内部调用须带 org_id')
ok, res = await govern_resolve(
org_id=org_id, user_id=user_id or '', model_name=model_name or '',
est_tokens=int(est_tokens or 0), task_ref=task_ref or '')
est_tokens=int(est_tokens or 0), task_ref=task_ref or '', purpose=purpose or '')
if not ok:
if res == '__LEGACY__':
# 全平台无策略/指定模型不在新表:不再有旧表兜底,报可行动错误
@ -341,11 +344,14 @@ async def chat_inference(org_id, user_id, payload, model_name='', task_ref=''):
if not model_name:
model_name = await _pick_default_model_name(org_id, 't2t')
# 用途标记(辅助任务走辅助模型链):取出后从 payload 剥离,不透传给上游
purpose = (payload.pop('_purpose', '') or '')
est = max(_texts_len(payload.get('messages')) // EST_TOKENS_PER_CHAR, 200)
db, dbname = _get_db()
async with db.sqlorContext(dbname) as sor:
ctx = await _resolve_call(
sor, org_id, user_id or '', model_name, 't2t', est, task_ref)
sor, org_id, user_id or '', model_name, 't2t', est, task_ref, purpose)
try:
data = await _call_upstream_chat(ctx, payload)
except Exception as e: