AutoGPT、ChatDEV、AutoGEN 和 metaGPT 是 2023 年发布的一些顶级多智能体库。
Microsoft 最近推出了一款令人兴奋的软件,名为 TaskWeaver,在 AI 领域有很多关于它的讨论。
专门设计用于允许用户通过几个命令将他们的想法转化为代码。
TaskWeaver 不仅仅是另一个工具;这是一个复杂的系统,可以解释您的命令,将其转换为代码,并精确地执行任务。
在本文中,将讨论什么是 TaskWeaver、Taskweaver 的功能是什么、Autogen 和 TaskWeaver 之间的区别以及如何使用 TaskWeaver 创建超级 AI Agent。
什么是 TaskWeaver?
TaskWeaver 是一个代码优先 Agent 框架,用于无缝规划和执行数据分析任务。
这个创新的框架通过编码片段来解释用户请求,并以函数的形式有效地协调各种插件来执行数据分析任务。
从本质上讲,TaskWeaver 是一个代码优先的 Agent 框架。这意味着它会接受以代码片段形式提供的用户请求,并编排各种插件来执行这些任务。
想象一下,有一个虚拟助手,他不仅能理解你的请求,而且还能通过将你的指令转化为代码来执行操作。
TaskWeaver 的功能
TaskWeaver 具有多种功能,使其成为用于构建智能对话 Agent 的强大而灵活的框架。以下是它的一些主要功能:
- 代码优先方法: 将用户请求转换为可执行代码,将用户定义的插件视为可调用的函数。这种方法实现了插件执行与自定义代码执行的无缝集成,满足了用户的不同需求,并提供了更直观的用户体验。
- 支持丰富的数据结构:TaskWeaver 提供对复杂数据结构的支持,使用户能够处理各种格式和结构的数据。
- 灵活的插件使用:支持动态插件选择,允许用户根据自己的具体需求选择使用哪些插件。
- 智能任务规划:TaskWeaver 的 Planner 组件将用户请求分解为多个子任务,并在 TaskWeaver 中编排功能以完成任务并反馈给用户。Planner 可以通过考虑子任务之间的依赖关系来细化初始计划。
- 安全代码执行:它使用代码验证的过程,确保生成的代码符合预定义的规则,并且不违反任何安全要求。此验证过程解决了安全问题,并支持仅插件模式功能,其中只能调用插件函数,而所有其他生成的代码都将被拒绝。
- 面向开发人员的易用界面:TaskWeaver 为开发人员提供了易于使用的界面,使他们能够快速高效地创建对话式 Agent。
WorkFlow 工作流程
TaskWeaver 的工作流涉及几个关键组件和流程。下面是基于文档中提供的信息对工作流的概述:
- Planner:Planner 组件充当 TaskWeaver 系统的入口点和控制器。它接收用户查询并将其分解为多个子任务。这些子任务构成了一个初始计划,该计划基于大型语言模型的知识生成,或通过特定于领域的示例进行增强。然后,Planner 通过考虑子任务之间的依赖关系来优化初始计划。
- 通信:Planner 与每个组件进行双向通信,发送查询和接收响应。此通信对于协调 TaskWeaver 中完成任务和向用户报告的功能至关重要。
- Round:TaskWeaver 中的一轮从接收用户请求开始,到响应用户时结束。随后,TaskWeaver 等待用户的下一个输入。通常,一个会话由多个回合组成。
- Post:在一个轮次中,Planner、代码生成组件和代码执行组件之间可以交换多条消息,每条消息都称为一个 post。post 包含文本消息,例如从 Planner 向代码生成组件发出的用于代码生成的请求,还可能包括其他相关信息,例如生成的代码和执行日志。
- 状态:它在整个对话中保留基本信息,称为会话的状态(或上下文)。状态包括用户与 TaskWeaver 之间的聊天历史记录、模型的内部想法和计划、生成的代码、执行结果等。会话状态充当 的短期记忆 LLM,引导它做出适当的决定。
Autogen 与 TaskWeaver
- Autogen 是一个使用基于模板的方法从自然语言输入生成代码的框架。它使用一组预定义的模板根据用户输入生成代码。
- Autogen 被设计为高度可定制,允许开发人员定义他们的模板并自定义代码生成过程。
- 另一方面,TaskWeaver 是一个代码优先框架,用于构建LLM由驱动的自主 Agent。它将用户请求转换为可执行代码,并将用户定义的插件视为可调用函数。
- TaskWeaver 支持丰富的数据结构、灵活的插件使用和动态插件选择,并利用 LLM 编码功能实现复杂的逻辑。它还通过示例整合了特定领域的知识,并确保生成代码的安全执行。
Autogen 是一个基于模板的代码生成框架,而 TaskWeaver 是一个用于构建智能对话 Agent的代码优先框架。
TaskWeaver 示例
假设用户想要分析存储在 SQL 数据库中的数据集。希望执行一些基本的数据处理任务,例如筛选、排序和聚合数据,然后可视化结果。
- 用户输入:用户向 TaskWeaver 对话 Agent 发送自然语言请求,例如“我想分析过去一年的销售数据”。
- 任务分解:TaskWeaver Planner 组件将用户请求分解为多个子任务,例如“从 SQL 数据库中检索数据”、“根据特定条件筛选数据”、“按特定列对数据进行排序”、“按特定列聚合数据”、“可视化结果”等。
- 插件选择:根据用户的请求和可用的插件,选择合适的插件来执行每个子任务。例如,它可能使用 SQL 插件从数据库中检索数据,使用 Pandas 插件对数据进行过滤和排序,并使用 matplotlib 插件来可视化结果。
- 代码生成:它使用选定的插件和用户的输入为每个子任务生成代码。例如,它可能会生成 SQL 代码来检索数据,生成 Pandas 代码来过滤和排序数据,以及生成 matplotlib 代码来可视化结果。
- 代码执行:TaskWeaver 为每个子任务执行生成的代码,并将结果存储在其内部状态中。
- 响应生成:它根据执行代码的结果生成对用户的自然语言响应。例如,它可能会说“以下是过去一年的销售数据,按地区筛选并按日期排序。每个区域的总销售额如下:A 区 — 100,000 美元,B 区 — 150,000 美元,C 区 — 75,000 美元。您想查看按地区划分的销售额条形图吗?
- 迭代交互:用户和 TaskWeaver 之间的对话以迭代方式继续进行,用户提供反馈,TaskWeaver 相应地调整其计划和代码。
这只是如何使用 TaskWeaver 创建智能对话 Agent 的一个示例。该框架非常灵活,可以自定义以处理各种任务和方案。
总结
总体而言,TaskWeaver 为构建智能对话 Agent 提供了一个强大而灵活的解决方案,这些 Agent 可以处理复杂的任务并适应特定于域的场景。
推荐阅读
参考:
- https://github.com/microsoft/TaskWeaver
- https://arxiv.org/abs/2311.17541
- TaskWeaver + Planner + Plugin = Super AI Agent 2024 https://quickaitutorial.com/how-taskweaver-can-be-used-to-create-a-super-ai-agent/