AI 编排:协调多个 LLM 和工具构建完整应用

AI AgentAI 编排openstarry.com

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:分治策略构建复杂智能系统

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →