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

准备多模型API响应数据结构
先确保每个模型返回的JSON结构统一,至少包含text、model_name、token_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的校验结果会以口语化方式混入最终输出】
-
下载
-
- 关于柯南的沙雕网名有哪些
- 角色扮演 | 1
- 网名
-
- 最新中性名字男女通用网名有哪些
- 角色扮演 | 1
- 网名
-
- 关于蓝色说唱的网名有哪些
- 角色扮演 | 1
- 网名
-
- 我好喜欢你是什么梗?
- 角色扮演 |