TaskWeaver 是微软开源的一个“代码优先”(code-first)智能体框架,用于无缝规划并执行数据分析任务。它通过代码片段解释用户请求,并以函数形式高效协调多种插件,以有状态的方式执行数据分析任务。
用途 TaskWeaver 主要面向数据分析场景,帮助用户把自然语言请求转化为可执行的代码,并编排插件完成数据拉取、处理、分析与预测等任务。与许多仅在文本层面记录 LLM 聊天历史的智能体框架不同,TaskWeaver 同时保留聊天历史和代码执行历史,包括内存中的数据。这一特性增强了智能体框架的表达能力,使其适合处理高维表格数据等复杂数据结构。
主要能力
- 复杂任务规划:具备任务分解与进度跟踪能力,面向复杂任务设计。
- 反思执行:支持反思执行过程并进行调整。
- 丰富数据结构:可直接使用 Python 中的丰富数据结构(如 DataFrame),而非仅处理字符串。
- 定制算法:可将自有算法封装为插件并进行编排。
- 领域知识融入:便于引入领域特定知识以提升可靠性。
- 状态化执行:支持生成代码的状态化执行,保证连贯流畅的用户体验。
- 代码验证:在执行前对生成代码进行验证,检测潜在问题并给出修复建议。
- 易于使用:提供样例插件、示例和教程,安装后即可开箱体验。
- 易于调试:提供详细透明的日志,涵盖 LLM 提示词、代码生成与执行过程。
- 安全考虑:支持基本的会话管理以隔离不同用户数据;代码执行被分离到不同进程,避免相互干扰。
- 易于扩展:可通过多智能体角色和插件扩展以完成更复杂任务。
近期更新 资料中列出的更新包括:2025-03-13 起 Planner 角色支持视觉输入;2025-01-16 新增实验性角色 Recepta 以增强推理能力;2024-12-23 集成 AgentOps 以改善可观测性与监控;2024-09-13 引入共享内存以存储角色间共享信息,并增强经验功能,支持静态与动态经验选择;2024-07-02 优化以支持本地部署的规模不大的语言模型;2024-05-07 增加关于评估 LLM 智能体和添加新角色的博客文章;2024-03-28 提供一体化 Docker 镜像;2024-03-27 默认切换为容器模式执行代码;2023-11-30 在 GitHub 发布。
使用方式 安装:TaskWeaver 需要 Python >= 3.10,可使用 pip 安装(具体命令请以官方文档为准)。如需安装更早版本,可在 release 页面找到对应标签(例如 v0.0.1)后安装。 配置 LLM:运行前需提供 LLM 配置,以 OpenAI 为例,可配置 taskweaver_config.json 文件。TaskWeaver 也支持其他 LLM 和高级配置。 启动:默认使用容器模式执行代码,即在容器中运行代码,因此可能需要安装 Docker 并处理容器内依赖。启动后会进入命令行界面进行交互。TaskWeaver 也支持用于演示的 WebUI,并可作为库导入以集成到现有项目。
适用场景
- 从数据库拉取数据并应用异常检测算法:需在 project/plugins/sql_pull_data.yaml 中配置 sql_pull_data 插件,提供相关信息。sql_pull_data 插件以自然语言请求为输入,返回 DataFrame,基于 Langchain 实现,使用前需安装 Langchain 包。
- 预测 QQQ 未来 7 天价格:需先安装两项依赖。 更多示例可参考相关论文。资料说明,TaskWeaver 的规划基于 LLM 模型,因此重复示例时执行过程可能与视频不同;通常更具体的提示词有助于模型生成更好的计划与代码。
限制与说明 项目方表示仍有许多功能与改进空间,但因资源有限无法全部实现或进展较慢,欢迎贡献。资料中提到的待改进方向包括:易用且可维护的 UX/UI、提示词模板管理支持、更好的插件体验(如显示更新、运行中途停止、运行前用户确认)、与 LLM 的异步交互、远程代码执行支持。 资料中的推荐模型仅为示例,用于探索智能体系统的潜力,用户可根据需要替换模型,并需遵守相应模型的许可证。项目可能包含商标或标识,授权使用须遵循微软商标与品牌指南。
联系方式 GitHub Issues(首选)、Discord 讨论,其他沟通可发送邮件至 taskweaver@microsoft.com。