AI 编排:协调多个 LLM 和工具构建完整应用
AI 编排是将多个 LLM 调用、工具交互和数据流转组织成一个完整工作流的系统性方法。它是从"能用 LLM"到"能构建 LLM 应用"的关键桥梁。
什么是 AI 编排?
一个真实的 LLM 应用很少只调用一次 LLM。它通常涉及多次 LLM 调用、与外部工具的交互、条件分支和循环。编排就是管理这些复杂交互的系统。
简单 LLM 调用 vs 编排系统:
简单调用:
用户输入 → LLM → 输出
(一步完成)
编排系统:
用户输入
→ LLM(理解意图)
→ 条件判断(是否需要工具?)
→ 工具调用(搜索、计算、查询)
→ LLM(基于工具结果生成回答)
→ LLM(检查回答质量)
→ 输出(或重新执行)
(多步协作完成)
核心编排模式
1. 顺序编排(Sequential)
最简单的模式:步骤按顺序依次执行。
顺序编排:
Step 1 → Step 2 → Step 3 → 最终输出
示例:文章生成流水线
Step 1: LLM 生成大纲
Step 2: LLM 根据大纲生成每节内容
Step 3: LLM 汇总并润色
代码实现:
result1 = step1(input)
result2 = step2(result1)
result3 = step3(result2)
return result3
2. 并行编排(Parallel)
多个步骤同时执行,最后汇总结果。
并行编排:
┌→ Step A →┐
输入 →├→ Step B →├→ 汇总 → 输出
└→ Step C →┘
示例:多源信息聚合
并行搜索多个数据源,汇总后生成综合回答
代码实现:
import asyncio
async def parallel_orchestration(input):
results = await asyncio.gather(
step_a(input),
step_b(input),
step_c(input)
)
return aggregate(results)
3. 条件编排(Conditional)
根据条件决定执行不同的路径。
条件编排:
┌→ Step A(如果条件1)
输入 → 条件├→ Step B(如果条件2)
└→ Step C(默认)
示例:智能客服路由
判断用户意图:
技术问题 → 转接技术 Agent
投诉 → 转接客服 Agent
咨询 → 直接回答
代码实现:
def conditional_orchestration(input):
intent = classify_intent(input)
if intent == "technical":
return technical_agent.handle(input)
elif intent == "complaint":
return complaint_agent.handle(input)
else:
return general_agent.handle(input)
4. 循环编排(Loop)
重复执行某些步骤直到满足条件。
循环编排:
while not done:
Step 1: 执行操作
Step 2: 检查结果
Step 3: 决定是否继续
示例:迭代优化
生成代码 → 测试 → 如果失败 → 修改代码 → 重新测试 → ...
代码实现:
def loop_orchestration(input):
result = initial_generation(input)
for attempt in range(max_retries):
is_valid = validate(result)
if is_valid:
break
result = refine(result, feedback)
return result
5. 路由编排(Router)
根据输入动态选择不同的处理流程。
路由编排:
┌→ 流程 A(简单问题)
输入 → Router ├→ 流程 B(复杂问题)
└→ 流程 C(需要工具)
示例:自适应问答
简单问题 → 直接用小模型回答(快速、低成本)
复杂问题 → 用大模型 + 工具链(准确、高成本)
代码实现:
def router_orchestration(input):
complexity = assess_complexity(input)
if complexity == "simple":
return small_model(input) # 低成本
elif complexity == "complex":
return large_model_with_tools(input) # 高质量
else:
return hybrid_approach(input) # 平衡
主流编排工具
LangChain / LangGraph
LangChain 是最流行的 LLM 应用框架,LangGraph 是其图编排扩展:
# LangGraph 编排示例
from langgraph.graph import StateGraph, END
# 定义状态
class AgentState:
input: str
intermediate: str = ""
output: str = ""
# 定义节点
def research(state):
result = search(state.input)
return {"intermediate": result}
def write(state):
result = llm.write(state.intermediate)
return {"output": result}
def review(state):
result = llm.review(state.output)
if result.approved:
return {"output": state.output}
else:
return {"intermediate": result.feedback}
# 构建图
graph = StateGraph(AgentState)
graph.add_node("research", research)
graph.add_node("write", write)
graph.add_node("review", review)
graph.add_edge("research", "write")
graph.add_edge("write", "review")
graph.add_conditional_edges("review",
lambda s: "end" if approved else "research")
app = graph.compile()
CrewAI
CrewAI 专注于多 Agent 编排,提供更高级的抽象:
# CrewAI 编排示例
from crewai import Agent, Task, Crew
# 定义 Agent
researcher = Agent(
role="研究分析师",
goal="收集和分析相关信息",
backstory="你是一位资深的行业研究分析师",
tools=[search_tool, web_scraper]
)
writer = Agent(
role="内容撰稿人",
goal="将研究结果转化为高质量的文章",
backstory="你是一位经验丰富的科技记者",
tools=[writing_tool]
)
# 定义任务
research_task = Task(
description="研究 AI Agent 的最新发展趋势",
agent=researcher,
expected_output="详细的研究报告"
)
writing_task = Task(
description="根据研究结果撰写一篇科普文章",
agent=writer,
expected_output="一篇 2000 字的科普文章",
context=[research_task] # 依赖研究任务的结果
)
# 组建团队并执行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
verbose=True
)
result = crew.kickoff()
其他工具
| 工具 | 特点 | 适用场景 |
|---|---|---|
| LangChain/LangGraph | 灵活的图编排,丰富的集成 | 通用 LLM 应用 |
| CrewAI | 多 Agent 协作,角色驱动 | 团队协作任务 |
| Semantic Kernel | 微软生态,企业级 | 企业应用 |
| AutoGen | 微软开源,对话式编排 | 多 Agent 对话 |
| Dify | 可视化编排,低代码 | 快速原型 |
何时使用何种编排模式
| 场景 | 推荐模式 | 理由 |
|---|---|---|
| 内容生成流水线 | 顺序编排 | 步骤之间有依赖 |
| 多源信息聚合 | 并行编排 | 信息源独立,可并行 |
| 智能客服 | 路由 + 条件编排 | 不同问题需要不同处理 |
| 代码生成与调试 | 循环编排 | 需要迭代优化 |
| 复杂项目协作 | 多 Agent 编排 | 需要多个专业角色 |
总结
AI 编排是将 LLM 从"单次调用"升级为"完整应用"的核心能力。通过顺序、并行、条件、循环和路由等编排模式,结合 LangChain、CrewAI 等工具,你可以构建出能够处理复杂任务的智能系统。选择合适的编排模式,是构建高效 LLM 应用的关键决策。
下一步阅读:AI 子Agent:分治策略构建复杂智能系统