
Pippa هو مشروع chatbot من طراز اللغة الكبير مفتوح المصدر (LLM) استنادًا إلى إطار Langchain. يهدف إلى تقديم تجربة محادثة مخصصة وتكيفية.
تدمج PIPPA ميزات مختلفة لتعزيز عملية التكيف ، بما في ذلك القدرة على تخصيص شخصية Chatbot ، ودخل المستندات للتعلم ، وتذكر تاريخ المحادثة ، والتبديل بين الشخصيات المختلفة ، والتكيف مع احتياجات المستخدم.
استلهمت وحدة الاسترداد QA من قبل الهندسة المهمة.
بدأ مشروع PIPPA كهواية شخصية لاستكشاف إمكانية إنشاء شخصية ابنة منظمة العفو الدولية. على الرغم من أنه لا يزال في المراحل المبكرة ، يتم تحديث المشروع بانتظام بميزات وتحسينات جديدة. الأدوار الافتراضية في PIPPA هي "نظام" لرسائل النظام ، "Pippa" كشخصية ابنة الرعاية ، و "Bundy" كوالدها.
عند استخدام محركات TTS/STT ، يستخدم Pippa واجهة برمجة تطبيقات ElevenLabs. يمكنك التسجيل للحصول على حساب مجاني: https://elevenlabs.io.
لتجربة أفضل ، قم بتعيين أصوات فريدة من نوعها للشخصيات.
تم اختباره مع بيثون 3.10.
لتثبيت Pippa ، اتبع هذه الخطوات:
git clone https://github.com/neobundy/pippaGPT.git cd pippaGPT pip install -r requirements.txtملاحظة: إذا واجهت أخطاء ، فقد تحتاج إلى تثبيت تبعيات إضافية مثل
ffmpegوportaudio. على MacOS ، يمكنك استخدام Homebrew.لتثبيتها ، قم بتشغيل الأوامر التالية:
brew install ffmpeg brew install portaudio
env_sample إلى ملف .env في المجلد الجذر للمشروع وإضافة مفاتيح API:لاحظ أن ugging_face_api_key للاستخدام في المستقبل.
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=بدلاً من ذلك ، يمكنك تصدير متغيرات البيئة هذه في المحطة الخاصة بك.
نسخ characters_samply.py إلى characters.py وقم بتحرير الملف لتخصيص اسم وشخصية الذكاء الاصطناعي.
نسخ settings_private_sample.py إلى settings_private.py . settings_sample.py إلى settings.py وتحرير الملفات لتخصيص الإعدادات الخاصة بك.
اختر طراز LLMS في ملف settings.py :
DEFAULT_GPT_MODEL = "gpt-3.5-turbo"
DEFAULT_GPT_HELPER_MODEL = "gpt-3.5-turbo-16k"
DEFAULT_GPT_QA_HELPER_MODEL = "gpt-3.5-turbo-16k"سياق كبير يحتاج إلى المزيد من الرموز. رموز 16K كافية لمعظم الحالات.
ينصح بشدة GPT-4 لـ Default_GPT_MODEL بتجربة أفضل ، ولكن لاحظ أنه مكلف 10x ومتاح فقط لحسابات OpenAI المدفوعة مسبقًا.
settings_private.py مثل خادم متجر ZEP Vector أو عناوين URL لخادم الصوت. ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" بشكل افتراضي ، يتم استخدام ذاكرة Langchain "Buffer" للاحتفاظ بسياق المحادثة.
يدعم Pippa ستة أنواع من الذكريات:
يوصى بشدة ZEP بالسياق الكبير. يمكن تشغيله محليًا كحاوية Docker. تحرير settings_private.py .
تظهر الملخصات عند تحديد ذاكرة نوع الملخص بما في ذلك ZEP. يتم إنشاء الملخصات بواسطة نموذج Helper GTP الملخص.
لاحظ أن الأمر يستغرق بعض الوقت حتى الفهرس ZEP وإنشاء ملخصات. عندما لا تكون جاهزًا ، "تلخيص ... يرجى التحلي بالصبر." ستظهر الرسالة.
ZEP_API_URL = "http://localhost:8000" يمكن تشغيل خادم ZEP على أي مضيف أو منفذ. إذا قمت بتشغيله على مضيف مختلف ، فتأكد من تحديث متغير ZEP_API_URL في settings_private.py .
تفضل بزيارة https://www.getzep.com/ لمعرفة كيفية تشغيل ZEP.
لتشغيل تطبيق PIPPA ، استخدم الأمر التالي:
streamlit run main.py سيقوم التطبيق تلقائيًا بتشغيل خادم الصوت الذي يستمع إلى المنفذ 5000. إذا لزم الأمر ، يمكنك تشغيل خادم الصوت يدويًا عن طريق تنفيذ audio_server.py .
لتناول المستندات الخاصة بك لبيبا للتعلم منها ، اتبع هذه الخطوات:
docs .vectordb.py لإنشاء قاعدة بيانات المتجه الخاصة بك: python vectordb.pyإذا كان لديك مفتاح API ElevenLabs ، فيمكنك استخدام محرك TTS (النص إلى الكلام) مع PIPPA.
يتم التعامل مع STT (الكلام إلى النص) بواسطة طراز Openai's Whisper-1.
اتبع هذه الخطوات:
tts.py للحصول على الأسماء الصوتية المتوفرة والمعرفات من حساب ElevenLabs الخاص بك: python tts.py قم بتحديث المتغيرات التالية في settings_private.py مع معرفات الصوت المناسبة:
VOICE_ID_AI = ""
VOICE_ID_SYSTEM = ""
VOICE_ID_HUMAN = ""audio_server.py . يمكنك تخصيص بادئات الكلمات الرئيسية المطالبة المستخدمة في PIPPA عن طريق تحرير ملف settings.py .
PROMPT_KEYWORD_PREFIX_SYSTEM : يستخدم لرسائل النظام المؤقت (افتراضي: "النظام:")PROMPT_KEYWORD_PREFIX_CI : يستخدم لاستبدال الإرشادات المخصصة (الافتراضي: "CI:")PROMPT_KEYWORD_PREFIX_QA : يستخدم لاسترجاع QA استنادًا إلى مستنداتك في مجلد docs (الافتراضي: "QA:")PROMPT_KEYWORD_PREFIX_GOOGLE : يستخدم للبحث في الويب للحصول على معلومات معينة (افتراضي: "Google:")PROMPT_KEYWORD_PREFIX_WIKI : يستخدم للبحث عن ويكيبيديا (افتراضي: "wiki:")PROMPT_KEYWORD_PREFIX_MATH : يستخدم للاستعلام الرياضي (افتراضي: "الرياضيات:")PROMPT_KEYWORD_PREFIX_MIDJOURNEY : يستخدم لإنشاء مطالبات Midjourney (افتراضي: "Midjourney:") يتم تمكين البث افتراضيًا. لتعطيلها ، قم بتعديل ملف STEPTS.PY على النحو التالي:
STREAMING_ENABLED = Trueعند تمكين البث ، تكون التكاليف تقريبية بناءً على وثائق Openai. للحصول على تكاليف دقيقة ، ستحتاج إلى تعطيل البث.
لاحظ أن حساب التكلفة لا يتضمن نفقات أخرى تكبدتها نماذج GPT الإضافية ، مثل تلك الخاصة بالتلخيص و QA.
اضبط الثابت التالي في settings.py .
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8يحدد عدد التكرارات عدد المرات التي سيقوم فيها الوكيل. يؤدي عدد أكبر من التكرارات عمومًا إلى إجابات أكثر دقة ، ولكنه يستهلك أيضًا المزيد من الرموز.
يرجى ملاحظة أن وكيل بحث Google قد يحتاج إلى إجراء استفسارات متعددة للحصول على أفضل إجابة.
على سبيل المثال ، إذا سألت "من هو الأقدم بين رؤساء ولاية كوريا الجنوبية والولايات المتحدة واليابان؟" ، من المحتمل أن يحتاج العميل إلى الاستعلام عن 3-4 مرات على الأقل للحصول على الإجابة النهائية.
قد يستجيب نفس النموذج بشكل مختلف لنفس الاستعلام. حتى "GPT-4" لا تؤدي دائمًا الأفضل ، ولكن الموصى بها للغاية. تجربة مع نماذج مختلفة.
لاحظ أنه حتى على مستوى Langchain ، فهو تجريبي للغاية. قد لا تعمل كما هو متوقع.
إنه وضع ناجح أو تفوت اعتمادًا على مهاراتك في الطالبة. تحتاج إلى مفتاح Serpapi API لاستخدام ميزة بحث Google: https://serpapi.com. تعد الإجابة النهائية المقدمة بمثابة مطالبة وسيطة للنموذج الرئيسي.
يحاول الوكيل أولاً العثور على صفحة ويكيبيديا ذات الصلة للاستعلام المحدد. إذا وجدت ، فسيقوم بإرجاع ملخص الصفحة والبحث عن المصطلح المحدد في الملخص.
LLMs غير معروفة بكفاءتها في الرياضيات. يوفر وكيل الرياضيات إجابات دقيقة لمشاكل الرياضيات المعقدة للغاية.
لإدارة قاعدة بيانات المتجه ، قم بتشغيل البرنامج النصي vectordb.py .
python vectordb.pyلديك الخيارات التالية:
settings.CHROMA_DB_FOLDER مع مجموعة تسمى settings.VECTORDB_COLLECTION .settings.CONVERSATION_SAVE_FOLDER . لاحظ أنه عندما تختار خيار المحادثات (E) MBED snapshot.json سيتم دمج المحادثات التي تم تصديرها *.json .
إذا واجهت أخطاء عند تشغيل التطبيق ، جرب الخطوات التالية:
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
يتم إصدار PIPPA بموجب ترخيص Apache 2.0. لا تتردد في استخدام وتعديل وتوزيع الرمز للأغراض الشخصية أو التجارية.