diff --git a/pipeline_llm/inference.py b/pipeline_llm/inference.py index 360bb6b..27598af 100644 --- a/pipeline_llm/inference.py +++ b/pipeline_llm/inference.py @@ -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;未配则等同普通链)。 返回 dict(govern 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: