المزيد من مقالات التعلم العميق......المزيد من مقالات المعالجة اللغوية الطبيعية.....مقالات التعلم العميقمقالات المعالجة اللغوية الطبيعية

كيفية تشغيل ChatGPT على Raspberry Pi

(قم بتشغيل منشئ محتوى الذكاء الاصطناعي الشهير على الراسبيري باي الخاص بك أو قم بدمجه في السكريبتات الخاصة بك.)

لن تفوتك جنون الإثارة المحيط بـ ChatGPT (محولات الدردشة التوليدية المدربة مسبقاً Chat Generative-Pre-Trained Transformer). يمكنه إنشاء الصور وكتابة الاكواد والأغاني والشعر ومحاولة حل مشاكلنا ، كبيرة كانت أم صغيرة. قد لا يعرف كيف يتغلب على محاكاة Kobayashi Maru من Star Trek، ولكن يمكنه كتابة كود بايثون و Bash بسهولة. يمكن أيضًا استخدامه لكتابة G-Code لأفضل الطابعات ثلاثية الأبعاد على الرغم من أننا لم نجربها بعد على Creality Ender 2 Pro.

عادةً ما نتفاعل مع ChatGPT عبر المتصفح، ولكن في هذه الطريقة، سنستخدم مكتبة بايثون الخاصة التي ستربط Raspberry Pi المتواضع الخاص بنا بالذكاء الاصطناعي القوي وتزودنا بأداة للإجابة على أي سؤال تقريبًا. هذا المشروع ليس حصريًا لـ Raspberry Pi؛ يمكن استخدامه أيضًا مع أجهزة الكمبيوتر التي تعمل بنظام Windows و macOS و Linux. إذا كان بإمكانك تشغيل بايثون عليها، فمن المحتمل أن يعمل هذا المشروع أيضًا.

إذا كنت تستخدم Raspberry Pi، فيمكنك استخدام أي نموذج تقريبًا مع هذا المشروع لأننا ببساطة نقدم طلبات عبر اتصال بالإنترنت. ومع ذلك، للحصول على أفضل أداء بشكل عام، نوصي باستخدام Raspberry Pi 4 أو Raspberry Pi 3B +.

إعداد مفتاح واجهة برمجة تطبيقات ChatGPT لـ Raspberry Pi

قبل أن نتمكن من استخدام ChatGPT مع Raspberry Pi و بايثون، نحتاج أولاً إلى إعداد مفتاح API. سيمكن هذا المفتاح الكود الخاص بنا من الاتصال بحساب OpenAI الخاص بنا واستخدام الذكاء الاصطناعي للإجابة على الاستفسارات أو كتابة التعليمات البرمجية أو كتابة الشعر أو إنشاء الأغنية الناجحة التالية.

  1. تسجيل الدخول إلى حساب OpenAI الخاص بك.
  2. انقر فوق القائمة وحدد عرض مفاتيح API.

3. انقر فوق إنشاء مفتاح سري جديد لإنشاء مفتاح API. تأكد من نسخ هذا المفتاح ولصقه في مكان آمن، فلن يظهر مرة أخرى. لا تشارك مفاتيح API الخاصة بك، فهي فريدة من نوعها لحسابك، وأي تكاليف يتم تكبدها ستأتي من حسابك.

تثبيت ChatGPT Python API على Raspberry Pi

مع وجود مفتاح API الخاص بنا في متناول اليد، يمكننا الآن تكوين Raspberry Pi الخاص بنا وتحديداً بايثون لاستخدام API عبر مكتبة OpenAI Python.

1. افتح Terminal وقم بتحديث البرنامج على Raspberry Pi الخاص بك. هذا الأمر ذو شقين. أولاً، يتم تشغيل تحديث، والتحقق من أن قائمة مستودعات البرامج على Pi لدينا محدثة. إذا لم يكن كذلك، فسيتم تنزيل أحدث التفاصيل. يعني “&&” أنه إذا تم تشغيل الأمر الأول (التحديث) بشكل نظيف، فسيبدأ الأمر الثاني حيث نقوم بترقية البرنامج. تُستخدم علامة “-y” لقبول التثبيت بدون إدخال المستخدم.

sudo apt update && sudo apt upgrade -y

2. قم بتثبيت مكتبة openai Python باستخدام مدير حزمة pip.

pip3 install openai

3. افتح ملف bashrc المخفي في دليل home. هذا الملف هو المكان الذي نحتاج فيه إلى تعيين مسار، وهو المكان الذي يمكن أن يبحث فيه نظام تشغيل Raspberry Pi و Python عن ملفات قابلة للتنفيذ executable / التكوين configuration.

nano ~/.bashrc

4. باستخدام لوحة المفاتيح، انتقل إلى أسفل الملف وأضف هذا السطر.

export PATH="$HOME/.local/bin:$PATH"

5. احفظ الملف بالضغط على CTRL + X ، ثم Y و Enter.

6. قم بإعادة تحميل تهيئة bashrc لإنهاء التكوين. ثم أغلق terminal.

source ~/.bashrc

إنشاء بوت المحادثة Chatbot  لـ Raspberry Pi

الهدف من chatbot الخاص بنا هو الرد على الأسئلة التي حددها المستخدم. طالما يمكن أن تكون الاستجابة بتنسيق نصي، فسيعمل كود المشروع هذا. عند انتهاء المستخدم، يمكنه كتابة كلمة للخروج، أو الضغط على CTRL + C لإيقاف الكود. اختبرناها باستخدام الحقائق والأسئلة التافهة، ثم طلبنا منها كتابة كود بايثون و Bash وقليلًا من G-Code لطابعة ثلاثية الأبعاد.

1. قم بتشغيل Thonny، محرر بايثون المدمج. يمكنك العثور عليه في قائمة Raspberry Pi ، ضمن Programming >> Thonny.

2. استيراد مكتبة openai. يتيح ذلك لكود بايثون الاتصال بالإنترنت و ChatGPT.

import openai

3. قم بإنشاء كائن، model_engine وتخزين النموذج المفضل لديك هناك. davinci-003 هو الأكثر قدرة ، ولكن يمكننا أيضًا استخدام (بترتيب الإمكانيات) “text-curie-001” و “text-babbage-001” و “text-ada-001”. نموذج ada لديه أقل تكلفة للرمز المميز lowest token cost.

model_engine = "text-davinci-003"

4. قم بإنشاء كائن، و open.api_key وقم بتخزين مفتاح API الخاص بك. الصق مفتاح API الخاص بك بين علامتي الاقتباس.

openai.api_key = "YOUR API KEY HERE”

5. قم بإنشاء دالة، GPT() تأخذ الاستعلام (السؤال) من المستخدم كوسيطة. هذا يعني أنه يمكننا إعادة استخدام الدالة لأي سؤال.

def GPT(query):

6. قم بإنشاء كائن استجابة لتمرير تفاصيل استعلامنا إلى ChatGPT. يستخدم النموذج والاستعلام الذي اخترناه لطرح السؤال. قمنا بتعيين الحد الأقصى للإنفاق على الرمز المميز maximum token spend على 1024، ولكن في الواقع، سننفق أقل بكثير حتى يمكن تعديل ذلك. تتحكم “درجة الحرارة temperature ” في مدى إبداع الاستجابات. كلما زادت القيمة، قل 0.9 ، كلما حاول النموذج أن يكون أكثر إبداعًا. 0.5 مزيج جيد من الإبداع والواقعي.

 response = openai.Completion.create(
       engine=model_engine,
       prompt=query,
       max_tokens=1024,
       temperature=0.5,
   )

7. قم بإعادة البيانات من ChatGPT ، مع تجريد نص الاستجابة ، وعدد الرموز المميزة المستخدمة. البيانات التي تم إرجاعها في قاموس / تنسيق JSON لذلك نحن بحاجة على وجه التحديد إلى استهداف البيانات الصحيحة باستخدام المفاتيح. هذه المفاتيح ترجع القيم المرتبطة بها.

   return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']

8. قم بإنشاء tuple واستخدمه لتخزين قائمة السلاسل التي يمكن استخدامها للخروج من الدردشة. تعتبر المجموعات غير قابلة للتغيير immutable، مما يعني أنه يمكن إنشاؤها وإتلافها، ولكن لا يتم تحديثها بواسطة التعليمات البرمجية قيد التشغيل. إنهم يصنعون تكوينات “ضبط ونسيان set and forget ” مثالية.

exit_words = ("q","Q","quit","QUIT","EXIT")

9. استخدم try، متبوعة بـ while True: لتوجيه بايثون لمحاولة تشغيل الكود الخاص بنا ، والقيام بذلك إلى الأبد.

try:
   while True:

10. طباعة تعليمات للمستخدم، في هذه الحالة كيفية الخروج من الدردشة.

       print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")

11. التقاط استعلام المستخدم، باستخدام موجه مخصص وتخزينه في كائن يسمى query.

       query = input("What is your question?> ")

12. استخدم اختبارًا شرطيًا للتحقق مما إذا كان أي من كلمات الخروج موجودة فقط في الاستعلام. يمكننا استخدام هذه الكلمات في الاستعلام، ولكن إذا كانت هي الكلمات الوحيدة، فستنتهي الدردشة.

if query in exit_words:

13. اضبطه بحيث، في حالة وجود exit_words، سيطبع الرمز “ENDING CHAT” ثم يستخدم فاصل لإيقاف الكود.

print("ENDING CHAT")
           break

14. إنشاء شرط else . سيتم تشغيل هذا الشرط دائمًا إذا لم يتم العثور على exit_words.

else:

15. قم بتشغيل استعلام ChatGPT وحفظ الإخراج في كائنين، res (استجابة) و usage (الرموز المميزة المستخدمة).

(res, usage) = GPT(query)

16. اطبع استجابة ChatGPT لـ Python shell.

print(res)

17. اطبع 20 = على التوالي لإنشاء حاجز بين نص ChatGPT ثم اطبع عدد الرموز المميزة tokens المستخدمة.

print("="*20)
           print("You have used %s tokens" % usage)
           print("="*20)

18. قم بإنشاء معالج استثناء exception handler يتم تنشيطه إذا ضغط المستخدم على CTRL + C. سيطبع رسالة خروج إلى Python shell قبل خروج الكود.

except KeyboardInterrupt:
   print("\nExiting ChatGPT")

19. احفظ الكود ChatGPT-Chatbot.py وانقر فوق تشغيل Run للبدء. اطرح أسئلتك على chatbot، وعند الانتهاء اكتب إحدى كلمات الخروج أو اضغط على CTRL + C للخروج.

الكود كامل

import openai
model_engine = "text-davinci-003"
openai.api_key = "YOUR API KEY HERE"
def GPT(query):
   response = openai.Completion.create(
       engine=model_engine,
       prompt=query,
       max_tokens=1024,
       temperature=0.5,
   )
   return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
exit_words = ("q","Q","quit","QUIT","EXIT")
try:
   while True:
       print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
       query = input("What is your question?> ")
       if query in exit_words:
           print("ENDING CHAT")
           break
       else:
           (res, usage) = GPT(query)
           print(res)
           print("="*20)
           print("You have used %s tokens" % usage)
           print("="*20)
except KeyboardInterrupt:
print("\nExiting ChatGPT")
المصدر
How to Run ChatGPT on Raspberry Pi or PC

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى