跳到主要内容

Agent 组件 (Agent Component)

该组件具备推理、工具使用以及多智能体协作能力。


Agent (智能体) 组件可以微调大语言模型 (LLM) 并设置其提示词 (Prompt)。从 v0.20.5 版本开始,Agent 组件能够独立工作,并具备以下能力:

  • 基于环境反馈进行反思和调整的自主推理能力。
  • 使用工具或子智能体 (Sub-Agent) 来完成任务的能力。

适用场景 (Scenarios)

当您需要大语言模型 (LLM) 协助进行摘要、翻译或控制各种任务时,Agent 组件是必不可少的。

前提条件 (Prerequisites)

  1. 确保您已正确配置了聊天模型 (Chat Model):

    Set default models

  2. 如果您的智能体 (Agent) 涉及数据集检索,请确保您已正确配置目标数据集

快速上手 (Quickstart)

1. 点击 Agent 组件显示其配置面板

相应的配置面板将出现在画布的右侧。使用该面板可以定义和微调 Agent 组件的行为。

2. 选择您的模型

点击 Model (模型),然后从下拉菜单中选择一个聊天模型。

注意

如果没有出现模型,请检查您是否已在 Model providers(模型提供商)页面添加了聊天模型。

3. 更新系统提示词 (可选)

系统提示词 (System Prompt) 通常用于定义模型的角色。您可以保留默认的系统提示词,也可以对其进行自定义以覆盖默认设置。

4. 更新用户提示词

用户提示词 (User Prompt) 通常用于定义模型的任务。您会发现 sys.query 变量已被自动填充。输入 / 或点击 (x) 可以查看或添加变量。

在本快速上手指南中,我们假设您的 Agent 组件是独立使用的(下方没有连接工具或子智能体),那么您可能还需要使用 formalized_content 变量来指定检索到的分块:

5. 跳过 Tools 和 Agent 配置

+ Add tools+ Add agent 部分仅在您需要将 Agent 组件配置为规划器 (Planner)(下方带有工具或子智能体)时使用。在本快速上手指南中,我们假设您的 Agent 组件是独立使用的(下方无工具或子智能体)。

6. 选择下一个组件

如有必要,点击 Agent 组件上的 + 按钮,从下拉列表中选择工作流中的下一个组件。

作为客户端连接到 MCP 服务器 (Model Context Protocol)

重要提示

在本节中,我们假设您的 Agent 将被配置为一个规划器 (Planner),并且在其下方连接了一个 Tavily 工具。

1. 导航到 MCP 配置页面

2. 配置您的 Tavily MCP 服务器

更新您的 MCP 服务器的名称、URL(包括 API 密钥)、服务器类型和其他必要设置。正确配置后,将显示可用的工具。

3. 导航到您的智能体编辑页面

4. 连接到您的 MCP 服务器

  1. 点击 + Add tools(添加工具):

  1. 点击 MCP 以显示可用的 MCP 服务器。

  2. 选择您的 MCP 服务器:

    目标 MCP 服务器将显示在您的 Agent 组件下方,您的智能体将自主决定何时调用它提供的可用工具。

5. 更新系统提示词以指定触发条件 (可选)

为了确保可靠的工具调用,您可以在系统提示词中指定哪些任务应该触发相应的工具调用。

6. 查看 MCP 服务器的可用工具

在画布上,点击新填充的 Tavily 服务器以查看并选择其可用工具:

配置项 (Configurations)

Model (模型)

点击 Model 的下拉菜单以显示模型配置窗口。

  • Model (模型):要使用的聊天模型。
    • 请确保已在 Model providers(模型提供商)页面正确设置了聊天模型。
    • 您可以为不同的组件使用不同的模型,以增加灵活性或提高整体性能。
  • Creativity (创造力)Temperature(温度)、Top P(核采样)、Presence penalty(存在惩罚)和 Frequency penalty(频率惩罚)设置的快捷方式,表示模型的自由度级别。从 Improvise (即兴)Precise (精准)Balance (平衡),每个预设配置都对应 TemperatureTop PPresence penaltyFrequency penalty 的独特组合。 此参数有三个选项:
    • Improvise (即兴):产生更具创造性的回答。
    • Precise (精准):(默认)产生更保守的回答。
    • Balance (平衡):介于 ImprovisePrecise 之间的折中方案。
  • Temperature (温度):模型输出的随机性级别。
    默认值为 0.1。
    • 较低的值会使输出更具确定性和可预测性。
    • 较高的值会使输出更具创造性和多样性。
    • 温度为 0 时,相同的提示词总是产生相同的输出。
  • Top P (核采样):核采样。
    • 通过设置阈值 P 并将采样限制在累积概率超过 P 的词元上,降低生成重复或不自然文本的可能性。
    • 默认值为 0.3。
  • Presence penalty (存在惩罚):鼓励模型在回答中包含更丰富多样的词元。
    • 较高的 presence penalty 值会使模型更有可能生成尚未包含在已生成文本中的新词元。
    • 默认值为 0.4。
  • Frequency penalty (频率惩罚):防止模型在生成的文本中过于频繁地重复相同的单词或短语。
    • 较高的 frequency penalty 值会使模型在重复使用已出现的词元时更加保守。
    • 默认值为 0.7。
  • Max tokens (最大词元数)
    • 模型的最大上下文大小。
注意
  • 所有组件不一定必须使用相同的模型。如果特定模型在某项任务中表现不佳,可以考虑换用其他模型。
  • 如果您对 TemperatureTop PPresence penaltyFrequency penalty 的底层机制不太确定,只需从 Creativity 的三个选项中选择一个即可。

System prompt (系统提示词)

通常,您可以使用系统提示词 (System Prompt) 来描述大语言模型 (LLM) 的任务,指定其响应方式,并概述其他各种要求。我们不打算详细展开这个话题,因为它像提示词工程 (Prompt Engineering) 一样广泛。但是,请注意,系统提示词通常与键/变量 (Variables) 结合使用,这些变量作为大语言模型的各种数据输入。

Agent 组件依赖变量 (Variables) 来指定其数据输入。其直接上游组件并不一定是其数据输入,工作流中的箭头表示处理顺序。Agent 组件中的变量与系统提示词结合使用,为大语言模型指定数据输入。使用正斜杠 /(x) 按钮可显示要使用的变量。

高级用法

自 v0.20.5 版本起,系统提示词 (System prompt) 字段中提供了四个框架级别的提示词块,使您能够在框架级别自定义和覆盖提示词。输入 / 或点击 (x) 即可查看它们;它们显示在下拉菜单中的 Framework (框架) 条目下。

  • task_analysis(任务分析)提示词块
    • 该块负责分析任务——可以是用户任务,也可以是当 Agent 组件作为子智能体 (Sub-Agent) 时由主智能体 (Lead Agent) 分配的任务。
    • 参考设计:analyze_task_system.mdanalyze_task_user.md
    • 当此 Agent 组件充当规划器 (Planner)(下方带有工具或子智能体)时可用。
    • 输入变量:
      • agent_prompt:系统提示词。
      • task:主智能体或子智能体的用户提示词。主智能体的用户提示词由用户定义,而子智能体的用户提示词是在主智能体分配任务时定义的。
      • tool_desc:可调用的工具和子智能体的描述。
      • context:运行上下文,用于存储智能体、工具和子智能体之间的交互;初始为空。
  • plan_generation(计划生成)提示词块
    • 该块根据任务分析结果,为 Agent 组件创建下一步要执行的计划。
    • 参考设计:next_step.md
    • 当此 Agent 组件充当规划器 (Planner)(下方带有工具或子智能体)时可用。
    • 输入变量:
      • task_analysis:当前任务的分析结果。
      • desc:当前正在调用的工具或子智能体的描述。
      • today:今天的日期。
  • reflection(反思)提示词块
    • 该块使 Agent 组件能够进行反思,从而提高任务的准确性和效率。
    • 参考设计:reflect.md
    • 当此 Agent 组件充当规划器 (Planner)(下方带有工具或子智能体)时可用。
    • 输入变量:
      • goal:当前任务的目标。它是主智能体或子智能体的用户提示词。主智能体的用户提示词由用户定义,而子智能体的用户提示词由主智能体定义。
      • tool_calls:工具调用历史。
      • call.name:所调用工具的名称。
      • call.result:工具调用的结果。
  • citation_guidelines(引用指南)提示词块

下图显示了 Agent 组件作为独立节点以及作为规划器(下方带 Tavily 工具)时可用的框架提示词块:

standalone

planner

User prompt (用户提示词)

用户定义的提示词。默认值为 sys.query(用户查询)。通常,当将 Agent 组件作为独立模块使用(而不是作为规划器)时,您通常需要在此处指定对应 Retrieval 组件的输出变量 (formalized_content),作为大语言模型 (LLM) 输入的一部分。

Tools (工具)

您可以将 Agent 组件作为一个协同者,借助其他工具进行推理和反思;例如,Retrieval (检索) 组件可以充当 Agent 的此类工具之一。

Agent (智能体)

您可以使用 Agent 组件作为协同者,在子智能体或其他工具的协助下进行推理和反思,从而形成一个多智能体 (Multi-Agent) 系统。

Message window size (消息窗口大小)

一个整数,指定输入到大语言模型 (LLM) 中的历史对话轮数。例如,如果设置为 12,则最后 12 轮对话的 token 将提供给大语言模型。此功能会消耗额外的 token。

重要提示

此功能用于多轮对话。

Max retries (最大重试次数)

定义智能体在停止或报告失败前,尝试重试失败任务或操作的最大次数。

Delay after error (出错后延迟)

智能体在重试失败任务之前等待的秒数,有助于防止立即重复尝试并给系统状况改善留出时间。默认值为 1 秒。

Max reflection rounds (最大反思轮数)

定义所选聊天模型的最大反思轮数。默认值为 1 轮。

注意

增加此值将显著延长您的智能体的响应时间。

Output (输出)

Agent 组件输出的全局变量名称,可以被工作流中的其他组件所引用。

常见问题 (FAQ)

为什么我的智能体 (Agent) 响应需要这么长时间?

详情请参阅此处