Auto-GPT هي أداة منظمة العفو الدولية مفتوحة المصدر تستفيد من واجهات برمجة التطبيقات GPT-4 أو GPT-3.5 من Openai لتحقيق الأهداف المعرفة من قبل المستخدم المعبر عنها في اللغة الطبيعية. يقوم بذلك عن طريق تشريح المهمة الرئيسية إلى مكونات أصغر واستخدام موارد مختلفة بشكل مستقل في عملية دورية.
في هذا الدليل ، سنستكشف الميزات المختلفة لفرع تلقائي وتوضيح أفضل الممارسات والنصائح لاستخدام AutoGpt للترميز.
git clone https://github.com/significant-gravitas/auto-gpt.git على المحطة الخاصة بك أو عن طريق النقر على زر "الكود" في صفحة المستودع وتنزيل ملف zip.autogpt --version . يجب أن ترى رقم الإصدار المعروض في المحطة.يمكنك أيضًا استخدام بيئة افتراضية لاحتواء تثبيت الفرع التلقائي ، ولضمان عدم تواجدك في أي أخطاء عند تثبيت التبعيات أو تشغيل AutoGpt.
تأكد من تحديث ".env" مع تكويناتك الخاصة ومفاتيح API الخاصة بك. يحتوي الملف على كل واجهة برمجة تطبيقات قد تحتاجها. يمكنك أن تتمكن من ذلك إذا كنت لن تستخدمها مثل توليد الصور ، ولكن تأكد من أن لديك:
Openai API Key - مطلوب هذا المفتاح لاستخدام API Openai الذي تم تصميمه على أعلى. يمكنك الحصول على مفتاح API من خلال الاشتراك في برنامج Openai API:
github_api_key - هذا المفتاح مطلوب لتفويض وصولك إلى واجهة برمجة تطبيقات Github. يمكنك الحصول على هذا المفتاح باتباع الخطوات على موقع GitHub.
اسم github_username الخاص بك
يمكنك إضافة جميع واجهات برمجة التطبيقات هنا. ".env" هو توضيحي ذاتي بمجرد الحصول على هذه المفاتيح ، تحتاج إلى تحرير ملف .env في المستودع وإضافة مفاتيح API المذكورة أعلاه.
انتبه أيضًا إلى ما يلي:
تحتاج إلى تحرير ملف .env في المستودع وإضافة مفاتيح API المذكورة أعلاه. وذلك لأن مفاتيح API هي معلومات حساسة لا ينبغي ترميزها في التطبيق.
تحتاج أيضًا إلى إضافة مطالباتك الخاصة إلى ملف prompts.json لجعل الفرد التلقائي أكثر فائدة لحالة الاستخدام الخاصة بك. المطالبات الواردة في المستودع هي مطالبات عامة قد لا تكون قابلة للتطبيق على مشروعك. عن طريق إضافة المطالبات الخاصة بك ، يمكنك تدريب الفرع التلقائي لإنشاء ردود مصممة على حالة الاستخدام المحددة الخاصة بك.
للمطالبة بالفرار التلقائي ، استخدم Command python -m autogpt في المحطة الخاصة بك. تأكد من أنك في الطريق الصحيح. إذا لم يكن الأمر كذلك ، فقم بتعيينه بواسطة "مسار القرص المضغوط"
للحصول على أفضل النتائج ، تأكد من أن المطالبات الخاصة بك محددة ومحددة جيدًا. سيعطي هذا الفرد التلقائي فهمًا واضحًا لما تحاول تحقيقه ومساعدته على توليد ردود أكثر دقة.
عند مراجعة استجابات النموذج ، ضع في اعتبارك أن الفرد التلقائي هو نموذج لغة وليس إنسانًا. على هذا النحو ، قد يولد استجابات غير دقيقة أو مناسبة تمامًا لحالة الاستخدام الخاصة بك. الأمر متروك لك لمراجعة الردود وإجراء أي تعديلات ضرورية.
هناك طريقة أخرى لاستخدام Autogpt من خلال دمجها في الكود الخاص بك. يمكنك إلقاء نظرة على الأوامر في المجلد المستنسخ واستخدامه لإنشاء ردود برمجيًا. يمكن أن يكون هذا مفيدًا إذا كنت ترغب في إنشاء ردود في سياق محدد.
فيما يلي بعض من أفضل الطرق لاستخدام الفرع التلقائي للهندسة السريعة:
يتم استخدام Decorator @command لتحديد الأوامر المخصصة. يستغرق ثلاث حجج:
name : اسم الأمر.description : وصف موجز للأمر.params : سلسلة تمثل المعلمات المتوقعة للأمر. فيما يلي مثال على استخدام Decorator @command لتحديد أمر مخصص يسمى execute_python_file :
@ command ( "execute_python_file" , "Execute Python File" , '"filename": "<filename>"' )
def execute_python_file ( filename : str ) -> str :
# Implementation of the command لتنفيذ أوامر shell ، يمكنك استخدام وحدة subprocess . فيما يلي طريقتان لتشغيل أوامر Shell:
subprocess.run() :تقوم هذه الطريقة بتشغيل الأمر وينتظر إكماله. يعيد الإخراج (stdout و stderr) من الأمر.
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } " subprocess.Popen() :تقوم هذه الطريقة بتشغيل الأمر كعملية منفصلة ويعود على الفور. يمكن أن يكون مفيدًا لتشغيل الأوامر غير المحظورة.
process = subprocess . Popen (
command_line , shell = True , stdout = subprocess . DEVNULL , stderr = subprocess . DEVNULL
)
return f"Subprocess started with PID:' { str ( process . pid ) } '" لإنشاء أمر مخصص يقوم بتنفيذ أوامر shell ، يمكنك استخدام Decorator @command مع أساليب subprocess :
@ command ( "execute_shell" , "Execute Shell Command" , '"command_line": "<command_line>"' )
def execute_shell ( command_line : str ) -> str :
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } "
return output تم تصميم وحدة analyze_code لتحليل مقتطف رمز معين وتقديم اقتراحات للتحسينات. يستخدم Decorator @command لتحديد أمر مخصص يسمى analyze_code . تأخذ الوظيفة سلسلة تحتوي على الكود المراد تحليله وإرجاع قائمة الاقتراحات.
إليك شرح مبسط للرمز:
analyze_code مع Decorator @command : @ command ( "analyze_code" , "Analyze Code" , '"code": "<full_code_string>"' )
def analyze_code ( code : str ) -> list [ str ]: function_string = "def analyze_code(code: str) -> list[str]:"
args = [ code ]
description_string = (
"Analyzes the given code and returns a list of suggestions for improvements."
) return call_ai_function ( function_string , args , description_string ) تم تصميم وظيفة improve_code لتحسين مقتطف رمز معين استنادًا إلى قائمة بالاقتراحات المقدمة. يستخدم Decorator @command لتحديد أمر مخصص يسمى improve_code . تأخذ الوظيفة قائمة بالاقتراحات وسلسلة تحتوي على الكود المراد تحسينها ، وتُرجع سلسلة رمز جديدة مع التحسينات المقترحة المطبقة.
إليك شرح مبسط للرمز:
improve_code مع ديكور @command : @ command ( "improve_code" , "Get Improved Code" , '"suggestions": "<list_of_suggestions>", "code": "<full_code_string>"' )
def improve_code ( suggestions : list [ str ], code : str ) -> str : function_string = "def generate_improved_code(suggestions: list[str], code: str) -> str:"
args = [ json . dumps ( suggestions ), code ]
description_string = (
"Improves the provided code based on the suggestions"
" provided, making no other changes."
) return call_ai_function ( function_string , args , description_string ) لاستخدام وظيفة improve_code ، تمرير قائمة بالاقتراحات وسلسلة تحتوي على مقتطف الرمز الذي تريد تحسينه:
suggestions = [
"Replace the print statement with a return statement." ,
"Add type hints to the function."
]
code_to_improve = '''
def some_function():
print("Hello, World!")
'''
improved_code = improve_code ( suggestions , code_to_improve )
print ( improved_code ) ستستدعي دالة improve_code وظيفة الذكاء الاصطناعى ، والتي تستخدم بدورها واجهة برمجة تطبيقات OpenAI لتطبيق التحسينات المقترحة على الكود وإنشاء نسخة جديدة محسّنة من الرمز. لاحظ أن جودة التحسينات تعتمد على فهم نموذج اللغة للاقتراحات وقدرتها على تطبيقها بشكل صحيح.
prompt = "Generate documentation for the function 'Function name'"
generator = response = openai.Completion.create(
engine=engine,
prompt=prompt,
max_tokens=150,
n=1,
stop=None,
temperature=1.2,
presence_penalty=0.5,
frequency_penalty=0.5,
)
استخدم وظيفة improve_code لتصحيح الأخطاء ، يمكنك اتباع الخطوات أدناه:
حدد المشكلات أو الأخطاء في الكود الخاص بك. يمكنك القيام بذلك يدويًا ، أو يمكنك استخدام أدوات مثل المبيدات أو المحللين الثابتين أو تصحيحات للمساعدة في تحديد المشكلات.
إنشاء قائمة بالاقتراحات بناءً على القضايا المحددة. يجب أن يصف كل اقتراح كيفية إصلاح مشكلة أو خطأ معين في الكود.
اتصل بوظيفة improve_code ، وتمرير قائمة الاقتراحات ومقتطف الشفرة مع المشكلات كوسائط:
suggestions = [
"Fix the IndexError by using a conditional statement." ,
"Handle the ZeroDivisionError exception."
]
buggy_code = '''
def buggy_function(a, b):
result = a / b
return result
def another_buggy_function(lst):
return lst[0]
'''
improved_code = improve_code ( suggestions , buggy_code )
print ( improved_code )improve_code . تأكد من أن التحسينات التي تم إنشاؤها من الذكاء الاصطناعي تتماشى مع اقتراحاتك وإصلاح المشكلات المحددة بشكل صحيح. تحقق من أن الرمز المحسن يعمل كما هو متوقع. - Choose the search function: `google_search` for DuckDuckGo or `google_official_search` for the official Google API.
- Call the chosen function with your search query:
```python
query = "example search query"
num_results = 5
# Perform the search using DuckDuckGo
search_results = google_search(query, num_results)
print(search_results)
# Or, perform the search using the official Google API
# search_results = google_official_search(query, num_results)
# print(search_results)
تقوم الوظيفة بإرجاع قائمة عناوين URL لنتائج البحث التي تتطابق مع الاستعلام المحدد. تأكد من حفظ Google API في Secrets.json
اتصل بوظيفة browse_website مع عنوان URL لموقع الويب الذي تريد كشطه وسؤال يتعلق بالمحتوى الذي تبحث عنه:
url = "https://example.com"
question = "What is the main purpose of the website?"
answer_and_links = browse_website ( url , question )
print ( answer_and_links ) تستخدم وظيفة browse_website scrape_text_with_selenium لكشفية محتوى النص لموقع الويب و scrape_links_with_selenium لاستخراج الروابط.
list_files مع الدليل الذي تريد البحث عنه: directory = "path/to/directory"
all_files = list_files ( directory ) search_criteria = "example"
matching_files = [ file for file in all_files if search_criteria in file ]
print ( matching_files ) في هذا المثال ، سيحتوي matching_files على قائمة بجميع الملفات في الدليل المحدد (ودليله الفرعي) الذي يحتوي على سلسلة search_criteria بأسمائها. تعديل حالة التصفية حسب الحاجة لمطابقة متطلبات البحث المحددة.
يحتوي Autogpt على وظيفة clone_repository تتيح لك استنساخ مستودع GIT من عنوان URL معين إلى دليل محلي على جهازك. للمطالبة به للإدخال واستنساخ مستودع GIT باستخدام وظيفة clone_repository ، اتبع هذه الخطوات:
repo_url = "repository URL"
clone_path = "the path to clone the repository"clone_repository مع عنوان URL والمسار المقدم: result = clone_repository ( repo_url , clone_path ) يستدعي هذا الرمز وظيفة clone_repository ، والتي تستنسخ المستودع باستخدام بيانات اعتماد مصادقة GitHub المقدمة من كائن Config .
استخدم AutoGpt لإنشاء تعليقات وصفية للرمز الخاص بك تلقائيًا. يمكن أن يساعد ذلك في جعل الكود الخاص بك أكثر قابلية للقراءة وأسهل في الفهم ، خاصة بالنسبة لأعضاء الفريق الذين قد لا يكونون على دراية بقاعدة الكود.
استخدم Autogpt لإنشاء رمز BoilerPlate لمشروعك. على سبيل المثال ، يمكنك استخدام Autogpt لإنشاء رمز لإعداد التسجيل أو إنشاء ملفات التكوين أو تهيئة قاعدة البيانات.
استخدم الفرع التلقائي لإنشاء حالات اختبار للرمز الخاص بك. يمكن أن يساعد ذلك في التأكد من أن الكود الخاص بك يعمل كما هو متوقع وأن أي تغييرات تقوم بها على الكود لا تقدم أخطاء جديدة.
استخدم Autogpt لإنشاء وثائق لمشروعك. يمكن لـ AutoGpt إنشاء وثائق API وأدلة المستخدم وأنواع أخرى من الوثائق تلقائيًا ، مما يوفر لك الوقت والجهد.
Autogpt هي أداة قوية يمكن أن تساعدك في الترميز والهندسة المطالبة. يمكنه إنشاء قصاصات التعليمات البرمجية ، والتحقق من بناء جملة الرمز ، وتحسين الكود ، وإنشاء حالات الاختبار ، وإنشاء الوثائق وتنفيذ ملفات Python. باستخدام الفرد التلقائي ، يمكنك توفير الوقت وزيادة الإنتاجية.