为什么需要重命名

在多智能体系统或多角色协作任务中,你可能希望多个模块复用相同的代码逻辑,但在推理流程中表现出不同的行为或配置。 例如,在同一个任务中使用两个不同的大模型分别扮演 “回答者”“复核者” 两个角色。 UltraRAG 提供了一种简单机制:为同一个 Server 模块配置多个逻辑别名,从而实现并行、解耦与个性化的执行流程。

使用方法

1. 配置别名 Server

pipeline.yaml 中,你可以在 servers 字段下为同一个路径定义多个逻辑别名:
servers:
  agent1: servers/generation
  agent2: servers/generation
这里 agent1agent2 指向了相同的 servers/generation 模块,但后续将独立执行、独立配置。

2. 在pipeline中分别调用

在 pipeline 中,可以将这两个别名作为不同角色分别调用:
pipeline:
- agent1.generate
- agent2.generate
UltraRAG 会将这两次调用分别视为两个独立的 server 实例进行构建和执行。

示例

Pipeline 文件示例
/images/yaml.svgexamples/multi_agent.yaml
# MCP Server
servers:
  agent1: servers/generation
  agent2: servers/generation

# MCP Client Pipeline
pipeline:
- agent1.generate
- agent2.generate
执行构建命令:
ultrarag build examples/multi_agent.yaml
构建后生成的 server 配置如下所示:
agent1:
  base_url: http://localhost:12301
  model_name: gpt-5
  sampling_params:
    temperature: 0.7
    top_p: 0.8
    top_k: 20
    max_tokens: 512
    stop: ["<|im_end|>", "<|end_search_query|>"]
    extra_body:
      chat_template_kwargs:
        enable_thinking: false

agent2:
  base_url: http://localhost:12302
  model_name: deepseek-r2
  sampling_params:
    temperature: 0.7
    top_p: 0.8
    top_k: 20
    max_tokens: 512
    stop: ["<|im_end|>", "<|end_search_query|>"]
    extra_body:
      chat_template_kwargs:
        enable_thinking: false
可以看到 agent1agent2 分别拥有独立的模型、端口与采样参数配置。

总结

通过为同一个 Server 模块设置多个别名,UltraRAG 支持高度灵活的多智能体任务编排和并发执行能力。你可以像搭积木一样,通过重命名构建复杂协作场景,而无需复制代码或模块逻辑。进一步,还可结合 branch 分支路由、loop 重复推理等机制打造完整 Agent 系统。