TaskWeaver
TaskWeaver 是一个代码优先的代理框架,能够无缝地规划和执行数据分析任务。这个创新的框架通过代码片段来解释用户请求,并高效地协调各种插件(以函数的形式)来以有状态的方式执行数据分析任务。
与许多只在文本中跟踪与LLM聊天历史的代理框架不同,TaskWeaver 保存了聊天历史和代码执行历史,包括内存中的数据。这个特性增强了代理框架的表达能力,使其非常适合处理复杂的数据结构,如高维表格数据。
🆕 新闻
- 📅2024-07-02: 我们已经优化了 TaskWeaver 以支持在本地运行的非大规模语言模型。请查看这篇文章以获取更多详情。🔗
- 📅2024-05-07: 我们在文档中添加了两篇博客文章,评估一个LLM代理和向 TaskWeaver 添加新角色。📝
- 📅2024-03-28: TaskWeaver 现在提供了一体化的Docker镜像,为用户提供了便捷的一站式体验。请查看docker以获取更多详情。🐳
- 📅2024-03-27: TaskWeaver 现在默认切换到“容器”模式进行代码执行。请查看代码执行以获取更多详情。🐳
- 📅2024-03-07: TaskWeaver 现在支持为不同组件(如规划器和代码解释器)配置不同的LLM。请查看多LLM以获取更多详情。🔗
- 📅2024-03-04: TaskWeaver 现在支持容器模式,为代码执行提供更安全的环境。🐳
- 📅2024-02-28: TaskWeaver 现在提供一个仅CLI模式,允许用户使用自然语言无缝地与命令行界面(CLI)进行交互。📟
- 📅2024-02-01: TaskWeaver 现在有一个用于基于知识库的RAG插件document_retriever。📚
💥 亮点
- 丰富的数据结构 - TaskWeaver 允许你在Python中使用富有的数据结构,如DataFrames,而不是处理字符串。
- 定制化算法 - TaskWeaver 允许你将自己的算法封装到插件中并进行编排。
- 结合领域特定知识 - TaskWeaver 设计为易于结合领域特定的知识,以提高可靠性。
- 有状态执行 - TaskWeaver 设计为支持生成代码的有状态执行,以确保一致和平滑的用户体验。
- 代码验证 - TaskWeaver 设计为在执行前验证生成的代码。它可以检测生成代码中的潜在问题并提供修复建议。
- 易于使用 - TaskWeaver 易于使用,提供示例插件、案例和教程帮助你快速入门。TaskWeaver 提供开箱即用的体验,允许用户在安装后立即运行。
- 易于调试 - TaskWeaver 易于调试,提供详细和透明的日志,帮助你理解整个过程,包括LLM提示、代码生成和执行过程。
- 安全考虑 - TaskWeaver 支持基本的会话管理,以保持不同用户的数据分离。代码执行被分离到不同的进程中,以避免相互干扰。
- 易于扩展 - TaskWeaver 易于扩展,可以通过插件实现多个代理以完成更复杂的任务。
✨ 快速入门
🛠️ 第一步:安装
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>
🖊️ 第2步:配置LLMs
在运行TaskWeaver之前,你需要提供你的LLM配置。以OpenAI为例,你可以按如下方式配置taskweaver_config.json
文件。
OpenAI
{
"llm.api_key": "你的api密钥",
"llm.model": "模型名称,例如:gpt-4"
}
💡 TaskWeaver还支持其他LLM及高级配置,更多细节请查看文档。
🚩 第3步:启动TaskWeaver
💡 TaskWeaver默认已经切换到“容器”模式进行代码执行,这意味着代码将在容器中运行。 你可能需要安装Docker,并处理容器中的依赖问题。 请查看代码执行 获取更多详情。
⌨️ 命令行 (CLI)
假设你处于克隆的TaskWeaver文件夹中
python -m taskweaver -p ./project/
这将启动TaskWeaver进程,你可以通过命令行界面与之交互。 如果一切顺利,你将看到以下提示:
=========================================================
_____ _ _ __
|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____
| |/ _` / __| |/ /| | /| / / _ \/ __ `/ | / / _ \/ ___/
| | (_| \__ \ < | |/ |/ / __/ /_/ /| |/ / __/ /
|_|\__,_|___/_|\_\|__/|__/\___/\__,_/ |___/\___/_/
=========================================================
TaskWeaver: 我是TaskWeaver,一个AI助手。为了开始,请输入你的请求?
Human: ___
或者 💻 Web UI
TaskWeaver也支持WebUI进行演示,详情请参考web UI文档。
或者 📋 作为库导入
TaskWeaver可以作为库导入与你现有的项目集成,更多信息请参见文档
📖 文档
更多文档请访问TaskWeaver网站。
❓获取帮助
- ❔GitHub Issues (优先选择)
- 💬 Discord 进行讨论
- 对于其他交流,请联系taskweaver@microsoft.com
🎬 演示示例
这些演示是基于web UI制作的,这种方式更适合展示生成的工件如图片。 这些演示也可以在命令行界面中进行。
1️⃣📉 示例1:从数据库中提取数据并应用异常检测算法
在此示例中,我们将向你展示如何使用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
2️⃣🏦 示例 2:预测未来7天QQQ的价格
在此示例中,我们将向你展示如何使用TaskWeaver预测未来7天QQQ的价格。
如果你想跟随这一示例,你需要确保已安装以下两个需求:
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的赞助。 任何使用第三方商标或标识的行为都需遵循这些第三方的政策。
免责声明
本Repo中推荐的模型只是例子,用于探索代理系统潜力,并附有TaskWeaver: A Code-First Agent Framework论文。用户可以根据需要替换本Repo中的模型。在使用本Repo中推荐模型时,需遵守这些模型各自的许可证。Microsoft不对因使用本Repo而导致的第三方权利侵犯承担任何责任。用户同意在因使用本Repo而产生的任何索赔中,为Microsoft提供辩护,并使Microsoft免受所有损害费用和律师费用的索赔。如果有人认为此Repo侵犯了你的权利,请通过电子邮件通知项目负责人。