TaskWeaver 是一个代码优先的智能体框架,用于无缝规划和执行数据分析任务。该创新框架通过代码片段解释用户请求,并以函数形式高效协调各类插件,以有状态的方式执行数据分析任务。
与许多仅以文本形式跟踪与 LLM 聊天历史的智能体框架不同,TaskWeaver 同时保留了聊天历史和代码执行历史,包括内存中的数据。这一特性增强了智能体框架的表达能力,使其非常适合处理复杂的数据结构,如高维表格数据。
container 模式执行代码。请查看 代码执行 了解更多详情。🐳仍然有许多功能和改进可以实现。但由于我们资源有限,无法全部实现,或者进展会很慢。我们期待您的贡献,让 TaskWeaver 变得更好。
- [ ] 易于使用和维护的 UX/UI
- [ ] 支持提示模板管理
- [ ] 更好的插件体验,例如显示更新、在插件运行中间停止、运行插件前用户确认等
- [ ] 与 LLM 的异步交互
- [ ] 支持远程代码执行
TaskWeaver 要求 Python >= 3.10。可以通过运行以下命令安装:
# [可选创建 conda 环境]
# conda create -n taskweaver python=3.10
# conda activate taskweaver
# 克隆仓库
git clone https://github.com/microsoft/TaskWeaver.git
cd TaskWeaver
# 安装依赖
pip install -r requirements.txt
如果您想安装 TaskWeaver 的早期版本,可以查看 发布 页面,找到标签(例如 v0.0.1),然后通过以下命令安装:
pip install git+https://github.com/microsoft/TaskWeaver@<TAG>
在运行 TaskWeaver 之前,您需要提供您的 LLM 配置。以 OpenAI 为例,您可以按如下方式配置 taskweaver_config.json 文件。
{
"llm.api_key": "您的 API 密钥",
"llm.model": "模型名称,例如 gpt-4"
}
💡 TaskWeaver 也支持其他 LLM 和高级配置,请查看 文档 了解更多详情。
💡 TaskWeaver 已默认切换到 container 模式执行代码,这意味着代码在容器中运行。您可能需要安装 Docker 并处理容器中的依赖项。请查看 代码执行 了解更多详情。
# 假设您在克隆的 TaskWeaver 文件夹中
python -m taskweaver -p ./project/
这将启动 TaskWeaver 进程,您可以通过命令行界面与其交互。如果一切顺利,您将看到以下提示:
=========================================================
_____ _ _ __
|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____
| |/ _` / __| |/ /| | /| / / _ \/ __ `/ | / / _ \/ ___/
| | (_| \__ \ < | |/ |/ / __/ /_/ /| |/ / __/ /
|_|\__,_|___/_|\_\|__/|__/\___/\__,_/ |___/\___/_/
=========================================================
TaskWeaver: 我是 TaskWeaver,一个 AI 助手。要开始使用,请您输入您的请求好吗?
Human: ___
TaskWeaver 也支持用于演示目的的 WebUI,请参考 Web UI 文档 了解更多详情。
TaskWeaver 可以作为库导入,以集成到您现有的项目中,更多信息可以在 文档 中找到。
更多文档可以在 TaskWeaver 网站 上找到。
演示基于 Web UI 制作,该界面更适合展示生成的工件,如图像。演示也可以在命令行界面中进行。
在此示例中,我们将向您展示如何使用 TaskWeaver 从数据库拉取数据并应用异常检测算法。
如果您想复现此示例,需要在 project/plugins/sql_pull_data.yaml 文件中配置 sql_pull_data 插件。您需要提供以下信息:
api_type: azure 或 openai
api_base: ...
api_key: ...
api_version: ...
deployment_name: ...
sqlite_db_path: sqlite:///../../../sample_data/anomaly_detection.db
sql_pull_data 插件是一个从数据库拉取数据的插件。它以自然语言请求作为输入,并返回一个 DataFrame 作为输出。
此插件基于 Langchain 实现。如果您想复现此示例,需要安装 Langchain 包:
pip install langchain
pip install tabulate
在此示例中,我们将向您展示如何使用 TaskWeaver 预测 QQQ 未来 7 天的价格。
如果您想复现此示例,需要确保已安装以下两个依赖项:
pip install yfinance
pip install statsmodels
更多示例,请参考我们的 论文。
💡 TaskWeaver 的规划基于 LLM 模型。因此,如果您想复现示例,执行过程可能与您在视频中看到的不同。例如,在第二个演示中,助手可能会询问用户应使用哪种预测算法。通常,更具体的提示将有助于模型生成更好的计划和代码。
我们的论文可以在此 找到。如果您在研究中使用了 TaskWeaver,请引用我们的论文:
@article{taskweaver,
title={TaskWeaver: A Code-First Agent Framework},
author={Bo Qiao, Liqun Li, Xu Zhang, Shilin He, Yu Kang, Chaoyun Zhang, Fangkai Yang, Hang Dong, Jue Zhang, Lu Wang, Minghua Ma, Pu Zhao, Si Qin, Xiaoting Qin, Chao Du, Yong Xu, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang},
journal={arXiv preprint arXiv:2311.17541},
year={2023}
}
此项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标必须遵守并遵循 Microsoft 商标和品牌指南。在此项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受该第三方的政策约束。
此仓库中推荐的模型仅为示例,用于探索 TaskWeaver: A Code-First Agent Framework 论文中智能体系统的潜力。用户可以根据自己的需求替换此仓库中的模型。使用此仓库中推荐的模型时,您需要分别遵守这些模型的许可。Microsoft 对您使用此仓库导致的任何第三方权利侵权概不负责。用户同意就因使用此仓库引起的任何索赔,为 Microsoft 辩护、赔偿并使 Microsoft 免受所有损害、成本和律师费。如果有人认为此仓库侵犯了您的权利,请通知项目所有者邮箱。