EvalGPT
什么是 EvalGPT
🧩 该项目仍处于开发的早期阶段,我们正在积极工作。如果您有任何问题或建议,请提交issue或PR。
EvalGPT 是一个代码解释框架,利用大型语言模型(如GPT-4、CodeLlama和Claude 2)的强大功能。这个强大的工具允许用户编写任务,EvalGPT 将协助编写代码、执行代码并提供结果。
EvalGPT 的架构灵感来自Google的Borg系统。它包括一个主节点,称为 EvalGPT,由三个组件组成:规划、调度器和内存。
当 EvalGPT 接收到请求时,它开始使用大型语言模型(LLM)规划任务,将较大的任务分成较小的、可管理的子任务。对于每个子任务,EvalGPT 将生成一个新节点,称为 EvalAgent。
每个 EvalAgent 负责基于分配的小任务生成代码。一旦代码生成,EvalAgent 将启动运行时来执行代码,甚至在必要时利用外部工具。然后,EvalAgent 收集结果。
EvalAgent 节点可以访问 EvalGPT 主节点的内存,实现高效和有效的通信。如果 EvalAgent 在过程中遇到任何错误,它会向 EvalGPT 主节点报告错误,然后主节点重新规划任务以避免错误。
最后,EvalGPT 主节点汇总所有 EvalAgent 节点的结果并生成请求的最终答案。
优势
- 自动化代码编写:EvalGPT 利用先进的语言模型自动生成代码,减少手动工作量并提高生产力。
- 高效任务执行:通过将复杂任务分解为可管理的子任务,EvalGPT 确保高效和平行执行,加快整体过程。
- 健壮的错误处理:通过在出现错误时重新规划任务,EvalGPT 确保操作可靠且结果准确。
- 可扩展性:EvalGPT 可处理各种复杂性任务,使其成为适用于广泛编码需求的可扩展解决方案。
- 资源优化:受Google Borg资源管理的启发,EvalGPT 优化使用计算资源,从而提高性能。
- 可扩展性:通过在其运行时中引入外部工具,EvalGPT 高度适应性强,可以扩展以处理各种任务。
演示
https://github.com/index-labs/evalgpt/assets/7857126/73417c1f-8866-47fb-951a-7fd03c9dbf41
快速开始 🚀
安装 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 Key
export OPENAI_API_KEY=sk_******
此外,您也可以通过命令参数配置 openai api key,但不推荐:
evalgpt --openai-api-key sk_***** -q <query>
配置 Python 解释器
默认情况下,代码解释器使用系统的 Python 解释器。但是,您可以使用 Python 的虚拟环境工具创建一个全新的 Python 解释器并进行相应的配置。
python3 -m venv /path/evalgpt/venv
# 安装第三方 Python 库
/path/evalgpt/venv/bin/pip3 install -r requirements.txt
# 配置 Python 解释器
export PYTHON_INTERPRETER=/path/evalgpt/venv/bin/python3
或者
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q <query>
注意:
在处理复杂任务之前,请确保安装必要的 Python 第三方库。这将使您的代码解释器能够处理相应的任务,提高效率并确保操作顺畅。
使用方法
帮助
> evalgpt -h
NAME:
evalgpt help - 一个新的命令行应用程序
USAGE:
evalgpt help [global options] command [command options] [arguments...]
DESCRIPTION:
说明
COMMANDS:
help, h 显示命令列表或某个命令的帮助信息
GLOBAL OPTIONS:
--openai-api-key value Openai Api Key,如果您使用 open ai 模型 gpt3 或 gpt4,您必须设置此标志 [$OPENAI_API_KEY]
--model value LLM 名称(默认:"gpt-4-0613") [$MODEL]
--python-interpreter value python 解释器路径(默认:"/usr/bin/python3") [$PYTHON_INTERPRETER]
--verbose, -v 打印详细日志(默认:false)[$VERBOSE]
--query value, -q value 您想要询问的内容
--file value [ --file value ] 要解析和处理的文件路径,例如:--file /tmp/a.txt --file /tmp/b.txt
--help, -h 显示帮助
注意:
在执行代码解释器之前,请记得配置 OpenAI API 密钥和 Python 解释器。以下示例已经配置了 OpenAI API 密钥和 Python 解释器的环境变量。
简单查询
获取计算机的公网 IP 地址:
❯ evalgpt -q '获取我电脑的公网 IP'
您的公网 IP 是:104.28.240.133
计算字符串的 sha256 哈希值:
❯ evalgpt -q '计算 "hello,world" 的 sha256 哈希值'
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
获取网站的标题:
❯ evalgpt -q "获取网站标题:https://arxiv.org/abs/2302.04761" -v
[2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools
Pipeline
您可以使用管道输入上下文数据并查询:
> 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 '计算平均 dau'
平均 DAU: 1360.0
与文件交互
将 png 文件转换为 webp 文件:
> ls
a.png
> evalgpt -q '将这个 png 文件转换为 webp 文件' --file ./a.png
已创建文件: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 '根据 CSV 中的数据绘制折线图' --file ./a.csv
输出:
架构详情
EvalGPT 主节点
EvalGPT 主节点是该框架的控制中心。它包含三个关键组件:规划、调度器和内存。
规划组件利用大型语言模型根据用户请求规划任务。它将复杂任务分解为较小的、可管理的子任务,每个子任务由一个独立的 EvalAgent 节点处理。
调度器组件负责任务分配。它将每个子任务分配给一个 EvalAgent 节点,确保资源高效利用和任务平行执行以实现最佳性能。
内存组件是所有 EvalAgent 节点的共享内存空间。它存储已执行任务的结果,并为不同节点之间的数据交换提供平台。这个共享内存模型有助于进行复杂计算,并通过允许在出错时重新规划任务来辅助错误处理。
在代码执行过程中出现错误时,主节点会重新规划任务以避免错误,从而确保操作的健壮性和可靠性。
最后,EvalGPT 主节点收集所有 EvalAgent 节点的结果,汇总并生成用户请求的最终答案。这个集中控制和协调使得 EvalGPT 主节点成为 EvalGPT 框架的关键部分。
EvalAgent 节点
EvalAgent 节点是 EvalGPT 框架中的工作单元。由主节点为每个子任务生成,它们负责代码生成、执行和结果收集。
EvalAgent 节点的代码生成过程由其分配的特定任务指导。使用大型语言模型,它生成完成任务所需的代码,确保代码适合任务的要求和复杂性。
一旦代码生成,EvalAgent 节点会启动运行环境以执行代码。这个运行环境是灵活的,可以根据需要引入外部工具,并为代码执行提供了一个健壮的平台。
在执行过程中,EvalAgent 节点收集结果,并可以访问 EvalGPT 主节点的共享内存。这允许高效的数据交换,并促进需要大量数据操作或访问之前计算结果的复杂计算。
在代码执行过程中出现任何错误时,EvalAgent 节点会将错误报告回 EvalGPT 主节点。然后主节点重新规划任务以避免错误,确保操作的健壮性和可靠性。
总而言之,EvalAgent 节点是 EvalGPT 框架中的自主单元,能够生成和执行代码、处理错误并高效地传达结果。
运行时
EvalGPT 的运行时由 EvalAgent 节点管理。每个 EvalAgent 节点为特定任务生成代码,并启动一个运行时来执行代码。运行环境是灵活的,可以根据需要引入外部工具,提供高度适应的执行环境。
运行时还包括错误处理机制。如果 EvalAgent 节点在代码执行过程中遇到任何错误,它会将这些错误报告回 EvalGPT 主节点。然后主节点重新规划任务以避免错误,确保代码执行的健壮性和可靠性。
运行时可以与 EvalGPT 主节点的内存交互,实现高效的数据交换并促进复杂计算。这个共享内存模型允许执行需要大量数据操作或访问之前计算结果的任务。