跳到主要内容

为代理配置工具

默认情况下,Langflow 代理 (Agents) 仅包含其基础大语言模型 (LLM) 内置的功能。

您可以为代理连接工具,以提供对其他特定功能的访问。 例如,工具可用于创建特定领域的代理,例如可以访问公司知识库的客户支持代理、可以检索股票价格的金融代理,或可以使用高级数学函数解决复杂方程的数学老师代理。

连接工具​

要为代理连接工具,请将任何组件的 Tool (工具) 输出连接到 Agent (代理) 组件的 Tools (工具) 输入。

有些组件默认会发出 Tool 输出。 对于所有其他组件,您必须在组件标题菜单中启用 Tool Mode (工具模式)。 然后,您可以将该工具连接到代理。

您可以为一个代理连接多个工具,每个工具可以有多个代理可以调用的操作(函数)。

当您运行流时,如果代理确定某个工具可以帮助其响应用户的提示,它会决定何时调用该特定工具。

编辑工具的操作​

当您将组件作为工具连接到代理时,每个工具可以有多个代理可以调用的操作(函数)。 可用操作列在每个工具组件的 Actions (操作) 列表中。

您可以更改每个操作的标签、描述和可用性,以帮助代理理解如何使用该工具,并防止其使用无关或不希望的操作。

提示

如果代理似乎在使用工具时出现错误,请尝试编辑操作的元数据以澄清工具的用途,并禁用不必要的操作。

您还可以尝试使用 Prompt Template (提示词模板) 组件向代理传递额外的指令或示例。

要查看和编辑工具的操作,请点击工具组件上的 编辑工具操作 (Edit Tool Actions)。

为每个操作提供了以下信息:

  • 已启用 (Enabled):一个复选框,决定该操作是否对代理可用。 如果选中,则启用该操作。 如果未选中,则禁用该操作。

  • 名称 (Name):操作的人类可读字符串名称,例如 Fetch Content。此项无法更改。

  • 描述 (Description):操作用途的人类可读描述,例如 Fetch content from web pages recursively。 要编辑此值,请 double-click 操作所在的行以打开编辑面板。 当您点击字段外或关闭对话框时,更改会自动保存。

  • Slug:操作的编码名称,通常与名称相同但使用蛇形命名法(snake case),例如 fetch_content。 要编辑此值,请 double-click 操作所在的行以打开编辑面板。 当您点击字段外或关闭对话框时,更改会自动保存。

某些操作允许您为其输入提供固定值。 通常情况下,您希望将这些留空,以便代理可以提供自己的值。 但是,如果您正在尝试调试代理的行为,或者您的用例需要为某个操作提供固定输入,则可以使用固定值。

将代理用作工具​

要创建多代理流,您可以将另一个 Agent (代理) 组件设置为 Tool Mode (工具模式),然后将该代理作为主要 Agent 组件的工具连接。

要亲自尝试,请在 Simple Agent (简单代理) 模板中添加一个额外的代理:

  1. 基于 Simple Agent 模板创建一个流。

  2. 向流中添加第二个 Agent (代理) 组件。

  3. 将您的 OpenAI API Key 添加到两个 Agent 组件中。

  4. 在第二个 Agent 组件中,将模型更改为 gpt-4.1,然后启用 Tool Mode。

  5. 点击 编辑工具操作 (Edit Tool Actions) 来编辑工具的操作。

    在此示例中,将操作的 slug 更改为 Agent-gpt-41,并将描述设置为 Use the gpt-4.1 model for complex problem solving。 这让主要代理知道此工具使用 gpt-4.1 模型,这对于需要更大上下文窗口的任务(如大规模抓取和搜索任务)可能会有帮助。

    作为另一个例子,您可以将几个专业模型连接到一个主要代理,例如在某些任务或领域经过训练的代理,然后主要代理将根据需要调用每个专业代理来响应查询。

    如果您想限制可用的工具集,还可以启用和禁用工具。

  6. 将新代理的 Toolset (工具集) 端口连接到现有代理的 Tools (工具) 端口。

    将代理作为工具

添加自定义组件作为工具​

代理可以使用 自定义组件 作为工具。

  1. 要向代理流添加自定义组件,请在 核心组件 (Core components) 或 Bundles (捆绑包) 菜单中点击 New Custom Component (新建自定义组件)。

  2. 在 Code (代码) 面板中输入 Python 代码以创建自定义组件。

    如果您还没有自定义组件的代码,可以在创建自己的组件之前使用以下代码片段作为示例。

    文本分析器自定义组件 (Text Analyzer custom component)

    此代码创建了一个文本分析器组件。


    _50
    from langflow.custom import Component
    _50
    from langflow.io import MessageTextInput, Output
    _50
    from langflow.schema import Data
    _50
    import re
    _50
    _50
    class TextAnalyzerComponent(Component):
    _50
    display_name = "Text Analyzer"
    _50
    description = "分析并转换输入的文本。"
    _50
    documentation: str = "http://docs.langflow.org/components/custom"
    _50
    icon = "chart-bar"
    _50
    name = "TextAnalyzerComponent"
    _50
    _50
    inputs = [
    _50
    MessageTextInput(
    _50
    name="input_text",
    _50
    display_name="Input Text",
    _50
    info="输入要分析的文本",
    _50
    value="Hello, World!",
    _50
    tool_mode=True,
    _50
    ),
    _50
    ]
    _50
    _50
    outputs = [
    _50
    Output(display_name="Analysis Result", name="output", method="analyze_text"),
    _50
    ]
    _50
    _50
    def analyze_text(self) -> Data:
    _50
    text = self.input_text
    _50
    _50
    # 执行文本分析
    _50
    word_count = len(text.split())
    _50
    char_count = len(text)
    _50
    sentence_count = len(re.findall(r'\w+[.!?]', text))
    _50
    _50
    # 转换文本
    _50
    reversed_text = text[::-1]
    _50
    uppercase_text = text.upper()
    _50
    _50
    analysis_result = {
    _50
    "original_text": text,
    _50
    "word_count": word_count,
    _50
    "character_count": char_count,
    _50
    "sentence_count": sentence_count,
    _50
    "reversed_text": reversed_text,
    _50
    "uppercase_text": uppercase_text
    _50
    }
    _50
    _50
    data = Data(value=analysis_result)
    _50
    self.status = data
    _50
    return data

  3. 在自定义组件中启用 Tool Mode (工具模式)。

  4. 将自定义组件的工具输出连接到 Agent (代理) 组件的 Tools (工具) 输入。

  5. 打开 游乐场 (Playground) 并向代理指示:对这段文本使用文本分析器:"Agents really are thinking machines!"

    根据您的指示,代理应该调用 analyze_text 操作并返回结果。 例如:


    _10
    gpt-4o
    _10
    已完成
    _10
    0.6s
    _10
    以下是对文本 "Agents really are thinking machines!" 的分析结果:
    _10
    原始文本: Agents really are thinking machines!
    _10
    单词数: 5
    _10
    字符数: 36
    _10
    句子数: 1
    _10
    反转文本: !senihcam gnikniht era yllaer stnegA
    _10
    大写文本: AGENTS REALLY ARE THINKING MACHINES!

将任何组件转换为工具​

如果您想用作工具的组件没有 Tool Mode 按钮,请在组件的一个输入中添加 tool_mode=True,并将新的 Toolset 输出连接到代理的 Tools 输入。

Langflow 支持以下数据类型的 Tool Mode:

  • DataInput
  • DataFrameInput
  • PromptInput
  • MessageTextInput
  • MultilineInput
  • DropdownInput

例如,将自定义组件用作工具中的示例代码在 MessageTextInput 输入中包含了 tool_mode=True,因此该自定义组件可以作为工具使用:


_10
inputs = [
_10
MessageTextInput(
_10
name="input_text",
_10
display_name="Input Text",
_10
info="Enter text to analyze",
_10
value="Hello, World!",
_10
tool_mode=True,
_10
),
_10
]

将流用作工具​

代理可以使用 Run Flow (运行流) 组件 将您的其他流用作工具。

  1. 向您的流中添加一个 Run Flow 组件。
  2. 选择您希望代理用作工具的流。
  3. 启用 Tool Mode。 所选流将成为 Run Flow 组件中的一个操作。
  4. 将 Run Flow 组件的 Tool 输出连接到 Agent 组件的 Tools 输入。
  5. 打开 游乐场 (Playground),然后询问代理:你正在使用哪些工具来回答我的问题? 您的流应该作为可用工具显示在响应中。
  6. 向代理提出一个专门使用所连接流作为工具的问题。 所连接的流将根据您的问题返回答案。

Run Flow 组件作为工具连接到 Agent 组件

另请参阅​

Search