•  


GitHub - microsoft/TaskWeaver: A code-first agent framework for seamlessly planning and executing data analytics tasks.
Skip to content

A code-first agent framework for seamlessly planning and executing data analytics tasks.

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE.txt
Notifications You must be signed in to change notification settings

microsoft/TaskWeaver

TaskWeaver

Discord FollowPython VersionLicense: MITWelcome

TaskWeaver is A code-first agent framework for seamlessly planning and executing data analytics tasks. This innovative framework interprets user requests through code snippets and efficiently coordinates a variety of plugins in the form of functions to execute data analytics tasks in a stateful manner.

Unlike many agent frameworks that only track the chat history with LLMs in text, TaskWeaver preserves both the chat history and the code execution history , including the in-memory data. This feature enhances the expressiveness of the agent framework, making it ideal for processing complex data structures like high-dimensional tabular data.

?? News

  • ??2024-05-07: We have added two blog posts on Evaluating a LLM agent and Adding new roles to TaskWeaver in the documentation.??
  • ??2024-03-28: TaskWeaver now offers all-in-one Docker image, providing a convenient one-stop experience for users. Please check the docker for more details.??
  • ??2024-03-27: TaskWeaver now switches to container mode by default for code execution. Please check the code execution for more details.??
  • ??2024-03-07: TaskWeaver now supports configuration of different LLMs for various components, such as the Planner and CodeInterpreter. Please check the multi-llm for more details.??
  • ??2024-03-04: TaskWeaver now supports a container mode, which provides a more secure environment for code execution.??
  • ??2024-02-28: TaskWeaver now offers a CLI-only mode, enabling users to interact seamlessly with the Command Line Interface (CLI) using natural language.??
  • ??2024-02-01: TaskWeaver now has a plugin document_retriever for RAG based on a knowledge base.??
  • ??2024-01-30: TaskWeaver introduces a new plugin-only mode that securely generates calls to specified plugins without producing extraneous code.??

?? Highlights

  • Rich data structure - TaskWeaver allows you to work with rich data structures in Python, such as DataFrames, instead of dealing with strings.
  • Customized algorithms - TaskWeaver allows you to encapsulate your own algorithms into plugins and orchestrate them.
  • Incorporating domain-specific knowledge - TaskWeaver is designed to incorporate domain-specific knowledge easily to improve the reliability.
  • Stateful execution - TaskWeaver is designed to support stateful execution of the generated code to ensure consistent and smooth user experience.
  • Code verification - TaskWeaver is designed to verify the generated code before execution. It can detect potential issues in the generated code and provide suggestions to fix them.
  • Easy to use - TaskWeaver is easy to use with sample plugins, examples and tutorials to help you get started. TaskWeaver offers an open-box experience, allowing users to run it immediately after installation.
  • Easy to debug - TaskWeaver is easy to debug with detailed and transparent logs to help you understand the entire process, including LLM prompts, the code generation, and execution process.
  • Security consideration - TaskWeaver supports a basic session management to keep different users' data separate. The code execution is separated into different processes to avoid mutal interference.
  • Easy extension - TaskWeaver is easy to extend to accomplish more complex tasks with multiple agents as the plugins.

? Quick Start

??? Step 1: Installation

TaskWeaver requires Python >= 3.10 . It can be installed by running the following command:

#
 [optional to create conda environment]

#
 conda create -n taskweaver python=3.10

#
 conda activate taskweaver


#
 clone the repository

git clone https://github.com/microsoft/TaskWeaver.git
cd
 TaskWeaver
#
 install the requirements

pip install -r requirements.txt

If you want to install an earlier version of TaskWeaver, you may check the release page, find the tag (e.g., v0.0.1 ) and install it by

pip install git+https://github.com/microsoft/TaskWeaver@<TAG>

??? Step 2: Configure the LLMs

Before running TaskWeaver, you need to provide your LLM configurations. Taking OpenAI as an example, you can configure taskweaver_config.json file as follows.

OpenAI

{
  
"llm.api_key"
: 
"
the api key
"
,
  
"llm.model"
: 
"
the model name, e.g., gpt-4
"

}

?? TaskWeaver also supports other LLMs and advanced configurations, please check the documents for more details.

?? Step 3: Start TaskWeaver

?? TaskWeaver has switched to container mode by default for code execution, which means the code is run in a container. You may need to install Docker and take care of the dependencies in the container. Please check the code execution for more details.

?? Command Line (CLI)

#
 assume you are in the cloned TaskWeaver folder

python -m taskweaver -p ./project/

This will start the TaskWeaver process and you can interact with it through the command line interface. If everything goes well, you will see the following prompt:

=========================================================
 _____         _     _       __
|_   _|_ _ ___| | _ | |     / /__  ____ __   _____  _____
  | |/ _` / __| |/ /| | /| / / _ \/ __ `/ | / / _ \/ ___/
  | | (_| \__ \   < | |/ |/ /  __/ /_/ /| |/ /  __/ /
  |_|\__,_|___/_|\_\|__/|__/\___/\__,_/ |___/\___/_/
=========================================================
TaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?
Human: ___

or ?? Web UI

TaskWeaver also supports WebUI for demo purpose, please refer to web UI docs for more details.

or ?? Import as a Library

TaskWeaver can be imported as a library to integrate with your existing project, more information can be found in docs

?? Documentation

More documentations can be found on TaskWeaver Website .

?Get help


?? Demo Examples

The demos were made based on the web UI , which is better for displaying the generated artifacts such as images. The demos could also be conducted in the command line interface.

1???? Example 1: Pull data from a database and apply an anomaly detection algorithm

In this example, we will show you how to use TaskWeaver to pull data from a database and apply an anomaly detection algorithm.

anomaly_detection_chainlit.mp4

If you want to follow this example, you need to configure the sql_pull_data plugin in the project/plugins/sql_pull_data.yaml file. You need to provide the following information:

api_type
: 
azure or openai

api_base
: 
...

api_key
: 
...

api_version
: 
...

deployment_name
: 
...

sqlite_db_path
: 
sqlite:///../../../sample_data/anomaly_detection.db

The sql_pull_data plugin is a plugin that pulls data from a database. It takes a natural language request as input and returns a DataFrame as output.

This plugin is implemented based on Langchain . If you want to follow this example, you need to install the Langchain package:

pip install langchain
pip install tabulate

2???? Example 2: Forecast QQQ's price in the next 7 days

In this example, we will show you how to use TaskWeaver to forecast QQQ's price in the next 7 days.

forecast_price_chainlit.mp4

If you want to follow this example, you need to ensure you have these two requirements installed:

pip install yfinance
pip install statsmodels

For more examples, please refer to our paper .

?? The planning of TaskWeaver are based on the LLM model. Therefore, if you want to repeat the examples, the execution process may be different from what you see in the videos. For example, in the second demo, the assistant may ask the user which prediction algorithm should be used. Typically, more concrete prompts will help the model to generate better plans and code.

?? Citation

Our paper could be found here . If you use TaskWeaver in your research, please cite our paper:

@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}
}

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines . Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Disclaimer

The recommended models in this Repo are just examples, used to explore the potential of agent systems with the paper at TaskWeaver: A Code-First Agent Framework . Users can replace the models in this Repo according to their needs. When using the recommended models in this Repo, you need to comply with the licenses of these models respectively. Microsoft shall not be held liable for any infringement of third-party rights resulting from your usage of this repo. Users agree to defend, indemnify and hold Microsoft harmless from and against all damages, costs, and attorneys' fees in connection with any claims arising from this Repo. If anyone believes that this Repo infringes on your rights, please notify the project owner email.

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본