EcoAssistant:更經濟、更準確地使用 LLM 助理
查看我們在 AutoGen 網站上的部落格!
最新 AutoGen 的簡化版本位於simplified_demo.py
中
EcoAssistant 是一個框架,可以使 LLM 助手更經濟、更準確地進行程式碼驅動的問答。它基於助理層次結構和解決方案演示的想法。它基於 AutoGen 構建。
LLM Assistant 是由 ChatGPT 和 GPT-4 等會話式 LLM 支援的助理代理,能夠在會話中解決使用者查詢。
程式碼驅動問答是需要LLM助理編寫程式碼呼叫外部API來回答問題的任務。例如,對於「X城市未來5天的平均氣溫是多少?」這個問題,助手需要編寫程式碼透過某些API獲取天氣信息,併計算出X城市未來5天的平均氣溫。
程式碼驅動的問答需要迭代編碼,因為就像人類一樣,LLM 很難在第一次嘗試時寫出正確的程式碼。因此,助手需要與用戶互動以獲得回饋並迭代修改程式碼,直到程式碼正確。我們在雙代理對話框架上建立了我們的系統,其中LLM助手與程式碼執行器代理程式結合,可以自動執行程式碼並將輸出傳回給LLM助手。
助理層級結構是助理的層級結構,其中 LLM 助理按其成本進行排名(例如,GPT-3.5-turbo -> GPT-4)。當解決使用者查詢時,EcoAssistant 首先要求最便宜的助理來回答查詢。只有當它失敗時,我們才會呼叫更昂貴的助手。它旨在透過減少昂貴助手的使用來節省成本。
解決方案演示是一種利用過去成功的查詢程式碼對來幫助未來查詢的技術。每次成功解決查詢時,我們都會將查詢程式碼對儲存到資料庫中。當出現新查詢時,我們從資料庫中檢索最相似的查詢,然後使用該查詢及其關聯代碼作為上下文演示。它旨在透過利用過去成功的查詢程式碼對來提高準確性。
輔助層次結構和解決方案演示的結合放大了個人收益,因為高效能模型的解決方案將自然地用於指導較弱的模型,而無需具體設計。
對於有關天氣、股票和地點的查詢,EcoAssistant 的成功率比單獨的 GPT-4 助理高出 10 個百分點,而成本還不到 GPT-4 的 50%。更多詳細資訊可以在我們的論文中找到。
所有資料都包含在該儲存庫中。
您只需在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
執行我們收集的 Mixed-100 的黃金代碼,如第 4.4 節所述
該腳本將列印程式碼輸出。
python3 run_gold_code_for_mix_100.py
如果您發現此儲存庫有用,請考慮引用:
@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 }
}