? Proyek ini masih dalam tahap awal pengembangan, dan kami secara aktif mengerjakannya. Jika Anda memiliki pertanyaan atau saran, silakan kirimkan masalah atau PR.
EvalGPT adalah kerangka penerjemah kode, memanfaatkan kekuatan model bahasa besar seperti GPT-4, CodeLlama, dan Claude 2. Alat canggih ini memungkinkan pengguna untuk menulis tugas, dan EvalGPT akan membantu dalam menulis kode, mengeksekusinya, dan menyampaikan hasil.
Arsitektur EvalGPT mengambil inspirasi dari sistem Borg Google. Ini mencakup node master, yang dikenal sebagai EvalGPT, yang terdiri dari tiga komponen: perencanaan, penjadwal, dan memori.
Saat EvalGPT menerima permintaan, EvalGPT mulai merencanakan tugas menggunakan Model Bahasa Besar (LLM), membagi tugas yang lebih besar menjadi tugas yang lebih kecil dan dapat dikelola. Untuk setiap subtugas, EvalGPT akan memunculkan node baru yang dikenal sebagai EvalAgent.
Setiap EvalAgent bertanggung jawab untuk menghasilkan kode berdasarkan tugas kecil yang diberikan. Setelah kode dibuat, EvalAgent memulai runtime untuk mengeksekusi kode, bahkan memanfaatkan alat eksternal bila diperlukan. Hasilnya kemudian dikumpulkan oleh EvalAgent.
Node EvalAgent dapat mengakses memori dari node master EvalGPT, memungkinkan komunikasi yang efisien dan efektif. Jika EvalAgent menemukan kesalahan apa pun selama proses, ia akan melaporkan kesalahan tersebut ke node utama EvalGPT, yang kemudian merencanakan ulang tugas untuk menghindari kesalahan tersebut.
Terakhir, node master EvalGPT menyusun semua hasil dari node EvalAgent dan menghasilkan jawaban akhir untuk permintaan tersebut.
evalgpt
Anda dapat menginstal evalgpt menggunakan perintah berikut:
go install github.com/index-labs/evalgpt@latest
Anda dapat memverifikasi instalasi dengan menjalankan perintah berikut:
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
Kemudian Anda dapat menemukannya di direktori bin.
Setelah Anda menginstal baris perintah evalgpt, sebelum menjalankannya, Anda harus mengonfigurasi opsi di bawah ini:
Konfigurasikan Kunci API Openai
export OPENAI_API_KEY=sk_ ******
juga, Anda dapat mengonfigurasi kunci api openai dengan argumen perintah, tetapi tidak disarankan:
evalgpt --openai-api-key sk_ ***** -q < query >
Konfigurasikan Penerjemah Python
Secara default, penerjemah kode menggunakan penerjemah Python sistem. Namun, Anda dapat membuat juru bahasa Python yang benar-benar baru menggunakan alat lingkungan virtual Python dan mengonfigurasinya sesuai kebutuhan.
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
atau
evalgpt --python-interpreter /path/evalgpt/venv/bin/python3 -q < query >
Catatan:
Sebelum menangani tugas-tugas kompleks, pastikan untuk menginstal perpustakaan pihak ketiga Python yang diperlukan. Ini melengkapi penerjemah kode Anda untuk menangani tugas terkait, meningkatkan efisiensi, dan memastikan kelancaran pengoperasian.
Membantu
> 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
Catatan:
Ingatlah untuk mengonfigurasi kunci API OpenAI dan juru bahasa Python sebelum menjalankan penerjemah kode. Contoh berikut telah dikonfigurasi dengan variabel lingkungan untuk kunci API OpenAI dan juru bahasa Python.
Pertanyaan Sederhana
Dapatkan alamat IP publik mesin:
❯ evalgpt -q ' get the public IP of my computer '
Your public IP is: 104.28.240.133
Hitung hash sha256 dari sebuah string:
❯ evalgpt -q ' calculate the sha256 of the "hello,world" '
77df263f49123356d28a4a8715d25bf5b980beeeb503cab46ea61ac9f3320eda
Dapatkan judul situs web:
❯ 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
Saluran pipa
Anda dapat menggunakan saluran pipa untuk memasukkan data konteks dan menanyakannya:
> 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
Berinteraksi dengan file
konversi file png ke file webp:
> ls
a.png
> evalgpt -q ' convert this png file to webp ' --file ./a.png
created file: a.webp
> ls
a.png a.webp
Gambarlah grafik garis berdasarkan data dari 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
keluaran:
Node master EvalGPT berfungsi sebagai pusat kendali kerangka kerja. Ini menampung tiga komponen penting: perencanaan, penjadwal, dan memori.
Komponen perencanaan memanfaatkan model bahasa besar untuk merencanakan tugas berdasarkan permintaan pengguna. Ini memecah tugas-tugas kompleks menjadi sub-tugas yang lebih kecil dan dapat dikelola, yang masing-masing ditangani oleh node EvalAgent individual.
Komponen penjadwal bertanggung jawab atas distribusi tugas. Ini menugaskan setiap subtugas ke node EvalAgent, memastikan pemanfaatan sumber daya yang efisien dan pelaksanaan tugas paralel untuk kinerja optimal.
Komponen memori berfungsi sebagai ruang memori bersama untuk semua node EvalAgent. Ini menyimpan hasil tugas yang dijalankan dan menyediakan platform untuk pertukaran data antara node yang berbeda. Model memori bersama ini memfasilitasi komputasi kompleks dan membantu penanganan kesalahan dengan memungkinkan perencanaan ulang tugas jika terjadi kesalahan.
Jika terjadi kesalahan selama eksekusi kode, node master merencanakan ulang tugas untuk menghindari kesalahan, sehingga memastikan operasi yang kuat dan andal.
Terakhir, node master EvalGPT mengumpulkan hasil dari semua node EvalAgent, mengompilasinya, dan menghasilkan jawaban akhir untuk permintaan pengguna. Kontrol dan koordinasi terpusat ini menjadikan master node EvalGPT sebagai bagian penting dari kerangka kerja EvalGPT.
Node EvalAgent adalah kerangka kerja EvalGPT. Dimunculkan oleh node master untuk setiap subtugas, mereka bertanggung jawab atas pembuatan kode, eksekusi, dan pengumpulan hasil.
Proses pembuatan kode di node EvalAgent dipandu oleh tugas spesifik yang ditugaskan padanya. Dengan menggunakan model bahasa besar, ini menghasilkan kode yang diperlukan untuk menyelesaikan tugas, memastikan kode tersebut sesuai dengan kebutuhan dan kompleksitas tugas.
Setelah kode dibuat, node EvalAgent memulai lingkungan runtime untuk mengeksekusi kode. Runtime ini fleksibel, mampu menggabungkan alat eksternal sesuai kebutuhan, dan menyediakan platform yang kuat untuk eksekusi kode.
Selama eksekusi, node EvalAgent mengumpulkan hasil dan dapat mengakses memori bersama dari node master EvalGPT. Hal ini memungkinkan pertukaran data yang efisien dan memfasilitasi komputasi kompleks yang memerlukan manipulasi data signifikan atau akses ke hasil yang dihitung sebelumnya.
Jika terjadi kesalahan selama eksekusi kode, node EvalAgent melaporkannya kembali ke node master EvalGPT. Node master kemudian merencanakan ulang tugas untuk menghindari kesalahan, memastikan operasi yang kuat dan andal.
Intinya, node EvalAgent adalah unit otonom dalam kerangka EvalGPT, yang mampu menghasilkan dan mengeksekusi kode, menangani kesalahan, dan mengkomunikasikan hasil secara efisien.
Runtime EvalGPT dikelola oleh node EvalAgent. Setiap node EvalAgent menghasilkan kode untuk tugas tertentu dan memulai runtime untuk mengeksekusi kode tersebut. Lingkungan runtime fleksibel dan dapat menggabungkan alat eksternal jika diperlukan, sehingga memberikan konteks eksekusi yang sangat mudah beradaptasi.
Runtime juga mencakup mekanisme penanganan kesalahan. Jika node EvalAgent mengalami kesalahan apa pun selama eksekusi kode, node tersebut akan melaporkannya kembali ke node master EvalGPT. Node master kemudian merencanakan ulang tugas untuk menghindari kesalahan, memastikan eksekusi kode yang kuat dan andal.
Runtime dapat berinteraksi dengan memori node utama EvalGPT, memungkinkan pertukaran data yang efisien dan memfasilitasi komputasi yang kompleks. Model memori bersama ini memungkinkan pelaksanaan tugas yang memerlukan manipulasi data signifikan atau akses ke hasil yang dihitung sebelumnya.