合议模型
合议模型让调用方只使用一个模型别名,由 AISIX 请求多个合议成员生成候选响应,再请求评审模型合成最终答案。调用方发送一个请求,并在所请求的别名下收到一个答案。分发与合成都在网关内部完成。
在 AISIX 中,合议模型是一种模型别名,AISIX 通过调用多个直接模型来解析它,与路由组和语义路由器类似。它不直接指向某个上游模型,而是通过 ensemble 配置告诉 AISIX:调用哪 些直接模型作为合议成员,以及用哪个直接模型作为评审模型。
合议模型包含两部分:
- 合议成员并发调用,各自生成独立的候选响应。
- 评审模型接收成功的合议成员响应,合成返回给调用方的单一响应。
合议成员和评审模型都必须引用已存在的直接模型。请在这些直接模型上配置服务提供方凭据、上游模型名称、健康行为、冷却行为和子调用限流。
适用场景与取舍
合议模型用额外的模型调用换取更强的答案合成能力。当答案质量或一致性比极致的延迟、成本更重要时,它最为有用。
当单个模型的答案本身不够可靠时,可以使用合议模型:
- 降低单模型的波动和盲区。相互印证的独立答案更可能正确,评审模型会化解矛盾、舍弃缺乏依据的说法。
- 对高难度的推理或研究类提示词做交叉验证。不同模型可能沿不同路径得出答案,另一个候选响应往往能暴露其中的错误。
- 单一服务提供方下的自合议。合议成员可以是同一个直接模型的多次重复,各次使用不同的
temperature和seed,这样只有一个服务提供方密钥的团队,无需引入新厂商也能获得答案多样性。
合议模型会向每个合议成员各发一个请求,再调用评审模型,因此并不适合所有场景。以下情况请改用其他模型类型:
- 对延迟敏感、以流式优先的链路。首个 Token 到达时间天然偏高,原因见流式与调 用方响应一节。
- 使用工具或函数调用的请求。这类请求不受支持,受支持的请求形态见安全护栏与请求约束。
- 高流量、对成本敏感的流量,此时质量提升不足以抵消额外开销。
- Chat Completions 以外的端点。合议模型仅支持聊天。
这些情况请改用直接模型或多目标模型。多目标模型每次请求只选一个目标,而合议模型会调用全部合议成员,并综合它们的输出。
请求流程
合议请求从一个模型别名进入。AISIX 把请求并发分发给配置的合议成员,将成功的成员响应交给评审模型,最终只返回评审模型合成的答案。
对于每个聊天请求,AISIX 会执行以下阶段:
- 分发给合议成员。AISIX 把提示词并发分发给每个合议成员,并套用各成员各自的
temperature和seed覆盖值。 - 收集成功响应。AISIX 等待合议成员调用完成或超时,保留成功的答案,并检查其数量是否满足
min_responses。否则,请求按失败处理中的行为处理。 - 合成最终答案。AISIX 用原始请求和已收集的答案构造合成提示词,再以固定的低 temperature 调用评审模型。评审模型的输出在合议模型别名下返回给调用方。
只要仍满足 min_responses,个别缓慢或失败的合议成员不会导致整个请求失败。合议成员和评审模型调用都使用其所引用直接模型上配置的重试预算。
成本与延迟
合议模型的成本更高,通常也比直接模型或多目标模型更慢,因为每个请求可能触发多次上游调用。
成本是各子调用之和:
ensemble cost ≈ sum(panel member costs) + judge cost
三个合议成员加一个评审模型,会把提示词处理四次,评审模型还要额外处理所有成员答案。面向调用方的 usage 反映的正是这一真实成本,见用量核算。
延迟主要由最慢的合议成员加上评审模型决定:
ensemble latency ≈ max(panel member latency) + judge latency
由于评审模型必须等合议成员返回后才能开始,首个 Token 到达时间天然偏高——在合成开始前没有任何 Token 可供流式输出。
保持合议成员数量较少(两到四个),选一个响应快的评审模型,并设置 timeout_ms,避免某个卡住的成员拖慢整个请求。
准备工作
开始前,请准备以下资源:
- 至少一个可用作合议成员的直接模型,以及一个可用作评审模型的直接模型。同一个直接模型可以同时担任这两个角色。
- 一个可以调用合议模型别名的调用方 API Key。
- 对于 AISIX Cloud,需要一个已接入网关的环境,以及管理模型和调用方 API Key 的权限。
- 对于开源 AISIX 网关,需要有权访问声明式资源文件和网关进程。