创建解决问题的代理
在 Langchain 中开发代理很复杂。
AgentComponent
是一个组件,用于轻松创建一个能够使用您提供的工具分析任务的 AI 代理。
该组件包含创建代理所需的所有元素。您无需管理 LLM 模型和提供者,只需选择您的模型并输入您的 API 密钥即可。您无需连接Prompt组件,只需在组件的Agent Instruction字段中输入指令即可。
了解如何使用Tool calling agent组件构建流程,并查看它如何帮助您解决问题。
先决条件
使用 AgentComponent 创建解决问题的代理
在 Langflow 中创建一个解决问题的代理,从Tool calling agent开始。
- 点击 New Flow,然后点击 Blank Flow。
- 点击并拖动一个 Agent 组件到您的工作区。默认设置现在是可以接受的,因此本指南假设您正在使用 Open AI 作为 LLM。
- 将您的 Open AI API Key 添加到 Agent 组件中。
- 将 Chat input 和 Chat output 组件添加到您的流程中,并将它们连接到工具调用代理。
连接了一些工具后,这个基本流程使您能够与代理在Playground中进行聊天。
- 将 Search API 工具组件连接到您的代理。
- 将您的 Search API key 添加到组件中。您的代理现在可以查询 Search API 以获取信息。
- 连接一个 Calculator 工具来解决基本的数学问题。
- 将一个 API Request 组件连接到代理。这个组件不在Tools类别中,但通过启用 Tool Mode,代理仍然可以使用它作为工具。Tool Mode 通过添加一个可以连接到代理的Tools端口的 Toolset 端口,将一个组件变成一个工具。要在组件上启用 Tool Mode,点击 Tool Mode。组件的字段会根据其所在模式动态变化。
使用代理解决问题
您的代理现在拥有执行网页搜索、进行基础数学计算和执行 API 请求的工具。仅凭这些能力,您就可以解决许多问题。
- 您的桌面游戏小组取消了,您困在家里。将 API Request 指向一个在线规则文档,告诉您的代理
你是一个有趣的游戏组织者,会使用你掌握的工具
,然后玩一个游戏。 - 您需要快速学习一种新的软件语言。将 API Request 指向一些文档,告诉您的代理
你是一位博学的软件开发者,会使用你掌握的工具
,然后开始学习。
看看您可以使用此流程解决哪些问题。随着您的问题变得更加专业,添加更多工具。例如,添加一个 Python REPL 组件来解决计算器难以解决的数学问题。
编辑工具的元数据
要编辑工具的元数据,点击工具中的 Edit Tools 按钮以修改其 name
或 description
元数据。这些字段帮助连接的代理理解如何使用该工具,而无需修改代理的提示指令。
例如,启用 Tool Mode 时,URL 组件有三个可用的工具。
工具名称 | 描述 |
---|---|
URL-fetch_content | 使用此工具从 URL 中获取和检索原始内容,包括 HTML 和其他结构化数据。返回完整的响应内容。 |
URL-fetch_content_text | 使用此工具从网页中获取并提取干净、可读的文本内容。仅返回纯文本内容。 |
URL-as_dataframe | 使用此工具从 URL 获取结构化数据并将其转换为表格格式。数据以结构化的 DataFrame 表格格式返回。 |
连接的代理将根据 name
和 description
元数据清楚地了解每个工具的功能。如果您认为代理错误地使用了某个工具,编辑该工具的元数据以帮助它更好地理解该工具。
工具名称和描述可以编辑,但默认的工具标识符不能更改。如果您想更改工具标识符,请创建自定义组件。
要查看代理正在使用哪些工具以及如何使用它们,请询问代理:你用哪些工具来回答我的问题?
将代理用作工具
代理组件本身也支持 Tool Mode,用于创建多代理流程。
向您的解决问题流程中添加一个使用不同 OpenAI 模型进行更专业问题解决的代理。
- 点击并拖动一个 Agent 组件到您的工作区。
- 将您的 Open AI API Key 添加到 Agent 组件中。
- 在 Model Name 字段中,选择
gpt-4o
。 - 点击 Tool Mode 将这个新代理用作工具。
- 将新代理的 Toolset 端口连接到之前创建的代理的 Tools 端口。
- 将 Search API 和 API Request 连接到新代理。新代理将使用
gpt-4o
执行需要大上下文窗口的网页抓取和信息搜索等较大任务。解决问题的代理现在将使用这个代理作为工具,并拥有其独特的 LLM 和工具集。
- 可以编辑新代理的元数据,以帮助解决问题的代理理解如何使用它。点击 Edit Tools 修改新代理的
name
或description
元数据,以便解决问题的代理清楚地了解其用法。例如,默认的工具名称是Agent
。将名称编辑为Agent-gpt-4o
,并将描述编辑为使用 gpt-4o 模型解决复杂问题
。解决问题的代理将理解这是一个gpt-4o
代理,并将在需要更大上下文窗口的任务中使用它。
添加自定义组件作为工具
代理可以使用自定义组件作为工具。
-
要将自定义组件添加到解决问题的代理流程中,点击 New Custom Component。
-
向自定义组件中添加自定义 Python 代码。这是一个用于情感分析的文本分析器示例。
_50from langflow.custom import Component_50from langflow.io import MessageTextInput, Output_50from langflow.schema import Data_50import re_50_50class TextAnalyzerComponent(Component)_50display_name = "Text Analyzer"_50description = "Analyzes and transforms input text."_50documentation: str = "https://docs.langflow.org.cn/components/custom"_50icon = "chart-bar"_50name = "TextAnalyzerComponent"_50_50inputs = [_50MessageTextInput(_50name="input_text",_50display_name="Input Text",_50info="Enter text to analyze",_50value="Hello, World!",_50tool_mode=True,_50 ),_50 ]_50_50outputs = [_50Output(display_name="Analysis Result", name="output", method="analyze_text"),_50 ]_50_50def analyze_text(self) -> Data_50text = self.input_text_50 _50# Perform text analysis_50word_count = len(text.split())_50char_count = len(text)_50sentence_count = len(re.findall(r'\w+[.!?]', text))_50 _50# Transform text_50reversed_text = text[::-1]_50uppercase_text = text.upper()_50 _50analysis_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 _50data = Data(value=analysis_result)_50self.status = data_50return data
- 要将自定义组件启用为工具,点击 Tool Mode。
- 将工具输出连接到代理的工具输入。
- 询问代理,
你用哪些工具来回答我的问题?
您的回复将类似于以下内容,并包含您的自定义组件。
_10我可以使用多种工具来帮助您回答问题,包括:_10Search API: 这使我能够搜索网络上的最新信息或结果。_10HTTP Requests: 我可以向各种 URL 发出 HTTP 请求以检索数据或与 API 交互。_10Calculator: 我可以计算基本的算术表达式。_10Text Analyzer: 我可以分析和转换输入的文本。_10Current Date and Time: 我可以检索不同时区的当前日期和时间。
将任何组件变为工具
如果您想用作工具的组件没有 Tool Mode 按钮,请在组件的某个输入中添加 tool_mode=True
,并将新的 Toolset 输出连接到代理的 Tools 输入。
Langflow 支持以下数据类型的 Tool Mode:
DataInput
DataFrameInput
PromptInput
MessageTextInput
MultilineInput
DropdownInput
例如,上面的将组件作为工具示例在 MessageTextInput
输入中添加了 tool_mode=True
,以便将自定义组件用作工具。
_10inputs = [_10MessageTextInput(_10name="input_text",_10display_name="Input Text",_10info="Enter text to analyze",_10value="Hello, World!",_10tool_mode=True,_10 ),_10]
将 Run Flow 组件用作工具
代理可以使用保存在您的工作区中的流程,通过Run flow组件将它们作为工具。
- 要添加一个 Run flow 组件,点击并拖动一个 Run flow 组件到您的工作区。
- 选择您希望代理用作工具的流程。
- 在组件中启用 Tool Mode。
- 将工具输出连接到代理的工具输入。
- 要启用工具模式,请在 Run flow 组件中选择一个 Flow,然后点击 Tool Mode。
- 询问代理,
你用哪些工具来回答我的问题?
您的流程应该在回复中作为工具可见。