? 이 프로젝트는 아직 개발 초기 단계에 있으며, 우리는 적극적으로 노력하고 있습니다. 질문이나 제안사항이 있으면 이슈나 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를 설치할 수 있습니다.
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 마스터 노드의 메모리와 상호 작용할 수 있으므로 효율적인 데이터 교환이 가능하고 복잡한 계산이 용이해집니다. 이 공유 메모리 모델을 사용하면 중요한 데이터 조작이 필요한 작업을 실행하거나 이전에 계산된 결과에 액세스할 수 있습니다.