?該專案仍處於早期開發階段,我們正在積極開展工作。如果您有任何問題或建議,請提交問題或 PR。
EvalGPT 是一個程式碼解釋器框架,利用了 GPT-4、CodeLlama 和 Claude 2 等大型語言模型的強大功能。
EvalGPT的架構從Google的Borg系統中汲取靈感。它包括一個稱為 EvalGPT 的主節點,由三個元件組成:規劃器、調度器和記憶體。
當 EvalGPT 收到請求時,它開始使用大型語言模型 (LLM) 規劃任務,將較大的任務劃分為較小的、可管理的任務。對於每個子任務,EvalGPT 將產生一個稱為 EvalAgent 的新節點。
每個EvalAgent負責根據分配的小任務產生代碼。產生程式碼後,EvalAgent 會啟動執行時間執行程式碼,甚至在必要時利用外部工具。然後 EvalAgent 收集結果。
EvalAgent 節點可以從 EvalGPT 主節點存取內存,從而實現高效且有效的通訊。如果EvalAgent在過程中遇到任何錯誤,它會將錯誤報告給EvalGPT主節點,然後EvalGPT主節點重新規劃任務以避免錯誤。
最後,EvalGPT 主節點會整理來自 EvalAgent 節點的所有結果並產生請求的最終答案。
evalgpt
您可以使用以下命令安裝 evalgpt:
go install github.com/index-labs/evalgpt@latest
您可以透過執行以下命令來驗證安裝:
evalgpt -h
git clone https://github.com/index-labs/evalgpt.git
cd evalgpt
go mod tidy && go mod vendor
mkdir -p ./bin
go build -o ./bin/evalgpt ./ * .go
./bin/evalgpt -h
然後就可以在bin目錄下找到它了。
安裝 evalgpt 命令列後,在執行之前,必須配置以下選項:
配置 Openai API 金鑰
export OPENAI_API_KEY=sk_ ******
另外,你可以透過指令args配置openai api密鑰,但不推薦:
evalgpt --openai-api-key sk_ ***** -q < query >
配置Python解釋器
預設情況下,程式碼解釋器使用系統的Python解釋器。但是,您可以使用 Python 的虛擬環境工具建立一個全新的 Python 解釋器並進行相應的配置。
python3 -m venv /path/evalgpt/venv
# install third python libraries
/path/evalgpt/venv/bin/pip3 install -r requirements.txt
# config python interpreter
export PYTHON_INTERPRETER=/path/evalgpt/venv/bin/python3
或者
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
筆記:
在處理複雜的任務之前,請確保安裝必要的Python第三方程式庫。這使您的程式碼解釋器能夠處理相應的任務,提高效率並確保順利運行。
幫助
> evalgpt -h
NAME:
evalgpt help - A new cli application
USAGE:
evalgpt help [global options] command [command options] [arguments...]
DESCRIPTION:
description
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--openai-api-key value Openai Api Key, if you use open ai model gpt3 or gpt4, you must set this flag [ $OPENAI_API_KEY ]
--model value LLM name (default: " gpt-4-0613 " ) [ $MODEL ]
--python-interpreter value python interpreter path (default: " /usr/bin/python3 " ) [ $PYTHON_INTERPRETER ]
--verbose, -v print verbose log (default: false) [ $VERBOSE ]
--query value, -q value what you want to ask
--file value [ --file value ] the path to the file to be parsed and processed, eg. --file /tmp/a.txt --file /tmp/b.txt
--help, -h show help
筆記:
請記住在執行程式碼解釋器之前配置 OpenAI API 金鑰和 Python 解釋器,以下範例已經配置了 OpenAI API 金鑰和 Python 解釋器的環境變數。
簡單查詢
取得機器的公網IP位址:
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
計算字串的 sha256 雜湊值:
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
取得網站的標題:
❯ evalgpt -q " get the title of a website: https://arxiv.org/abs/2302.04761 " -v
[2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools
管道
您可以使用管道來輸入上下文資料並對其進行查詢:
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> cat a.csv | evalgpt -q ' calculate the average dau '
Average DAU: 1360.0
與文件交互
將 png 檔案轉換為 webp 檔案:
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
根據 CSV 中的資料繪製折線圖
> cat a.csv
date,dau
2023-08-20,1000
2023-08-21,900
2023-08-22,1100
2023-08-23,2000
2023-08-24,1800
> evalgpt -q ' draw a line graph based on the data from the CSV ' --file ./a.csv
輸出:
EvalGPT主節點充當框架的控制中心。它包含三個關鍵元件:規劃、調度程序和記憶體。
規劃組件利用大型語言模型根據使用者的請求來規劃任務。它將複雜的任務分解為更小的、可管理的子任務,每個子任務都由單獨的 EvalAgent 節點處理。
調度器組件負責任務分配。它將每個子任務分配給一個EvalAgent節點,確保資源的高效利用和任務的並行執行以獲得最佳效能。
記憶體元件充當所有 EvalAgent 節點的共享記憶體空間。它儲存執行任務的結果,並為不同節點之間的資料交換提供平台。這種共享記憶體模型有助於複雜的計算,並透過允許在出現錯誤時重新規劃任務來幫助進行錯誤處理。
如果程式碼執行過程中出現錯誤,主節點會重新規劃任務以避免錯誤,從而確保運行的穩健可靠。
最後,EvalGPT主節點收集所有EvalAgent節點的結果,進行編譯,產生針對使用者請求的最終答案。這種集中控制和協調使得EvalGPT主節點成為EvalGPT架構的重要組成部分。
EvalAgent 節點是 EvalGPT 框架的主力。它們由主節點為每個子任務生成,負責程式碼生成、執行和結果收集。
EvalAgent 節點中的程式碼產生過程由指派給它的特定任務所指導。使用大型語言模型,它可以產生完成任務所需的程式碼,確保它適合任務的要求和複雜性。
程式碼產生後,EvalAgent 節點會啟動執行時間環境來執行程式碼。運行時非常靈活,能夠根據需要合併外部工具,並為程式碼執行提供強大的平台。
在執行過程中,EvalAgent 節點收集結果並可以從 EvalGPT 主節點存取共享記憶體。這允許有效的數據交換並促進需要大量數據操作或存取先前計算結果的複雜計算。
如果程式碼執行期間出現任何錯誤,EvalAgent 節點會將這些錯誤回報回 EvalGPT 主節點。然後主節點重新規劃任務以避免錯誤,確保穩健可靠的操作。
本質上,EvalAgent 節點是 EvalGPT 框架內的自治單元,能夠產生和執行程式碼、處理錯誤並有效地傳達結果。
EvalGPT 的執行時間由 EvalAgent 節點管理。每個 EvalAgent 節點都會產生特定任務的程式碼並啟動執行時間來執行程式碼。運行時環境非常靈活,可以根據需要合併外部工具,提供高度適應性的執行上下文。
運行時還包括錯誤處理機制。如果 EvalAgent 節點在程式碼執行期間遇到任何錯誤,它會將這些錯誤回報回 EvalGPT 主節點。然後主節點重新規劃任務以避免錯誤,確保程式碼執行穩健可靠。
運行時可以與EvalGPT主節點的記憶體交互,從而實現高效的資料交換並促進複雜的計算。這種共享記憶體模型允許執行需要大量資料操作或存取先前計算結果的任務。