EcoAssistant
EcoAssistant:更经济、更准确地使用LLM助手
在 AutoGen 网站查看我们最新的 博客
使用最新 AutoGen 的简化版本在 simplified_demo.py
中
简介
什么是 EcoAssistant?
EcoAssistant 是一个使 LLM 助手在代码驱动的问答中更加经济和准确的框架。它基于助手层级和解决方案演示的理念构建,基于 AutoGen。
什么是 LLM 助手?
LLM 助手是由对话 LLM(如 ChatGPT 和 GPT-4)支持的助理代理,能够在对话中回答用户查询。
什么是代码驱动问答?
代码驱动问答是一种要求 LLM 助手编写代码调用外部 API 来回答问题的任务。例如,面对问题“未来 5 天城市 X 的平均气温是多少?”,助手需要编写代码通过某些 API 获取天气信息并计算城市 X 在未来 5 天的平均气温。
代码驱动问答需要迭代编码,因为像人一样,LLM 很难在第一次尝试就编写出正确的代码。因此,助手需要与用户互动以获取反馈,并迭代修改代码直到正确为止。我们构建了基于双代理对话框架的系统,其中 LLM 助手与能够自动执行代码并将结果返回给 LLM 助手的代码执行代理配对。
什么是助手层级?
助手层级是一个助理层级,其中 LLM 助手根据其成本(例如 GPT-3.5-turbo -> GPT-4)进行排名。在处理用户查询时,EcoAssistant 首先让最便宜的助手回答查询。只有在失败时,才调用更昂贵的助手。旨在通过减少昂贵助手的使用来节省成本。
什么是解决方案演示?
解决方案演示是一种利用过去成功的查询-代码对来帮助未来查询的技术。每当一个查询成功解决时,我们将查询-代码对保存到数据库中。当新的查询到来时,我们从数据库中检索最相似的查询,并使用该查询及其关联的代码作为上下文演示。旨在通过利用过去成功的查询-代码对来提高准确性。
助手层级和解决方案演示的结合放大了个人的优势,因为高性能模型的解决方案将自然用于指导较弱的模型,而无需特定设计。
为什么使用 EcoAssistant?
对于关于天气、股票和地点的查询,EcoAssistant 以不到 GPT-4 费用的 50% 超过了单独的 GPT-4 助手 10 个百分点的成功率。更多细节请参阅我们的论文。
准备工作
所有数据都包含在此存储库中。
你只需要在 keys.json
中设置你的 API 密钥
安装所需的库(建议使用 Python3.10):
pip3 install -r requirements.txt
说明
我们使用 Mixed-100 数据集作为示例。对于其他数据集,只需在以下命令中将数据集名称更改为 google_places/stock/weather/mixed_1/mixed_2/mixed_3。
输出结果可以在 results
文件夹中找到。
以下命令适用于第 4.5 节中描述的无需人工反馈的自主系统。
运行 GPT-3.5-turbo 助手
python3 run.py --data mixed_100 --seed 0 --api --model gpt-3.5-turbo
运行 GPT-3.5-turbo 助手 + Chain-of-Thought
启动 cot
python3 run.py --data mixed_100 --seed 0 --api --cot --model gpt-3.5-turbo
运行 GPT-3.5-turbo 助手 + 解决方案演示
启动 solution_demonstration
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo
运行助手层级(GPT-3.5-turbo + GPT-4)
将 model
设置为 gpt-3.5-turbo,gpt-4
python3 run.py --data mixed_100 --seed 0 --api --model gpt-3.5-turbo,gpt-4
运行 EcoAssistant:助手层级(GPT-3.5-turbo + GPT-4)+ 解决方案演示
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo,gpt-4
启用人工反馈
对于有人判断的系统,请将 eval
设置为 human
(默认 llm
),如以下示例命令所示。
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo,gpt-4 --eval human
运行第 4.4 节中描述的我们收集的 Mixed-100 金代码
此脚本将打印代码输出。
python3 run_gold_code_for_mix_100.py
:paperclip: 引用
如果你觉得此存储库有用,请考虑引用:
@article{zhang2023ecoassistant,
title={EcoAssistant: Using LLM Assistant More Affordably and Accurately},
author={Zhang, Jieyu and Krishna, Ranjay and Awadallah, Ahmed H and Wang, Chi},
journal={arXiv preprint arXiv:2310.03046},
year={2023}
}