微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

数据分析一直是现代社会中的重要工具,它帮助我们洞察本质、发现规律并指导决策。然而,数据分析流程往往复杂且费时,因此我们期望存在一个智能帮忙助力用户直接 “与数据对话 “。得益于大语言模型(LLM)的发展,虚拟帮忙和 Copilot 等智能 Agent 纷纷涌现,它们在自然语言理解和生成方面的表现令人叹为观止。但遗憾的是,在处理复杂数据结构(如 DataFrame, ndarray 等)和引入畛域学问方面,现有的 Agent 框架仍然举步维艰,而这恰恰是数据分析和专业畛域中的核心需求。为了突破这一瓶颈,微软推出了 T

数据分析一直是现代社会中的重要工具,它帮助我们洞察本质、发现规律并指导决策。然而,数据分析流程往往复杂且费时,因此我们期望存在一个智能帮忙助力用户直接 “与数据对话 “。得益于大语言模型(LLM)的发展,虚拟帮忙和 Copilot 等智能 Agent 纷纷涌现,它们在自然语言理解和生成方面的表现令人叹为观止。但遗憾的是,在处理复杂数据结构(如 DataFrame, ndarray 等)和引入畛域学问方面,现有的 Agent 框架仍然举步维艰,而这恰恰是数据分析和专业畛域中的核心需求。

为了突破这一瓶颈,微软推出了 TaskWeaver—— 一款代码优先的 Agent 框架。TaskWeaver 能够将用户的自然语言请求巧妙地转化为可履行代码,并支持丰富的数据结构、动态插件选择以及专业畛域适应的计划流程。作为开源框架,TaskWeaver 充分发挥了大语言模型的潜力,通过可定制的示例和插件融入特定畛域学问,让用户能够轻松打造个性化虚拟帮忙。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

论文:TaskWeaver: A Code-First Agent Framework

论文地址:https://export.arxiv.org/abs/2311.17541

TaskWeaver 项目已在 GitHub上开源,并于发布当日登上 GitHub 趋势榜,目前已收获 2.9k 个 star,在领英等社交平台上也有一些实用案例(例如用 TaskWeaver 举行 SAP 数据分析)。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

项目主页:https://microsoft.github.io/TaskWeaver/

项目地址:https://github.com/microsoft/TaskWeaver

故事示例

追踪销售数据中的隐藏秘密

作为商业分析师的小雅,她的日常工作之一就是从近期的销售数据中找出异常现象,从而指导公司调整销售策略。所有销售数据都安全地存储在一个 SQL 数据库中。她渴望通过与 AI 帮忙的自然语言交流来轻松提取和分析数据。更重要的是,在销售畛域,异常现象有其独特性,因此她希望 AI 帮忙能采用定制的异常检测算法来解决问题。图 1 生动地展示了小雅与 AI 帮忙的聊天实录。在收到小雅的求助信息后,AI 帮忙首先从数据库中提取出相应数据,并汇报给小雅举行确认。随后,该 AI 帮忙运用专属异常检测算法举行分析,并最终向小雅展示出一份直观的可视化结果。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

图 1. 故事示例中的对话实录

Agent 框架需求具备哪些技能?

通过上述小雅的故事,我们梳理了 Agent 框架应具备的几大核心能力:

1. 插件支持:在上面的故事中,Agent 需求从数据库中获取数据,然后使用指定的异常检测算法。为了完成这些恣意,智能帮忙需求能够定义和挪用自定义插件,如 “query_database” 插件和 “anomaly_detection” 插件。

2. 丰富的数据结构支持:Agent 需求处理复杂的数据结构,如数组、矩阵、表格数据等,从而顺利举行高级数据处理,如预测、聚类等。此外,这些数据应能在不同插件间无缝传递。然而,现有的大多数 Agent 框架会将数据分析的中间结果转换为 Prompt 中的文本,或者先将它们保存为本地文件,然后需求时再读取。然而,这些做法容易出错和超过 Prompt 的字数限制。

3. 有状态履行:Agent 往往需求与用户举行多轮迭代交互,并根据用户输出,生成并履行代码。因此,这些代码的履行状态应在整个会话期间保留,直到会话结束。

4. 先推理后行动(ReAct):Agent 应该拥有 ReAct 的能力,即先观察推理后再采取行动,这在一些存在有不确定性的场景中非常有必要。例如,在上述样例中,由于数据库中的数据模式(schema)通常比较多样,因而 Agent 必须首先获取数据模式信息并了解哪些列是合适的(且与用户确认),然后才可以将相应的列名输出到异常检测算法中。

5. 生成任意代码:有时候,预定义的插件无法满足用户的请求,Agent 应能够生成代码以应对用户的临时需求。在上述示例中,Agent 需求生成代码来可视化检测到的异常,而这个流程是不借助于任何插件来实现的。

6. 融入畛域学问:Agent 应提供一种系统性的方案来融入特定畛域的学问。这将帮助 LLM 举行更好的计划和准确地挪用工具,从而产生可靠的结果,尤其是在行业定制的场景中。

揭秘 TaskWeaver 的核心架构

图 2 展示了 TaskWeaver 的总体架构,包括计划器(Planner),代码解释器(Code Interpreter),以及记忆模块(Memory)。

计划器就像是系统的大脑,它有两个核心职责:1)制定计划,即把用户的需求拆分成子恣意,将这些子恣意逐个发送给代码解释器,并在整个计划履行流程中根据需求自我调整计划方案;2)回应用户,它会将代码解释器的反馈结果转换成用户容易理解的答案并发送给用户。

代码解释器主要由两个组件组成:代码生成器(Code Generator)会收到计划器发送的子恣意,结合现有可用的插件以及畛域特有的恣意示例,来生成相应的代码块;代码履行器(Code Executor)则负责履行生成的代码,并在整个会话流程中保持履行状态。正因为此,复杂数据结构可以在内存中传递而无需通过 Prompt 或者文件系统。这就像在 Jupyter Notebook 中用 Python 编程,用户在单元格中输出代码片段,程序的内部状态会按顺序履行保留下来并且可被后续流程被引用。在实现上,每个会话中,代码履行器都会有一个独立的 Python 进程来履行代码,从而支持同时服务多用户。

记忆模块主要存储了整个系统运行流程中的有用信息,如履行结果等,可以被不同的模块写入和读取。短期记忆主要包括当前会话中用户和 TaskWeaver 之间的通信记录,以及各模块之间的通信记录。长期记忆则包括了用户可预先定制的畛域学问,以及在交互流程中总结出的一些经验等等。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

图 2. TaskWeaver 整体架构示意图

除了基本架构之外,TaskWeaver 还具有许多独特的设计。例如,会话压缩功能可以减小文本大小,从而允许更多的对话轮数;动态插件选择功能能够根据用户请求自动挑选合适的插件,从而允许集成更多的定制插件。此外,TaskWeaver 还支持经验保存功能,用户在使用流程中通过输出命令即可触发该功能,它将总结用户在当前会话中的经验教训,避免在下次会话中重复错误,实现真正的个性化。在安全性方面,TaskWeaver 也举行了精心设计,例如用户可以指定一个 Python 模块的白名单列表,如果生成的代码中引用了白名单之外的模块,将触发错误,从而降低安全风险。

TaskWeaver 的具体流程

图 3 向我们展示了 TaskWeaver 在完成前述样例恣意的部分流程。

首先,计划器接收用户的输出,结合各模块功能描述和计划示例生成具体计划。该计划包含四个子恣意,而其中第一个子恣意是从数据库中提取数据并描述数据模式。

然后,代码生成器根据其能力描述和所有相关插件的定义生成一段代码。这段代码挪用了 sql_pull_data 插件,将数据保存到 DataFrame 中,并提供数据模式的描述。

最后,生成的代码会被发送到代码履行器中履行,完成后的结果将被发送到计划器中以更新计划或者举行下一个子恣意。图中履行结果显示 DataFrame 中有两个列,即日期和数值。计划器可以进一步与用户确认这些列是否正确,或者直接举行下一步的 anomaly_detection 插件的挪用。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

图 3. TaskWeaver 内部工作流

TaskWeaver 中如何注入畛域学问?

在大模型应用中,整合特定畛域学问的主要目的是提高 LLM 在行业定制中的泛化性能。TaskWeaver 提供了三种将畛域学问注入模型的方法:

使用插件举行定制:用户可以通过自定义插件的形式整合畛域学问。插件可以有多种形式,如挪用 API,从特定数据库中抓取数据,或运行特定的机器学习算法或模型等。插件定制相对直观,只需提供插件的基本信息(包括插件名称、功能描述、输出参数和返回值)以及 Python 实现。

使用示例举行定制:TaskWeaver 还为用户提供了一个系统化的接口(以 YAML 格式)来配置示例,从而教导 LLM 如何响应用户请求。具体而言,示例可以分为两种类型,分别用于计划器中的计划制定和代码生成器中的代码编程。

举行经验保存:TaskWeaver 支持用户将当前会话流程总结并存储为长期记忆。用户可以将专业畛域学问作为对话内容对 TaskWeaver 举行 “教学”,随后保存对话为经验。在后续的使用流程中就可以通过动态加载经验,更好地完成专业畛域问题。

如何使用  TaskWeaver?

TaskWeaver 的完整代码目前已在 GitHub 上开源。目前支持三种方案举行使用,分别是命令行启动,网页服务,以及以 Python 库的形式导入。在简单安装后,用户只需求配置几项关键参数,如 LLM API 地址、密钥和模型名称,即可轻松启动 TaskWeaver 服务。

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

图 4. 命令行启动界面

微软TaskWeaver开源框架:携手数据分析与行业定制,打造顶级Agent解决方案

图 5. TaskWeaver 运行样例

TaskWeaver 是一款全新的 Agent 框架方案,其设计符合数据分析和行业定制场景的需求。通过将用户语言转成程序语言,「与数据对话」将不再是梦想,而是现实。

给TA打赏
共{{data.count}}人
人已打赏
应用

第三波!2024年1月精选实用安排对象合集

2024-1-16 7:01:33

应用

开源模型新纪录:超越Mixtral 8x7B Instruct的模型来了

2024-1-16 14:44:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索