EcoAssistant 项目介绍
什么是 EcoAssistant?
EcoAssistant 是一个框架,旨在使大型语言模型(LLM)助手在代码驱动的问答场景中变得更加经济适用和精准。这个框架基于“助手层次结构”(assistant hierarchy)和“解决方案演示”(solution demonstration)的理念,构建于微软的 AutoGen 平台之上。
什么是 LLM 助手?
LLM 助手是一种由对话式大型语言模型(如 ChatGPT 和 GPT-4)支持的智能代理,能够通过对话回答用户的问题。
什么是代码驱动的问答?
代码驱动的问答是一种任务,要求 LLM 助手编写代码以调用外部 API 来回答问题。比如,面对“城市 X 未来五天的平均气温是多少?”的问题,助手需要编写代码获取天气信息并计算该城市未来五天的平均气温。由于就像人类一样,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 数据集为例,若使用其他数据集,只需在以下命令中更改数据集名称。输出结果存放在 results
文件夹中。
示例命令
- 运行 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:
python3 run.py --data mixed_100 --seed 0 --api --cot --model gpt-3.5-turbo
- 运行 GPT-3.5-turbo 助手 + 解决方案演示:
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo
- 运行助手层次结构(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
- 开启人工反馈:
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo,gpt-4 --eval human
- 运行我们在 Section 4.4 中收集的 Mixed-100 正确代码:
python3 run_gold_code_for_mix_100.py
通过上述命令,用户可以体验 EcoAssistant 的完整功能,并观察其在各类数据集上的表现。