智能体
Langflow的 Agent 和 MCP Tools 组件是构建代理流程的关键组件。 这些组件定义了AI代理在您的流程中的行为和能力。
代理是如何工作的?
代理通过集成_工具_来扩展大型语言模型(LLMs),这些工具是提供额外上下文并支持自主任务执行的函数。 这些集成使代理比独立的LLMs更加专业和强大。
虽然LLM可能会对通用查询和任务生成可接受的、静态的响应,但代理可以利用集成的上下文和工具来提供更相关的响应,甚至采取行动。 例如,您可以创建一个代理,它可以访 问您公司的文档、仓库和其他资源,帮助您的团队完成需要了解您特定产品、客户和代码的任务。
代理使用LLMs作为推理引擎来处理输入,确定要采取哪些行动来解决查询,然后生成响应。 响应可以是典型的基于文本的LLM响应,也可以涉及行动,比如编辑文件、运行脚本或调用外部API。
在代理上下文中,工具是代理可以运行以执行任务或访问外部资源的函数。
函数被包装成一个Tool
对象,具有代理理解的通用接口。
代理通过工具注册来了解工具,这通常是在代理初始化时提供给代理可用工具列表的时候。
Tool
对象的描述告诉代理工具的功能,以便代理能够决定该工具是否适合给定的请求。
代理流程示例
有关使用 Agent 和 MCP Tools 组件的流程示例,请参见以下内容:
-
Langflow快速入门:从 Simple Agent 模板开始,修改其工具,然后学习如何在应用程序中使用代理流程。
Simple Agent 模板创建了一个基本的代理流程,其中包含一个 Agent 组件,该组件可以使用其他两个Langflow组件作为工具。 在 Agent 组件设置中指定的LLM在生成响应时,可以使用其自身的内置功能以及所连接工具提供的功能。
-
将代理用作工具:创建多代理流程。
-
将Langflow用作MCP客户端 和 将Langflow用作MCP服务器:使用 Agent 和 MCP Tools 组件在您的流程中实现模型上下文协议(MCP)。
Agent组件
Agent 组件是您的代理流程中的主要代理执行者。 该组件使用LLM集成来响应输入,例如聊天消息或文件上传。
代理可以使用基础LLM中已有的工具,以及您连接到 Agent 组件的 Tools 端口的额外工具。 您可以将任何Langflow组件连接为工具,包括通过MCP Tools组件连接的其他 Agent 组件和MCP服务器。
有关使用此组件的更多信息,请参见使用Langflow代理。
MCP Tools组件
MCP Tools 组件连接到模型上下文协议(MCP)服务器,并将MCP服务器的功能作为工具暴露给Langflow代理,以便它们用于响应输入。
除了公开可用的MCP服务器和您自己构建的自定义MCP服务器外,您还可以连接Langflow MCP服务器,这使您的代理能够使用您的Langflow流程作为工具。
为此,请使用 MCP Tools 组件的SSE模式连接到您的Langflow项目的MCP服务器的 /api/v1/mcp/sse
端点。
有关更多信息,请参见将Langflow用作MCP客户端和将Langflow用作MCP服务器。
MCP Tools组件的早期版本
- 在Langflow 1.5版本中,MCP Connection 组件被重命名为 MCP Tools 组件。
- 在Langflow 1.3版本中,MCP Tools (stdio) 和 MCP Tools (SSE) 组件被移除,并由统一的 MCP Connection 组件取代,该组件后来被重命名为 MCP Tools。
传统代理组件
以下组件是传统组件。 您仍然可以在工作流中使用这些组件,但它们已不再维护,并且可能会在未来的版本中被移除。
根据您的用例,请将这些组件替换为 Agent 组件或其他 Langflow 组件。
- CrewAI 层次化任务
- CrewAI 顺序任务
CrewAI 代理
此组件代表 CrewAI 代理,允许在团队中创建具有定义的角色、目标和能力的专业化 AI 代理。 有关更多信息,请参阅 CrewAI 代理文档。
此组件接受以下参数:
Name | Display Name | Info |
---|---|---|
role | 角色 | 输入参数。代理的角色。 |
goal | 目标 | 输入参数。代理的目标。 |
backstory | 背景故事 | 输入参数。代理的背景故事。 |
tools | 工具 | 输入参数。代理可用的工具。 |
llm | 语言模型 | 输入参数。运行代理的语言模 型。 |
memory | 记忆 | 输入参数。决定代理是否应具备记忆功能。 |
verbose | 详细输出 | 输入参数。启用详细输出。 |
allow_delegation | 允许委托 | 输入参数。决定代理是否被允许将任务委托给其他代理。 |
allow_code_execution | 允许代码执行 | 输入参数。决定代理是否被允许执行代码。 |
kwargs | kwargs | 输入参数。代理的附加关键字参数。 |
output | 代理 | 输出参数。构建的 CrewAI 代理对象。 |
CrewAI 层次化团队
此组件代表一组代理,管理它们应如何协作以及在层次结构中应执行的任务。此组件允许创建一个由经理监督任务执行的团队。 有关更多信息,请参阅 CrewAI 层次化团队文档。
它接受以下参数:
Name | Display Name | Info |
---|---|---|
agents | 代理 | 输入参数。代表团队成员的 Agent 对象列表。 |
tasks | 任务 | 输入参数。代表要执行的任务的 HierarchicalTask 对象列表。 |
manager_llm | 经理 LLM | 输入参数。经理代理的语言模型。 |
manager_agent | 经理代理 | 输入参数。作为经理的特定代理。 |
verbose | 详细输出 | 输入参数。为详细日志记录启用详细输出。 |
memory | 记忆 | 输入参数。团队的内存配置。 |
use_cache | 使用缓存 | 输入参数。启用结果缓存。 |
max_rpm | 最大 RPM | 输入参数。设置每分钟最大请求数。 |
share_crew | 共享团队 | 输入参数。决定团队信息是否在代理之间共享。 |
function_calling_llm | 函数调用 LLM | 输入参数。用于函数调用的语言模型。 |
crew | 团队 | 输出参数。具有层次化任务执行功能的构建的 Crew 对象。 |
CrewAI 顺序团队
此组件代表一组代理,其任务按顺序执行。此组件允许创建按特定顺序执行任务的团队。 有关更多信息,请参阅 CrewAI 顺序团队文档。
它接受以下参数:
Name | Display Name | Info |
---|---|---|
tasks | 任务 | 输入参数。代表要执行的 SequentialTask 对象列表。 |
verbose | 详细输出 | 输入参数。为详细日志记录启用详细输出。 |
memory | 记忆 | 输入参数。团队的内存配置。 |
use_cache | 使用缓存 | 输入参数。启用结果缓存。 |
max_rpm | 最大 RPM | 输入参数。设置每分钟最大请求数。 |
share_crew | 共享团队 | 输入参数。决定团队信息是否在代理之间共享。 |
function_calling_llm | 函数调用 LLM | 输入参数。用于函数调用的语言模型。 |
crew | 团队 | 输出参数。具有顺序任务执行功能的构建的 Crew 对象。 |
CrewAI 顺序任务代理
此组件创建一个 CrewAI 任务及其关联的代理,允许定义具有特定代理角色和能力的顺序任务。 有关更多信息,请参阅 CrewAI 顺序代理文档。
它接受以下参数:| Name | Display Name | Info | |------|--------------|------| | role | 角色 | 输入参数。代理的角色。 | | goal | 目标 | 输入参数。代理的目标。 | | backstory | 背景 | 输入参数。代理的背景故事。 | | tools | 工具 | 输入参数。代理可用的工具。 | | llm | 语言模型 | 输入参数。运行代理的语言模型。 | | memory | 记忆 | 输入参数。这决定了代理是否应该有记忆功能。 | | verbose | 详细输出 | 输入参数。这启用详细输出模式。 | | allow_delegation | 允许委派 | 输入参数。这决定了代理是否被允许将任务委派给其他代理。 | | allow_code_execution | 允许代码执行 | 输入参数。这决定了代理是否被允许执行代码。 | | agent_kwargs | Agent kwargs | 输入参数。代理的额外kwargs参数。 | | task_description | 任务描述 | 输入参数。详细描述任务目的和执行的文本。 | | expected_output | 预期任务输出 | 输入参数。对预期任务结果的清晰定义。 | | async_execution | 异步执行 | 输入参数。指示异步任务执行的布尔标志。 | | previous_task | 前置任务 | 输入参数。用于链式处理的序列中的前置任务。 | | task_output | 顺序任务 | 输出参数。表示已创建任务的SequentialTask对象列表。 |