الغرض من إثبات المفهوم هذا هو تقييم ما هو مطلوب لإنشاء روبوت محادثة متعدد الاستخدامات وموثوق وبديهي للمستخدمين للمشاركة في الموضوعات ذات الصلة بـ Alkemio. المشروع غير قابل للنشر كما هو، ولكن يجب أن يكون بمثابة مدخلات قيمة لإظهار قدرات الذكاء الاصطناعي التوليدية والمساعدة في تقييم ما هو مطلوب لتضمين هذه الوظيفة في النظام الأساسي.
لقد تحسنت نماذج اللغات الكبيرة (LLMs) بشكل ملحوظ خلال الفترة الأخيرة ولم تعد منتشرة في كل مكان وذات أداء جيد. وهذا يفتح الكثير من الاحتمالات لاستخدامها في مجالات مختلفة. OpenAI هو المزود التجاري الأكثر شهرة لمجالات LLM، ولكن هناك خيارات واسعة لنماذج LLM، سواء التجارية أو مفتوحة المصدر. وفي حين أن هذا يوفر خيارات، فإنه يخلق أيضًا خطر تقييد مقدم الخدمة.
تعد LLMs مجرد عنصر واحد مطلوب للتنفيذ العملي لحلول الذكاء الاصطناعي التوليدية، والعديد من "اللبنات الأساسية" الأخرى ضرورية أيضًا. Langchain هي مكتبة شعبية مفتوحة المصدر توفر هذه العناصر الأساسية وتنشئ طبقة تجريد، مما يؤدي إلى استقلالية الموفر.
يعد تدريب LLM مكلفًا للغاية بالنسبة لمعظم المنظمات، ولكن بالنسبة لمعظم التطبيقات العملية هناك حاجة إلى دمج بيانات خاصة بالمؤسسة. تتمثل الطريقة الشائعة في إضافة سياق محدد لسؤال المستخدم إلى الموجه الذي يتم إرساله إلى LLM. يشكل هذا تحديًا، نظرًا لأن LLMs لا تسمح عمومًا إلا بالمطالبات ذات الحجم المحدود (عادةً حوالي 4 آلاف رمز مميز). لذلك من المهم توفير المعلومات السياقية ذات الصلة ويجب القيام بما يلي:
وقد استلهم هذا المشروع العديد من المقالات، ولكن النظرية والعملية. يأتي جزء كبير من قاعدة التعليمات البرمجية من مشروع إنشاء Chatbot مصمم جيدًا من AWS مع LangChain.
تم تنفيذ المشاريع كخدمة صغيرة تعتمد على الحاوية باستخدام RabbitMQ RPC. هناك قائمة انتظار RabbitMQ واحدة:
alkemio-virtual-contributor-engine-guidance
- قائمة الانتظار لتقديم الطلبات إلى الخدمة المصغرةتتكون حمولة الطلب من json بالبنية التالية (مثال للاستعلام):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
أنواع العمليات هي:
ingest
: جمع البيانات من موقع مؤسسة Alkemio (من خلال مصدر Github) والتضمين باستخدام نموذج نص OpenAI Ada، بدون بيانات طلب إضافة .reset
: إعادة تعيين سجل الدردشة للدردشة الجارية، يحتاج إلى معرف المستخدم.query
: انشر السؤال التالي في تسلسل الدردشة، انظر المثاليتم نشر الاستجابة في قائمة انتظار يتم إنشاؤها تلقائيًا وحصرية وغير مسماة.
هناك مسودة تنفيذ للغة التفاعل الخاصة بالنموذج (وهذا يحتاج إلى تحسين كبير). إذا لم يتم تحديد رمز اللغة، فسيتم افتراض اللغة الإنجليزية. الاختيارات هي: 'EN': 'الإنجليزية'، 'الولايات المتحدة': 'الإنجليزية'، 'المملكة المتحدة': 'الإنجليزية'، 'FR': 'الفرنسية'، 'DE': 'الألمانية'، 'ES': 'الإسبانية' ، "NL": "الهولندية"، "BG": "البلغارية"، "UA": "الأوكرانية"
*ملاحظة: يتوفر تطبيق RESTful سابق (قديم) على https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api
يمكن استخدام الأمر التالي لإنشاء الحاوية من Docker CLI (البنية الافتراضية هي amd64، لذلك --build-arg ARCHITECTURE=arm64
لبنيات amd64): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
يحتوي ملف Dockerfile على بعض وسائط التكوين التي لا تحتاج إلى شرح.
يمكن استخدام الأمر التالي لبدء الحاوية من Docker CLI: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
حيث يعتمد .env
على .azure-template.env
وبدلاً من ذلك استخدم docker-compose up -d
.
مع:
AZURE_OPENAI_API_KEY
: مفتاح OpenAI API صالحOPENAI_API_VERSION
: إصدار صالح من Azure OpenAI. في وقت كتابة هذا التقرير، آخر موعد هو 2023-05-15
AZURE_OPENAI_ENDPOINT
: عنوان URL أساسي صالح لـ Azure OpenAI، على سبيل المثال https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: اسم مضيف RabbitMQRABBITMQ_USER
: مستخدم RabbitMQRABBITMQ_PASSWORD
: كلمة مرور RabbitMQAI_MODEL_TEMPERATURE
: temperature
النموذج، قيمة الاستخدام بين 0 و1. 1 يعني إجابة أكثر عشوائية، أقرب إلى 0 - إجابة أكثر صرامةLLM_DEPLOYMENT_NAME
: اسم نشر نموذج AI gpt في AzureEMBEDDINGS_DEPLOYMENT_NAME
: اسم نشر نموذج تضمينات الذكاء الاصطناعي في AzureAI_SOURCE_WEBSITE
: عنوان URL لموقع المؤسسة الذي يحتوي على البيانات المصدر (للمراجع فقط)AI_SOURCE_WEBSITE2
: عنوان URL لموقع الويب الترحيبي الذي يحتوي على البيانات المصدر (للمراجع فقط)AI_LOCAL_PATH
: مسار الملف المحلي لتخزين البياناتAI_WEBSITE_REPO
: عنوان url لمستودع Git الذي يحتوي على البيانات المصدر لموقع المؤسسة، استنادًا إلى Hugo - بدون httpsAI_WEBSITE_REPO2
: عنوان url لمستودع Git الذي يحتوي على بيانات مصدر موقع الترحيب، استنادًا إلى Hugo - بدون httpsAI_GITHUB_USER
: يستخدم مستخدم Github لاستنساخ مستودعات موقع الويبAI_GITHUB_PAT
: رمز الوصول الشخصي لاستنساخ مستودعات موقع الويبLANGCHAIN_TRACING_V2
: تمكين تتبع LangchainLANGCHAIN_ENDPOINT
: نقطة نهاية تتبع Langchain (على سبيل المثال "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: مفتاح واجهة برمجة تطبيقات تتبع LangchainLANGCHAIN_PROJECT
: اسم مشروع تتبع Langchain (على سبيل المثال "توجيه محرك المساهم الافتراضي") يمكنك العثور على قيم نموذجية في .azure-template.env
. قم بتكوينها وإنشاء ملف .env
بالإعدادات المحدثة.
يتطلب المشروع تثبيت Python & Poetry. يمكن العثور على الحد الأدنى من تبعيات الإصدار على pyproject.toml
. بعد تثبيت بايثون والشعر:
poetry install
poetry run python virtual_contributor_engine_guidance.py
يتطلب المشروع Python 3.11 كحد أدنى ويحتاج إلى تثبيت Go وHugo لإنشاء نسخة محلية من موقع الويب. راجع وثائق Go وHugo للحصول على تعليمات التثبيت (فقط عند التشغيل خارج الحاوية)
المهام التالية لا تزال معلقة: