Skip to content

Latest commit

 

History

History
219 lines (187 loc) · 10.4 KB

README_ZH.md

File metadata and controls

219 lines (187 loc) · 10.4 KB

English | 中文 | 日本語




📚 Dataset | 📚 Benchmark | 🤗 Models | 📑 Paper

KwaiAgents 是快手快知团队开源的一整套Agent系列工作。开源的内容包括

  1. KAgentSys-Lite:论文中KAgentSys的轻量版系统,其保留了部分原系统的功能。与功能齐全的系统相比,KAgentSys-Lite(1)缺少部分工具;(2)缺乏记忆机制;(3)性能稍有降低;(4)不同的代码库,Lite版本基于开源项目如BabyAGI和Auto-GPT。尽管有这些变更,KAgentSys-Lite在众多开源Agent系统中仍具有较好的性能。
  2. KAgentLMs:经过论文中提出的Meta-agent tuning过后,具有Agents的规划、反思、工具使用等能力的系列大模型
  3. KAgentInstruct:超过20w(部分人工编辑)的Agent相关的指令微调数据
  4. KAgentBench:>超过三千条经人工编辑的自动化评测Agent能力数据,能力评测维度包含规划、工具使用、反思、总结、人设指令等
模型训练数据Benchmark
Qwen-7B-MAT KAgentInstruct KAgentBench
Baichuan2-13B-MAT


动态

  • 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 - 项目公开

评测表现

  1. 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
  1. 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)

使用指南

AgentLMs 系列模型使用

在GPU上用vLLM部署

我们建议用vLLMFastChat来部署模型推理服务,首先需要安装对应的包(详细使用请参考两个项目对应文档):

  1. 对于 Qwen-7B-MAT,按如下方法安装
pip install vllm
pip install "fschat[model_worker,webui]"
  1. 对于 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": "刘德华是谁"}]}'

KAgentSys-Lite 快速使用

下载并安装环境包,建议Python>=3.10

git clone git@github.com:KwaiKEG/KwaiAgents.git
cd KwaiAgents
python setup.py develop
  1. 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"
  1. 本地模型调用

调用本地模型需要参考上一章部署对应模型服务

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截断最大长度

提示

  1. 如果需要用到 browse_website 工具,需要在服务器上配置chromedriver
  2. 如果多次显示搜索失败,可能是网络无法访问duckduckgo_search,可以通过设置http_proxy解决

使用自定义工具

自定义工具使用可参考这个例子 examples/custom_tool_example.py

KAgentBench效果评估

仅需两行代码就可以:

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/

Citation

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