؟ هذا المشروع لا يزال في المراحل الأولى من التطوير، ونحن نعمل عليه بنشاط. إذا كان لديك أي أسئلة أو اقتراحات، يرجى تقديم قضية أو العلاقات العامة.
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_ ******
يمكنك أيضًا تكوين مفتاح openai api عن طريق الأمر args، لكن لا يُنصح بما يلي:
evalgpt --openai-api-key sk_ ***** -q < query >
تكوين مترجم بايثون
افتراضيًا، يستخدم مترجم التعليمات البرمجية مترجم 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 >
ملحوظة:
قبل التعامل مع المهام المعقدة، تأكد من تثبيت مكتبات بايثون الخارجية الضرورية. يؤدي ذلك إلى تجهيز مترجم التعليمات البرمجية الخاص بك للتعامل مع المهام المقابلة، مما يعزز الكفاءة ويضمن التشغيل السلس.
يساعد
> 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 الرئيسية، مما يتيح تبادل البيانات بكفاءة وتسهيل العمليات الحسابية المعقدة. يسمح نموذج الذاكرة المشتركة هذا بتنفيذ المهام التي تتطلب معالجة كبيرة للبيانات أو الوصول إلى النتائج المحسوبة مسبقًا.