Tutorial • Demo • Blog • Documentation • Citation
XAgent is an open-source experimental Large Language Model (LLM) driven autonomous agent that can automatically solve various tasks. It is designed to be a general-purpose agent that can be applied to a wide range of tasks. XAgent is still in its early stages, and we are working hard to improve it.
🏆 Our goal is to create a super-intelligent agent that can solve any given task!
We welcome diverse forms of collaborations, including full-time and part-time roles and more. If you are interested in the frontiers of agents and want to join us in realizing true autonomous agents, please contact us at xagentteam@gmail.com.
XAgent is designed with the following features:
XAgent is composed of three parts:
ToolServer is the server that provides XAgent with powerful and safe tools to solve tasks. It is a docker container that provides a safe environment for XAgent to run. Currently, ToolServer provides the following tools:
ToolServer is where XAgent's action takes place. It is a docker container that provides a safe environment for XAgent to run.
So you should install docker
and docker-compose
first.
Then, you need to build the ToolServer image. Construct referring to any one of the following methods:
docker compose up
docker compose build
docker compose up
This will build the image for the ToolServer and start the ToolServer's container.
If you want to run the container in the background, please use docker compose up -d
.
Refer here for detailed information about our ToolServer.
If the ToolServer is updated, you have to repull/rebuild the images:
docker compose pull
Or
docker compose build
After setting up ToolServer, you can start to run XAgent.
Install requirements (Require Python >= 3.10)
pip install -r requirements.txt
Configure XAgent
assets/config.yml
before running it. assets/config.yml
, which is used to access OpenAI API.
We highly recommend using gpt-4-32k
to run XAgent; gpt-4
is also OK for most simple tasks.
In any case, at least one gpt-3.5-turbo-16k
API key should be provided as a backup model.
We do not test or recommend using gpt-3.5-turbo
to run XAgent due to minimal context length; you should not try to run XAgent on that.XAgentServer
, you should modify the CONFIG_FILE
value in .env
file and restart the docker container.python run.py --task "put your task here" --config-file "assets/config.yml"
--upload-files
to select the initial files you want to submit to XAgent.The local workspace for your XAgent is in local_workspace
, where you can find all the files generated by XAgent throughout the running process.
After execution, the entire workspace
in ToolServerNode
will be copied to running_records
for your convenience.
Besides, in running_records
, you can find all the intermediate steps information, e.g., task statuses, LLM's input-output pairs, used tools, etc.
You can load from a record to reproduce a former run, just by setting record_dir
in config(default to Null
). The record is a system-level recording tied to the code version of XAgent. All running-config、query、code execution statuses (including errors)、server behavior will be documented.
We have removed all sensitive information (including API keys) from the record so you can safely share it with others. In the near future, we will introduce more granular sharing options highlighting the contributions of humans during execution.
XAgent-Server
is started with nginx and a web server listening on port 5173
.
You could visit http://localhost:5173
to interact with XAgent by using web UI.
The default username and password are guest
and xagent
, respectively.
Refer here for the detailed information about our GUI Demo.Here, we also show some cases of solving tasks by XAgent: You can check our live demo on XAgent Official Website. We also provide a video demo and showcases of using XAgent here:
We start with a case of aiding users in intricate data analysis. Here, our user submitted an iris.zip
file to XAgent, seeking assistance in data analysis. XAgent swiftly broke down the task into four sub-tasks: (1) data inspection and comprehension, (2) verification of the system's Python environment for relevant data analysis libraries, (3) crafting data analysis code for data processing and analysis, and (4) compiling an analytical report based on the Python code's execution results.
Here is a figure drawn by XAgent.
Empowered with the unique capability to actively seek human assistance and collaborate in problem-solving, XAgent continues to redefine the boundaries of human-agent cooperation. As depicted in the screenshot below, a user sought XAgent's aid in recommending some great restaurants for a friendly gathering yet failed to provide specific details. Recognizing the insufficiency of the provided information, XAgent employed the AskForHumanHelp tool, prompting human intervention to elicit the user's preferred location, budget constraints, culinary preferences, and dietary restrictions. Armed with this valuable feedback, XAgent seamlessly generated tailored restaurant recommendations, ensuring a personalized and satisfying experience for the user and their friends.
XAgent not only tackles mundane tasks but also serves as an invaluable aid in complex tasks such as model training. Here, we show a scenario where a user desires to analyze movie reviews and evaluate the public sentiment surrounding particular films. In response, XAgent promptly initiates the process by downloading the IMDB dataset to train a cutting-edge BERT model (see screenshot below), harnessing the power of deep learning. Armed with this trained BERT model, XAgent seamlessly navigates the intricate nuances of movie reviews, offering insightful predictions regarding the public's perception of various films.
We conduct human preference evaluation to evaluate XAgent's performance. We prepare over 50 real-world complex tasks for assessment, which can be categorized into 5 classes: Search and Report, Coding and Developing, Data Analysis, Math, and Life Assistant. We compare the results of XAgent with AutoGPT, which shows a total win of XAgent over AutoGPT. All running records can refer to here.
We report a significant improvement of XAgent over AutoGPT in terms of human preference.
We also evaluate XAgent on the following benchmarks:
Our blog is available at here!
A heartfelt thank you to all our contributors. Your efforts make this project grow and thrive. Every contribution, big or small, is invaluable.
If you find our repo useful, please kindly consider citing:
@misc{xagent2023,
title={XAgent: An Autonomous Agent for Complex Task Solving},
author={XAgent Team},
year={2023},
}