跳转至

智能体范式

框架提供了两种不同的智能体范式来处理不同复杂程度的任务:一种是直接的 SimpleAgent,另一种是更高级的 OrchestraAgent。范式的选择由 AgentConfig 中的 type 字段决定。

get_agent 工厂函数是根据指定配置创建智能体实例的主要入口。

from utu.agents import get_agent
from utu.config import ConfigLoader

# 加载一个 type 设置为 "simple" 或 "orchestra" 的配置文件
config = ConfigLoader.load_agent_config("my_agent_config")

# 工厂函数返回正确的智能体实例
agent = get_agent(config)

SimpleAgent (单智能体范式)

SimpleAgent 实现了基于 Reason-Act (ReAct) 框架的经典单智能体方法。

工作原理

单一的 LLM 负责整个任务解决过程。它在一个循环中运行:

  1. 推理:智能体分析当前任务及其上下文。
  2. 行动:根据其推理,它选择并调用适当的工具。
  3. 观察:它观察工具的结果并将新信息纳入其上下文。

这个循环会一直持续,直到智能体确定任务已完成并生成最终答案。

graph TD
    A[开始] --> B{推理任务};
    B --> C{选择工具};
    C --> D[执行工具];
    D --> E[观察结果];
    E --> B;
    B --> F[最终答案];

使用场景

此范式最适合可以通过一系列线性工具调用解决的直接任务,不需要复杂的长期规划或协调不同的专业技能。

使用示例

以下是使用 SimpleAgent 的几个示例。

1. 基本使用

你可以直接实例化 SimpleAgent 并在构造函数中覆盖其配置,例如指令。

from utu.agents import SimpleAgent

async with SimpleAgent(instructions="总是以 `Aloha!` 为前缀回答") as agent:
    await agent.chat("今天北京的天气怎么样?")

除了 chat,你还可以使用 chat_streamed 方法进行流式输出。

2. 使用内置工具

对于更复杂的行为,你可以使用 YAML 配置文件来定义智能体及其工具包。

Python Code:

from utu.agents import SimpleAgent

async with SimpleAgent(config="sample_tool.yaml") as agent:
    await agent.chat("今天北京的天气怎么样?")

YAML Configuration (configs/agents/sample_tool.yaml):

# configs/agents/sample_tool.yaml
defaults:
  - /model/base
  - /tools/search@toolkits.search # 加载 'search' 工具包
  - _self_

agent:
    name: simple-tool-agent
    instructions: "你是一个可以搜索网络的有用助手。"

3. 使用基于 MCP 的工具

SimpleAgent 还可以通过多组件协议 (MCP) 连接到作为独立进程运行的工具。这通过将工具包 mode 设置为 mcp 来配置。

Python Code:

from utu.agents import SimpleAgent

async with SimpleAgent(config="sample_mcp.yaml") as agent:
    await agent.chat("现在几点了")

YAML Configuration (configs/agents/sample_mcp.yaml):

# configs/agents/sample_mcp.yaml
defaults:
  - /model/base
  - _self_

toolkits:
  time:
    name: time
    mode: mcp
    activated_tools: null
    config:
      command: uvx
      args: ["mcp-server-time", "--local-timezone=Asia/Shanghai"]

agent:
    name: simple-mcp
    instructions: "总是以 `Aloha!` 为前缀回答"

OrchestraAgent (计划 - 执行范式)

OrchestraAgent 实现了更复杂的多智能体范式,基于“计划 - 执行”模型。它将复杂任务分解为更小的子任务,并协调一组专门的智能体来解决它们。

架构

管弦乐队由三个不同的角色组成:

  1. 计划者智能体:操作的“大脑”。它接收用户的高级目标,其唯一职责是创建一个详细的、分步的计划。计划中的每一步都是分配给特定工作者的子任务。

  2. 工作者智能体:操作的“手”。每个工作者都是一个配备了一组特定工具的专业 SimpleAgent(例如,具有网络搜索工具的 SearchWorker,具有文件系统和代码执行工具的 CodeWorker)。工作者从计划中接收单个子任务并执行它。

  3. 报告者智能体:操作的“嘴”。在工作者完成所有子任务后,报告者收集所有结果并将它们综合成一个连贯的、最终的答案给用户。

工作流程

过程是一个清晰的顺序流:

  1. 计划:计划者创建一个多步骤计划。
  2. 工作OrchestraAgent 遍历计划,将每个子任务分派给指定的工作者并收集结果。
  3. 报告:报告者将收集的结果综合成最终答案。
graph TD
    A[用户任务] --> B[计划者智能体];
    B --> C(计划: 子任务 1, 2, ...);
    C --> D[工作者智能体];
    D --> E{顺序执行子任务};
    E --> F[收集结果];
    F --> G[报告者智能体];
    G --> H[最终答案];

使用场景

此范式在需要长期规划、使用不同专业工具或协调多项技能的复杂多步骤任务中表现出色。通过分解问题,它可以解决单个智能体难以管理的挑战。