跳到主要内容

为代理配置工具

默认情况下,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