Compound AI Systems
了解复合 AI 系统如何结合模型、工具、数据和规则。探索其架构、应用、权衡及可靠 AI 工作流的最佳实践。
复合式 AI 系统是由多个相互作用的组件构成的 AI 应用,而不是单一模型。一个系统可以将模型、检索服务、数据库、确定性规则、外部工具和人工审核整合到一个协调的工作流中。例如,在计算机视觉领域,一个模型可以检测对象,跟踪软件维护对象身份,业务规则解释事件,而监控服务则观察生产环境中的性能。其定义性特征是组合:系统级行为源于各部分如何交换信息并做出决策。
复合式 AI 系统的工作原理#
复合式系统会将较大的任务划分为多个专门阶段。典型组件包括数据预处理、一个或多个 AI 模型、存储、验证逻辑、应用程序编程接口和编排层。诸如 OpenAPI 规范中所描述的明确契约,会定义每项服务接收和返回的数据。
控制可以是确定性的,即由传统代码按固定顺序调用各个组件;也可以是动态的,即由 AI 代理编排层在运行时选择工具和路径。AI 编排负责协调整个应用中的依赖关系、重试、资源和数据流。
常见模式包括 检索增强生成,其中检索过程为语言模型提供上下文;还包括将摄像头、雷达或其他输入结合起来的传感器融合流水线。从孤立模型转向集成系统这一更广泛的变化,详见 伯克利 AI 研究院关于复合式 AI 系统的概述。(bair.berkeley.edu)
复合式系统为何重要#
组合式架构让开发者无需重新训练一个庞大的模型,就能改进应用。开发者可以替换、扩展或优化某个专用组件,同时保持其余工作流稳定。规则和验证阶段也能提供比完全依赖概率模型输出更强的控制力。
这些优势也带来了系统级权衡:
- 故障传播: 错误检测、检索失败或 API 不可用,都可能影响后续的每个决策。
- 延迟和成本: 每次模型调用、网络请求和验证阶段都会消耗总响应预算的一部分。
- 接口漂移: 更新某项服务可能会改变其输出格式或假设,并在不易察觉的情况下破坏另一个组件。
- 评估困难: 某个组件表现出色,并不意味着端到端结果同样出色。
因此,机器学习运维必须覆盖整个工作流。OpenTelemetry 可观测性指南说明了如何通过链路追踪、指标和日志揭示分布式服务中发生的情况,而 MLflow 实验跟踪可以记录模型配置和评估结果。(opentelemetry.io)
相关概念与关键区别#
复合式 AI 系统并不只是复杂模型的另一种称呼。
模型集成会结合多个模型的预测结果,通常采用投票、平均或堆叠等方式。集成模型可以作为复合式系统中的一个组件,但通常不包含数据库、工具、工作流逻辑和运营服务。
代理式工作流允许模型自主选择操作或工具。复合式系统的范围更广:许多复合式系统使用固定流水线、事件驱动服务或人工批准,而不使用自主代理。
同样,RAG 是一种涉及检索和生成的特定复合模式。复合式 AI 还可以协调计算机视觉、预测、优化、机器人技术和传统软件,而无需使用语言模型。
实际应用#
-
制造业视觉检测: 摄像头拍摄产品,Ultralytics YOLO26 模型检测缺陷,基于规则的逻辑检查缺陷的严重程度和位置,生产系统则拒绝或批准每件产品。不确定的情况可以转交人工检查员,而存储的图像则可支持后续重新训练。
-
交通与停车分析: 检测过程识别车辆,多目标跟踪在不同帧之间维护对象身份,几何逻辑确定车道或停车区域的占用情况,仪表板则汇总计数和警报。错误可能导致重复计数、漏报拥堵事件或错误的可用车位估计,因此必须对所有阶段进行联合测试。
以下简化示例展示了感知结果如何输入确定性决策逻辑:
from ultralytics import YOLO
# Perception component
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Policy component
person_class = next(i for i, name in result.names.items() if name == "person")
person_count = int((result.boxes.cls == person_class).sum())
decision = "review" if person_count >= 4 else "continue"
print({"people_detected": person_count, "next_step": decision})
result.save(filename="compound_system_input.jpg")在这里,YOLO 生成结构化观测结果,而独立的策略逻辑决定下一步操作。生产系统还可以添加存储、通知、访问控制或人工审核。
实用设计指南#
从可度量的端到端目标开始,然后为每个组件分配一项明确职责。在每个边界定义数据模式和超时时间,独立测试各个组件,并评估真实的工作流,而不只是模型准确率。
使用链路追踪跟踪单个请求,设置延迟和成本预算,并为不可用的服务提供重试或安全回退方案。Kubernetes 健康探针展示了已部署服务如何公开就绪和存活信号。
风险控制应覆盖完整系统,包括数据访问、外部工具、人工覆盖操作和下游影响。NIST 人工智能风险管理框架提供了面向生命周期的指导,用于治理、衡量和管理这些风险。团队可以使用 Ultralytics Platform,将数据集标注、训练、部署和生产监控连接起来,为更广泛的复合式应用中的视觉组件提供支持。(nist.gov)









