📚 Dataset | 📚 Benchmark | 🤗 Models | 📑 Paper
KwaiAgents 是快手快知团队开源的一整套Agent系列工作。开源的内容包括:
- KAgentSys-Lite:论文中KAgentSys的轻量版系统,其保留了部分原系统的功能。与功能齐全的系统相比,KAgentSys-Lite(1)缺少部分工具;(2)缺乏记忆机制;(3)性能稍有降低;(4)不同的代码库,Lite版本基于开源项目如BabyAGI和Auto-GPT。尽管有这些变更,KAgentSys-Lite在众多开源Agent系统中仍具有较好的性能。
- KAgentLMs:经过论文中提出的Meta-agent tuning过后,具有Agents的规划、反思、工具使用等能力的系列大模型。
- KAgentInstruct:超过20w(部分人工编辑)的Agent相关的指令微调数据。
- KAgentBench:超过3k条经人工编辑的自动化评测Agent能力数据,能力评测维度包含规划、工具使用、反思、总结、人设指令等。
类别 | 模型 | 训练数据 | 评测数据 |
Qwen |
Qwen-7B-MAT Qwen-14B-MAT Qwen-7B-MAT-cpp Qwen1.5-14B-MAT |
KAgentInstruct | KAgentBench |
Baichuan | Baichuan2-13B-MAT |
- 2024.4.19 - Qwen1.5-14B-MAT模型[link] 公开.
- 2024.4.9 - Benchmark结果更新.
- 2024.1.29 - Qwen-14B-MAT模型 [link] 公开.
- 2023.1.5 - 训练数据 [link] 公开.
- 2023.12.27 - 🔥🔥🔥 KwaiAgents 被国内外多个媒体报道[机器之心] [Medium] [InfoQ]等.
- 2023.12.13 - Benchmark和评测脚本 [link] 公开.
- 2023.12.08 - 技术报告 [link] 公开.
- 2023.11.17 - 项目公开.
- KAgentLMs在Benchmark上的表现
Scale | Planning | Tool-use | Reflection | Concluding | Profile | Overall Score | |
---|---|---|---|---|---|---|---|
GPT-3.5-turbo | - | 18.55 | 26.26 | 8.06 | 37.26 | 35.42 | 25.63 |
Llama2 | 13B | 0.15 | 0.44 | 0.14 | 16.60 | 17.73 | 5.30 |
ChatGLM3 | 6B | 7.87 | 11.84 | 7.52 | 30.01 | 30.14 | 15.88 |
Qwen | 7B | 13.34 | 18.00 | 7.91 | 36.24 | 34.99 | 21.17 |
Baichuan2 | 13B | 6.70 | 16.10 | 6.76 | 24.97 | 19.08 | 14.89 |
ToolLlama | 7B | 0.20 | 4.83 | 1.06 | 15.62 | 10.66 | 6.04 |
AgentLM | 13B | 0.17 | 0.15 | 0.05 | 16.30 | 15.22 | 4.88 |
Qwen-MAT | 7B | 31.64 | 43.30 | 33.34 | 44.85 | 44.78 | 39.85 |
Baichuan2-MAT | 13B | 37.27 | 52.97 | 37.00 | 48.01 | 41.83 | 45.34 |
Qwen-MAT | 14B | 43.17 | 63.78 | 32.14 | 45.47 | 45.22 | 49.94 |
Qwen1.5-MAT | 14B | 42.42 | 64.62 | 30.58 | 46.51 | 45.95 | 50.18 |
- KAgentSys在人工评测上的表现 (百分号前的表示通过率,括号后表示平均分)
Scale | NoAgent | ReACT | Auto-GPT | KAgentSys | |
---|---|---|---|---|---|
GPT-4 | - | 57.21% (3.42) | 68.66% (3.88) | 79.60% (4.27) | 83.58% (4.47) |
GPT-3.5-turbo | - | 47.26% (3.08) | 54.23% (3.33) | 61.74% (3.53) | 64.18% (3.69) |
Qwen | 7B | 52.74% (3.23) | 51.74% (3.20) | 50.25% (3.11) | 54.23% (3.27) |
Baichuan2 | 13B | 54.23% (3.31) | 55.72% (3.36) | 57.21% (3.37) | 58.71% (3.54) |
Qwen-MAT | 7B | - | 58.71% (3.53) | 65.67% (3.77) | 67.66% (3.87) |
Baichuan2-MAT | 13B | - | 61.19% (3.60) | 66.67% (3.86) | 74.13% (4.11) |
我们建议用vLLM和FastChat来部署模型推理服务,首先需要安装对应的包(详细使用请参考两个项目对应文档):
- 对于 Qwen-7B-MAT,按如下方法安装
pip install vllm
pip install "fschat[model_worker,webui]"
- 对于 Baichuan-13B-MAT,按如下方法安装
pip install "fschat[model_worker,webui]"
pip install vllm==0.2.0
pip install transformers==4.33.2
为了能够部署KAgentLMs系列模型,首先需要在一个终端开启controler
python -m fastchat.serve.controller
然后,再在另一个终端开启单卡模型推理服务部署
python -m fastchat.serve.vllm_worker --model-path $model_path --trust-remote-code
其中$model_path
为从huggingface中下载的模型本地路径,如果显示GPU不支持Bfloat16,可以再命令行后再加个--dtype half
。
然后,在第三个终端上开启REST API服务器
python -m fastchat.serve.openai_api_server --host localhost --port 8888
最后你就可以用curl命令对应OpenAI调用格式进行模型调用啦,参考示例:
curl http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "kagentlms_qwen_7b_mat", "messages": [{"role": "user", "content": "刘德华是谁"}]}'
这里 kagentlms_qwen_7b_mat
要改成你部署的模型。
在CPU上用Lamma.cpp部署
llama-cpp-python 提供了类似OpenAI的API Web接口,我们可以按如下方法安装和部署。转换后的模型可以在kwaikeg/kagentlms_qwen_7b_mat_gguf上找到。
pip install "llama-cpp-python[server]"
python3 -m llama_cpp.server --model kagentlms_qwen_7b_mat_gguf/ggml-model-q4_0.gguf --chat_format chatml --port 8888
最后你就可以用curl命令对应OpenAI调用格式进行模型调用啦,参考示例:
curl http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "刘德华是谁"}]}'
下载并安装环境包,建议Python>=3.10
git clone git@github.com:KwaiKEG/KwaiAgents.git
cd KwaiAgents
python setup.py develop
- ChatGPT调用 声明一些环境变量
export OPENAI_API_KEY=sk-xxxxx
export WEATHER_API_KEY=xxxxxx
其中WEATHER_API_KEY不是必须,但问到天气相关的问题时需要进行配置,APIKEY可以从这个网站中获取(本地模型调用同)。
kagentsys --query="刘德华老婆是谁?" --llm_name="gpt-3.5-turbo" --lang="zh"
- 本地模型调用
调用本地模型需要参考上一章部署对应模型服务
kagentsys --query="刘德华老婆是谁?" --llm_name="kagentlms_qwen_7b_mat" \
--use_local_llm --local_llm_host="localhost" --local_llm_port=8888 --lang="zh"
下面是完整的命令行参数
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
--id | str | test | 对话的ID |
--query | str | 用户查询问题 | |
--history | str | [] | 对话历史 |
--llm_name | str | gpt-3.5-turbo | LLM的名称 |
--use_local_llm | str | False | 是否使用本地LLM |
--local_llm_host | str | localhost | 本地LLM部署的IP |
--local_llm_port | int | 8888 | 本地LLM部署的端口 |
--tool_names | str | ["auto"] | 使用工具的列表,可选有 web_search,browse_website,get_weather_info,get_calendar_info,time_delta,get_solar_terms_info |
--max_iter_num | int | 1 | agent迭代次数 |
--agent_name | str | agent名称 | |
--agent_bio | str | agent简介,简短的描述 | |
--agent_instructions | str | agent的指导原则,描述agent如何思考、行动、或交流 | |
--external_knowledge | str | 外部知识链接 | |
--lang | str | en | 系统的语言,可选(英语/中文) |
--max_tokens_num | int | 4096 | Prompt截断最大长度 |
提示:
- 如果需要用到 browse_website 工具,需要在服务器上配置chromedriver
- 如果多次显示搜索失败,可能是网络无法访问duckduckgo_search,可以通过设置
http_proxy
解决
自定义工具使用可参考这个例子 examples/custom_tool_example.py
仅需两行代码就可以:
cd benchmark
python infer_qwen.py qwen_benchmark_res.jsonl
python benchmark_eval.py ./benchmark_eval.jsonl ./qwen_benchmark_res.jsonl
上面的命令会输出以下结果
plan : 31.64, tooluse : 43.30, reflextion : 33.34, conclusion : 44.85, profile : 44.78, overall : 39.85
更多细节请参考 benchmark/
@article{pan2023kwaiagents,
author = {Haojie Pan and
Zepeng Zhai and
Hao Yuan and
Yaojia Lv and
Ruiji Fu and
Ming Liu and
Zhongyuan Wang and
Bing Qin
},
title = {KwaiAgents: Generalized Information-seeking Agent System with Large Language Models},
journal = {CoRR},
volume = {abs/2312.04889},
year = {2023}
}