跳到主要内容

创建解决问题的代理

在 Langchain 中开发代理很复杂。

AgentComponent 是一个组件,用于轻松创建一个能够使用您提供的工具分析任务的 AI 代理。

该组件包含创建代理所需的所有元素。您无需管理 LLM 模型和提供者,只需选择您的模型并输入您的 API 密钥即可。您无需连接Prompt组件,只需在组件的Agent Instruction字段中输入指令即可。

Tool calling agentcomponent

了解如何使用Tool calling agent组件构建流程,并查看它如何帮助您解决问题。

先决条件

使用 AgentComponent 创建解决问题的代理

在 Langflow 中创建一个解决问题的代理,从Tool calling agent开始。

  1. 点击 New Flow,然后点击 Blank Flow
  2. 点击并拖动一个 Agent 组件到您的工作区。默认设置现在是可以接受的,因此本指南假设您正在使用 Open AI 作为 LLM。
  3. 将您的 Open AI API Key 添加到 Agent 组件中。
  4. Chat inputChat output 组件添加到您的流程中,并将它们连接到工具调用代理。

Chat with agent component

连接了一些工具后,这个基本流程使您能够与代理在Playground中进行聊天。

  1. Search API 工具组件连接到您的代理。
  2. 将您的 Search API key 添加到组件中。您的代理现在可以查询 Search API 以获取信息。
  3. 连接一个 Calculator 工具来解决基本的数学问题。
  4. 将一个 API Request 组件连接到代理。这个组件不在Tools类别中,但通过启用 Tool Mode,代理仍然可以使用它作为工具。Tool Mode 通过添加一个可以连接到代理的Tools端口的 Toolset 端口,将一个组件变成一个工具。要在组件上启用 Tool Mode,点击 Tool Mode。组件的字段会根据其所在模式动态变化。

Chat with agent component

使用代理解决问题

您的代理现在拥有执行网页搜索、进行基础数学计算和执行 API 请求的工具。仅凭这些能力,您就可以解决许多问题。

  • 您的桌面游戏小组取消了,您困在家里。将 API Request 指向一个在线规则文档,告诉您的代理 你是一个有趣的游戏组织者,会使用你掌握的工具,然后玩一个游戏。
  • 您需要快速学习一种新的软件语言。将 API Request 指向一些文档,告诉您的代理 你是一位博学的软件开发者,会使用你掌握的工具,然后开始学习。

看看您可以使用此流程解决哪些问题。随着您的问题变得更加专业,添加更多工具。例如,添加一个 Python REPL 组件来解决计算器难以解决的数学问题。

编辑工具的元数据

要编辑工具的元数据,点击工具中的 Edit Tools 按钮以修改其 namedescription 元数据。这些字段帮助连接的代理理解如何使用该工具,而无需修改代理的提示指令。

例如,启用 Tool Mode 时,URL 组件有三个可用的工具。

工具名称描述
URL-fetch_content使用此工具从 URL 中获取和检索原始内容,包括 HTML 和其他结构化数据。返回完整的响应内容。
URL-fetch_content_text使用此工具从网页中获取并提取干净、可读的文本内容。仅返回纯文本内容。
URL-as_dataframe使用此工具从 URL 获取结构化数据并将其转换为表格格式。数据以结构化的 DataFrame 表格格式返回。

连接的代理将根据 namedescription 元数据清楚地了解每个工具的功能。如果您认为代理错误地使用了某个工具,编辑该工具的元数据以帮助它更好地理解该工具。

工具名称和描述可以编辑,但默认的工具标识符不能更改。如果您想更改工具标识符,请创建自定义组件。

要查看代理正在使用哪些工具以及如何使用它们,请询问代理:你用哪些工具来回答我的问题?

将代理用作工具

代理组件本身也支持 Tool Mode,用于创建多代理流程。

向您的解决问题流程中添加一个使用不同 OpenAI 模型进行更专业问题解决的代理。

  1. 点击并拖动一个 Agent 组件到您的工作区。
  2. 将您的 Open AI API Key 添加到 Agent 组件中。
  3. Model Name 字段中,选择 gpt-4o
  4. 点击 Tool Mode 将这个新代理用作工具。
  5. 将新代理的 Toolset 端口连接到之前创建的代理的 Tools 端口。
  6. Search APIAPI Request 连接到新代理。新代理将使用 gpt-4o 执行需要大上下文窗口的网页抓取和信息搜索等较大任务。解决问题的代理现在将使用这个代理作为工具,并拥有其独特的 LLM 和工具集。

The tool calling agent as a tool

  1. 可以编辑新代理的元数据,以帮助解决问题的代理理解如何使用它。点击 Edit Tools 修改新代理的 namedescription 元数据,以便解决问题的代理清楚地了解其用法。例如,默认的工具名称是 Agent。将名称编辑为 Agent-gpt-4o,并将描述编辑为 使用 gpt-4o 模型解决复杂问题。解决问题的代理将理解这是一个 gpt-4o 代理,并将在需要更大上下文窗口的任务中使用它。

添加自定义组件作为工具

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

  1. 要将自定义组件添加到解决问题的代理流程中,点击 New Custom Component

  2. 向自定义组件中添加自定义 Python 代码。这是一个用于情感分析的文本分析器示例。


_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 = "Analyzes and transforms input text."
_50
documentation: str = "https://docs.langflow.org.cn/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="Enter text to analyze",
_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
# Perform text analysis
_50
word_count = len(text.split())
_50
char_count = len(text)
_50
sentence_count = len(re.findall(r'\w+[.!?]', text))
_50
_50
# Transform text
_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

  1. 要将自定义组件启用为工具,点击 Tool Mode
  2. 将工具输出连接到代理的工具输入。
  3. 询问代理,你用哪些工具来回答我的问题?您的回复将类似于以下内容,并包含您的自定义组件。

_10
我可以使用多种工具来帮助您回答问题,包括:
_10
Search API: 这使我能够搜索网络上的最新信息或结果。
_10
HTTP Requests: 我可以向各种 URL 发出 HTTP 请求以检索数据或与 API 交互。
_10
Calculator: 我可以计算基本的算术表达式。
_10
Text Analyzer: 我可以分析和转换输入的文本。
_10
Current Date and Time: 我可以检索不同时区的当前日期和时间。

将任何组件变为工具

如果您想用作工具的组件没有 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 组件用作工具

代理可以使用保存在您的工作区中的流程,通过Run flow组件将它们作为工具。

  1. 要添加一个 Run flow 组件,点击并拖动一个 Run flow 组件到您的工作区。
  2. 选择您希望代理用作工具的流程。
  3. 在组件中启用 Tool Mode
  4. 将工具输出连接到代理的工具输入。
  5. 要启用工具模式,请在 Run flow 组件中选择一个 Flow,然后点击 Tool Mode
  6. 询问代理,你用哪些工具来回答我的问题?您的流程应该在回复中作为工具可见。
Search