** Disclamer: لست رائعًا في كتابة الوثائق ، لا تتردد في فتح مشكلة إذا كنت بحاجة إلى مزيد من الدعم حول كيفية استخدام **
مساعدك الشخصي. Cyrano هو نموذج لغة كبير لديه إمكانية الوصول إلى مجموعة من الأدوات التي يمكن أن تختار استخدامها كلما كانت هناك حاجة للرد على المستخدم. اسمها يأتي من شخصية المسرح الفرنسي Cyrano de Bergerac من قبل إدموند روستاند.
يستخدم Cyrano نماذج Openai الأخيرة: GPT-3.5-TURBO-0613 (أسرع) أو GPT-4-0613 (أكثر ذكاءً). لديهم الوصول إلى وظائف Openai. يعتمد الريبو على إطار Langchain.
TODO: أضف أمثلة و/أو فيديو
يستخدم Cyrano Python-Chess للحفاظ على ولاية شطرنج داخلية في جميع الأوقات. عند سماع تحرك الشطرنج في اللغة الطبيعية في المحادثة ، فإنه يترجمها إلى التمثيل الجبري المقابل ولعبه على لوحة التشيس الداخلية. ويستخدم أسماك البورصة لمدة 0.1 ثانية لتقرير ما يلعب استجابة. ثم يتم حفظ اللوحة كقشرة في ملف JSON حتى تتمكن من استئناف لعبتك في أي وقت في المستقبل.
يمكن لـ Cyrano الوصول إلى 3 إجراءات متعلقة بالشطرنج:
يقوم Cyrano بتخزين الرسائل الأخيرة حتى كمية معينة من الرموز (الافتراضي 1500) في نافذة السياق.
استنادًا إلى عوامل توليمية الورق: Simulacra التفاعلية للسلوك البشري بواسطة Park ، ET. آل.
تستخدم الذاكرة على المدى الطويل متجر متجه مرجح للوقت. عندما تتجاوز المحادثة 1500 رمز ، يتم تلخيص الرسائل الأقدم ، وتوجهها (باستخدام نموذج محولات الجملة) وتخزينها في قاعدة بيانات متجر المتجهات (QDrant). في كل مرة يقوم Cyrano بتخزين ذاكرة ، فإنها تسجلها من أصل 10 على مدى تنسى. كل ذاكرة عبارة عن نص قصير ، المتجه المقابل ، Armormance_score ، كائن DateTime Created_AT ، وكائن DateTime last_accated_at.
في وقت التشغيل ، يجلب Cyrano أفضل 5 ذكريات ذات صلة ويضيفها إلى آخر رسالة مستخدم. عند اختيار الذكريات الأكثر صلة ، فإنه يستخدم التشابه الدلالي ، المرجح في عصر الذاكرة ، باستخدام الصيغة: semantic_similarity + (1 - decay_rate) ** hours_passed . التي تمثلها demantic_similarity مسافة جيب التمام بين المتجهات ، تمثل DECAY_RATE مدى سرعة فقدان الذكريات ، و HOURS_PSED هي الدلتا بين الحاضر و LAST_ACCOND_AT.
يمكنك استخدام Cyrano كعامل نص فقط عن طريق تعيين متغير الصوت إلى FALSE في src/main.py. اخترت القيام بذلك ، ستكون المدخلات input() وستكون المخرجات نصوصًا.
إذا اخترت التفاعل معه باستخدام الصوت والأذن ، فستحتاج إلى استخدام النيص لاكتشاف كلمة الاستيقاظ. لهذا "Alexa" أو "Hey Google" ما يعادلها ، اخترت ببساطة "Cyrano". كلما أردت التفاعل مع النموذج ، يمكنك قول اسمه بصوت عالٍ ، وانتظر صفيرًا ، وابدأ الحديث.
ملاحظة: يتم تعيين كلمة Wake حاليًا بلكنة فرنسية. ما عليك سوى تجديده من موقع Porcupine بلغة أخرى إذا لزم الأمر.
يتم تسجيل الصوت باستخدام مكتبة الكلام. بعد سماع الصمت ، سيتوقف عن التسجيل وإرسال ملف الصوت إلى Openai Whisper API والذي سيعيد النص المكتوب.
يمكن لـ Cyrano استخدام خيارات 3 TTS:
PYTTSX3 وهو مجاني وله صوت آلي ولكن مقبول على النوافذ.
Google Cloud TTS خيار جودة/ سعر جيد جدًا IMO. يعمل بشكل جيد على أي نظام تشغيل.
أحد عشر مختبرًا أفضل جودة صوت ، لكن الإصدار المجاني محدود والنسخة المدفوعة لا توفر شخصية كافية شهريًا.
بما أنني احتجت إلى Cyrano للتشغيل على التوت ، وأراد جودة جيدة ، وحجم كبير ، لذلك ليس باهظ الثمن ، لقد اخترت Google TTS. تركت جميع الوظائف للخيارات الثلاثة في src/sound_utils.py. لا تتردد في استخدام الشخص الذي يناسبك. بالنسبة لـ Google أو Eleven Labs ، ستحتاج إلى إضافة مفتاح API في ملف .env.
استنساخ الريبو ، ثم قم بإنشاء ملف .env مع جميع API_KEY ومطالبة النظام التي تحتوي على ما يلي:
مثال على موجه النظام (هوية النموذج):
SYS_PROMPT="You are Cyrano, a personal assistant with the personality of Cyrano de Bergerac. Today's date is {current_date}. You're on {user_name}'s desk. {user_description}. {user_name}'s messages are recorded in sound and then transcribed into text. It may happen that the sound is incorrectly transcribed. You regularly reply in a sarcastic and humorous manner."
مفتاح API Openai
مفتاح API Search Search
OptionNal: مفتاح API Search Search
تثبيت المكتبات المطلوبة: pip install -r requirements.txt
قم بتشغيل التطبيق: python src/main.py
عند بدء تشغيل التطبيق يجب أن تلعب بعض الملاحظات. قل "Cyrano" عندما تريد التفاعل معها ، سوف تخطر صوت الصفير بأنه يستمع وآخر عندما يكتشف الصمت ويتوقف عن النسخ.