首页 > 教程攻略 > ai资讯 >Atoms多模型同时调用结果合并处理代码

Atoms多模型同时调用结果合并处理代码

来源:互联网 时间:2026-08-22 13:39:11

多模型API响应需要统一为包含text(文本内容)、model_name(模型名称)、token_usage(令牌使用情况)字段的JSON格式。串行调用时,按照长度加权进行合并,选取最长的文本作为主干,并补全独有实体。并行调用则适用于投票合并,包括硬投票多数决和软投票置信加权两种方式。级联过滤式合并分为三个步骤:A步骤提取事实,B步骤校正逻辑,C步骤控制语气。

Atoms多模型同时调用结果合并处理代码

准备多模型API响应数据结构

先确保每个模型返回的JSON结构统一,至少包含textmodel_nametoken_usage三个字段,否则后续合并逻辑会因键缺失而报错。

若调用OpenAI返回的是choices[0].message.content,Hugging Face返回的是generated_text,必须在call_model()函数内做标准化封装——不统一字段名,后面所有融合策略都会失效。

串行调用后按文本长度加权合并

方法一:直接取最长输出作为主干,其余结果补全细节

① 收集全部响应,过滤掉text为空或长度<10的脏数据;

② 找出text字符数最多的响应,设为primary

③ 对其余响应,提取其中不在primary中间出现的实体、数字、专业术语(用正则r'b[A-Z][a-z]+(?:s+[A-Z][a-z]+)*b|d+.*d*'匹配),去重后追加到primary末尾;

【注意:必须先清洗再提取,否则“Model A: Yes.”和“Model B: Yes”会被视为两个不同实体】

并行调用后启用投票机制合并

适用于分类、是非判断、选项选择类任务,例如“该合同条款是否构成违约?”

方法1:硬投票(多数决)

将每个模型输出映射为预定义标签,如{"是": 1, "否": 0, "无法判断": -1},统计三票中间出现次数最多的标签值,直接返回对应中文。

方法2:软投票(置信分加权)

若某模型返回带confidence_score字段(如{"answer": "是", "confidence_score": 0.92}),则按分数加权计票,最终归一化为0~1区间输出。

这一步操作起来很简单,直接把各模型的confidence_score乘以对应标签编码后求和再除以总分即可。

级联过滤式合并:逐层精炼输出

适合高容错场景,如法律审查、医疗建议、金融风控。第一层筛事实,第二层校逻辑,第三层控语气。

第一步:用模型A(强事实提取型,如DeepSeek-R1)提取原始主张、金额、日期、责任方四类关键字段,丢弃所有修饰性语句;

第二步:将第一步结果喂给模型B(强逻辑校验型,如Qwen2.5-72B),检查“金额是否大于零”“日期是否早于当前日”等硬约束,标记违规项;

第三步:把前两步输出拼成新prompt,交给模型C(强合规表达型,如GLM-4-Flash),要求其仅用中性、无歧义、可审计的句式重写结论——

【不可跳过第三步,否则模型B的校验结果会以口语化方式混入最终输出】