QnABot على AWS عبارة عن واجهة محادثة متعددة القنوات ومتعددة اللغات (chatbot) تستجيب لأسئلة عميلك وإجاباته وملاحظاته. يتيح لك نشر روبوت الدردشة كامل الوظائف عبر قنوات متعددة بما في ذلك الدردشة والصوت والرسائل النصية القصيرة وAmazon Alexa. تسمح لك بيئة إدارة محتوى الحل ومعالج تكامل مركز الاتصال بإعداد وتخصيص بيئة توفر المزايا التالية:
عزز تجربة عميلك من خلال توفير برامج تعليمية مخصصة ودعم الأسئلة والأجوبة من خلال تفاعل ذكي متعدد الأجزاء
يمكنك تقليل أوقات انتظار مركز الاتصال عن طريق أتمتة سير عمل دعم العملاء
قم بتنفيذ أحدث تقنيات التعلم الآلي لإنشاء تفاعلات جذابة تشبه التفاعلات البشرية لروبوتات الدردشة
يؤدي نشر هذا الحل باستخدام المعلمات الافتراضية إلى نشر المكونات التالية في حساب AWS الخاص بك (المكونات ذات الحدود اختيارية).
الشكل 1: QnABot على بنية AWS
يكون تدفق العملية عالي المستوى لمكونات الحل المنشورة باستخدام قالب AWS CloudFormation كما يلي:
ينشر المسؤول الحل في حساب AWS الخاص به، ويفتح واجهة مستخدم مصمم المحتوى أو عميل الويب Amazon Lex، ويستخدم Amazon Cognito للمصادقة.
بعد المصادقة، تقوم Amazon API Gateway وAmazon S3 بتسليم محتويات واجهة مستخدم مصمم المحتوى.
يقوم المسؤول بتكوين الأسئلة والأجوبة في مصمم المحتوى وترسل واجهة المستخدم الطلبات إلى Amazon API Gateway لحفظ الأسئلة والأجوبة.
تقوم وظيفة Content Designer
AWS Lambda بحفظ الإدخال في Amazon OpenSearch Service في فهرس بنك الأسئلة. في حالة استخدام عمليات تضمين النص، ستمر هذه الطلبات أولاً عبر نموذج LLM المستضاف على Amazon Bedrock أو Amazon SageMaker لإنشاء عمليات التضمين قبل حفظها في بنك الأسئلة على OpenSearch. بالإضافة إلى ذلك، يحفظ Content Designer
إعدادات التكوين الافتراضية والمخصصة في AWS Systems Manager Parameter Store.
يتفاعل مستخدمو chatbot مع Amazon Lex عبر واجهة مستخدم عميل الويب أو Amazon Alexa أو Amazon Connect.
يقوم Amazon Lex بإعادة توجيه الطلبات إلى وظيفة Bot Fulfillment
AWS Lambda. يمكن للمستخدمين أيضًا إرسال طلبات إلى وظيفة Lambda هذه عبر أجهزة Amazon Alexa.
يتم تخزين معلومات المستخدم والدردشة في Amazon DynamoDB لتوضيح أسئلة المتابعة من سياق الأسئلة والأجوبة السابقة.
تأخذ وظيفة Bot Fulfillment
AWS Lambda مدخلات المستخدمين وتستخدم Amazon Comprehend وAmazon Translate (إذا لزم الأمر) لترجمة طلبات اللغة غير الأصلية إلى اللغة الأصلية التي حددها المستخدم أثناء النشر ثم تبحث عن الإجابة في Amazon OpenSearch Service . في حالة استخدام ميزات LLM مثل إنشاء النص وتضمين النص، ستمر هذه الطلبات أولاً عبر نماذج LLM المتنوعة المستضافة على Amazon Bedrock أو Amazon SageMaker لإنشاء استعلام البحث والتضمينات للمقارنة مع تلك المحفوظة في بنك الأسئلة على OpenSearch.
إذا لم يتم إرجاع أي تطابق من بنك أسئلة OpenSearch، فستقوم وظيفة Lambda الخاصة بتنفيذ الروبوت بإعادة توجيه الطلب على النحو التالي:
أ. إذا تم تكوين فهرس Amazon Kendra كإجراء احتياطي، فستقوم وظيفة Bot Fulfillment
AWS Lambda بإعادة توجيه الطلب إلى Kendra إذا لم يتم إرجاع أي تطابق من بنك أسئلة OpenSearch. يمكن استخدام LLM لإنشاء النص بشكل اختياري لإنشاء استعلام بحث وتجميع استجابة من مقتطفات المستند التي تم إرجاعها.
ب. إذا تم تكوين معرف قاعدة معارف Bedrock، فستقوم وظيفة Bot Fulfillment
AWS Lambda بإعادة توجيه الطلب إلى قاعدة معارف Bedrock. تعمل وظيفة Bot Fulfillment
AWS Lambda على الاستفادة من واجهة برمجة التطبيقات RetrieveAndGenerate لجلب النتائج ذات الصلة لاستعلام المستخدم، وزيادة مطالبة النموذج الأساسي وإرجاع الاستجابة.
تؤدي تفاعلات المستخدم مع وظيفة Bot Fulfillment
إلى إنشاء بيانات السجلات والمقاييس، والتي يتم إرسالها إلى Amazon Kinesis Data Firehose ثم إلى Amazon S3 لتحليل البيانات لاحقًا. يمكن استخدام لوحات معلومات OpenSearch لعرض سجل الاستخدام، والألفاظ المسجلة، والألفاظ غير الناجحة، وتعليقات المستخدمين الإيجابية، وتعليقات المستخدمين السلبية، كما توفر أيضًا القدرة على إنشاء تقارير مخصصة.
يمكن استخدام لوحات معلومات OpenSearch لعرض سجل الاستخدام، والألفاظ المسجلة، والألفاظ غير الناجحة، وتعليقات المستخدمين الإيجابية، وتعليقات المستخدمين السلبية، كما توفر أيضًا القدرة على إنشاء تقارير مخصصة.
ارجع إلى دليل التنفيذ للحصول على تعليمات تفصيلية حول نشر QnABot في حساب AWS الخاص بك.
وبدلاً من ذلك، إذا كنت تريد نشر QnABot بشكل مخصص على AWS، فارجع إلى التفاصيل أدناه.
انتقل إلى الدليل الجذر لـ QnABot (سيتم إنشاء الدليل بمجرد استنساخ هذا الريبو).
ابدأ من الدليل / المصدر.
cd source
تثبيت Virtualenv:
pip3 install virtualenv
تثبيت وحدات Node.js الخاصة بـ QnABot:
npm install
بعد ذلك، قم بإعداد ملف التكوين الخاص بك:
npm run config
الآن قم بتحرير config.json
للمعلمات التالية:
المعلمة | وصف |
---|---|
منطقة | منطقة AWS لإطلاق الأكوام فيها |
حساب تعريفي | ملف تعريف اعتماد AWS المراد استخدامه |
مساحة الاسم | مساحة اسم منطقية لتشغيل القوالب الخاصة بك مثل التطوير و/أو الاختبار و/أو المنتج |
البريد الإلكتروني المطور (مطلوب) | البريد الإلكتروني الذي سيتم استخدامه عند إنشاء مستخدمين إداريين في عمليات التشغيل التلقائي للمكدس |
بعد ذلك، استخدم الأمر التالي لتشغيل قالب CloudFormation لإنشاء حاوية S3 لاستخدامها في تعليمات Lambda البرمجية وقوالب CloudFormation. انتظر حتى يكتمل هذا القالب (يمكنك مشاهدة التقدم من سطر الأوامر أو وحدة تحكم AWS CloudFormation)
npm run bootstrap
أخيرًا، استخدم الأمر التالي لتشغيل القالب لنشر QnABot في حساب AWS الخاص بك. عند اكتمال الحزمة، ستتمكن من تسجيل الدخول إلى واجهة مستخدم المصمم (عنوان URL هو أحد مخرجات القالب). كلمة مرور مؤقتة للبريد الإلكتروني في ملف config.json الخاص بك:
npm run up
إذا كان لديك مكدس موجود، فيمكنك تشغيل ما يلي لتحديث المكدس الخاص بك:
npm run update
لتشغيل اختبارات الوحدة، قم بتنفيذ الأمر التالي من المجلد الجذر:
npm test
لتحديث لقطات الاختبار عند تعديل الدليل /website أو /templates، قم بتنفيذ الأمر التالي:
npm run test:update:snapshot
ملاحظة: سيؤدي تشغيل اختبارات الانحدار إلى إنشاء المحتوى والإعدادات وتعديلها وحذفها من مصمم المحتوى. قم فقط بإجراء اختبارات الانحدار على الروبوتات غير الإنتاجية حيث يكون فقدان المحتوى والإعدادات أو تعديلهما مقبولاً.
يؤدي هذا إلى إجراء اختبارات التكامل مقابل نشر QnABot في حسابك. قبل إجراء الاختبارات، اتبع الخطوات المذكورة أعلاه لإنشاء إصدار ونشره أو النشر باستخدام القالب من صفحة QnABot المقصودة: قم بتشغيل QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
قم بتعيين متغيرات البيئة التالية للإشارة إلى نشر QnA Bot قيد الاختبار:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
قم بشكل اختياري بتوفير اسم مستخدم وكلمة مرور لمستخدم مسؤول للاختبار باستخدامهما. إذا لم يتم تعيين متغيرات البيئة هذه، فسيتم إنشاء مستخدم "QnaAdmin" الافتراضي أثناء الاختبار الأولي. إذا كنت تريد إجراء اختبار محدد، فقم بتوفير اسم مستخدم حيث سيتم إنشاء المستخدم الافتراضي فقط في الاختبار الأولي.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
اختياريًا، قم بتوفير معرف Bedrock Guardrails وإصداره للاختبار باستخدامه. إذا لم يتم تعيين متغيرات البيئة هذه، فسيتم تخطي اختبار Bedrock Guardrails في test_knowledge_base.py وtest_llm.py.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
إذا كنت ترغب في تشغيل المتصفح أثناء إجراء الاختبارات، فقم أيضًا بتعيين متغير env أدناه:
export HEADLESS_BROWSER= ' false '
إذا كنت ترغب في معرفة وقت البدء والانتهاء لكل اختبار:
export TIMESTAMPS= ' true '
إذا كنت تريد استخدام ملف تعريف AWS محدد للاختبار. إذا لم يتم التعيين، فسيستخدم اختبار الانحدار جلسة AWS الحالية التي يعمل فيها.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
يمكن للمستخدمين المتميزين المهتمين بإصدار QnABot مخصص استخدام الإرشادات التالية لنشر عناصر النشر المتاحة للمستخدمين الخارجيين.
قم بإنشاء حاوية S3 لاستضافة القوالب منها (راجع $DIST_OUTPUT_BUCKET أدناه). ستحتاج أيضًا إلى مجموعات إقليمية لكل منطقة سينشر المستخدمون منها. يجب تسمية المستودعات الإقليمية بـ $DIST_OUTPUT_BUCKET-$AWS_REGION. ستحتاج إلى توفير أذونات الوصول المناسبة إلى المجموعات للمستخدمين المستهدفين. يرجى الرجوع إلى الروابط أدناه للتعرف على أفضل الممارسات المتعلقة بأمان الحاويات والتحكم في الوصول:
ملاحظة: يجب تمكين تعيين الإصدار لكل المجموعات، وإلا فسيفشل نشر المكدس.
قم بتعيين متغيرات البيئة التالية لجهاز QnABot المخصص الخاص بك:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
ستحدد المتغيرات المذكورة أعلاه مسار عنوان URL للحاوية حيث سيتم استضافة الروبوت الخاص بك منه. مجموعة AWS_REGIONS عبارة عن قائمة بجميع المناطق التي يدعمها QnABot. يمكن تعديل القائمة حسب الضرورة إذا لم يتم نشر إصدار الروبوت الخاص بك في مناطق معينة.
قم بتشغيل الأوامر التالية لتحميل الإصدار المحلي الحالي إلى المجموعة المحددة:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
قم بإنشاء مجموعات S3 لكل منطقة إذا لم تكن موجودة بالفعل. يجب تكوين هذه المجموعات للاستخدام العام:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
قم بتشغيل الأمر أدناه لكل منطقة:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
يمكن نشر القالب من عنوان URL التالي لجميع المناطق:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
لتشغيل Webpack في وضع التطوير، تأكد من توفر ما يلي
انتقل إلى الدليل الجذر لـ QnABot (سيتم إنشاء الدليل بمجرد استنساخ هذا الريبو).
npm install
بعد ذلك، قم بتعيين متغير البيئة، ASSET_BUCKET_NAME
الموجود في package.json في dev mode
البرنامج النصي npm. هذا هو اسم المجموعة التي يقوم QnABot بتحميل أصول ./website إليها ويُسمى عادةً <stack-name>-bucket-<randomly-generated-chars>.
بمجرد الإعداد بشكل صحيح، قم بتشغيل
npm run dev-mode
من المفترض أن يؤدي ذلك إلى تعيين Webpack على وضع التطوير وتحميل الأصول في ./website/build إلى ASSET_BUCKET_NAME
. سيؤدي هذا أيضًا إلى مراقبة أي تغييرات في ./website وإعادة تحميل الأصول إلى مجموعتك إذا تغيرت الأصول.
المتصفحات الوحيدة المدعومة حاليًا هي:
راجع ملف LICENSE.txt للحصول على التفاصيل.
راجع ملف CHANGELOG.md للحصول على تفاصيل الميزات الجديدة في كل إصدار.
تتوفر أيضًا ورشة عمل ترشدك عبر ميزات QnABot.
مع تطور QnABot على مر السنين، فإنه يستفيد من العديد من الخدمات والوظائف التي قد تدخل أو تخرج عن الدعم. يعمل هذا القسم كمرجع لإصدارات الحلول القابلة للنشر بالإضافة إلى روابط إلى القوالب العامة وVPC CloudFormation الخاصة بها.
ملاحظة: تشير إصدارات الحلول القابلة للنشر إلى القدرة على نشر إصدار QnABot في حسابات AWS الخاصة بهم. الإصدارات المدعومة بشكل نشط من QnABot متاحة فقط لأحدث إصدار من QnABot.
لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة الاختبار والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في حاوية اختبار S3 عندما لا يكون لدى مصمم المحتوى أسئلة وأجوبة. يرجى استخدام أحدث إصدار متاح.
لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة الاختبار والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في حاوية اختبار S3 عندما لا يكون لدى مصمم المحتوى أسئلة وأجوبة. يرجى استخدام أحدث إصدار متاح.
v5.5.0+
نظرًا لوصول Vue 2 إلى نهاية العمر (EOL)، مما يؤثر على جميع الإصدارات السابقة من QnABot. لمزيد من المعلومات، انظر أدناه.v5.4.X
إلى الإصدارات الأحدث، إذا كنت تقوم بالترقية من نشر مع تعيين LLMApi على SAGEMAKER، فقم بتعيين هذه القيمة على DISABLED قبل الترقية. بعد الترقية، قم بإرجاع هذه القيمة مرة أخرى إلى SAGEMAKER.لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة الاختبار والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في حاوية اختبار S3 عندما لا يكون لدى مصمم المحتوى أسئلة وأجوبة. يرجى استخدام أحدث إصدار متاح.
لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة الاختبار والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في حاوية اختبار S3 عندما لا يكون لدى مصمم المحتوى أسئلة وأجوبة. الرجاء استخدام أحدث إصدار متاح.
لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة testall والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في مجموعة testall S3. الرجاء استخدام أحدث إصدار متاح.
لا نوصي باستخدام هذا الإصدار نظرًا لوجود مشكلة محتملة في وظيفة testall والتي قد تقدم عددًا كبيرًا من الإصدارات المخزنة في مجموعة testall S3. الرجاء استخدام أحدث إصدار متاح.
v5.2.1
قابلة للنشر بسبب عمليات إيقاف Lambda Runtime. يتم توفير هذه المعلومات كما هي وننصحك بشدة بالتحقق من تقويم الإيقاف ونهاية عمر الأطر المستخدمة في الحل.بالنسبة لـ QnABot، السبب الأكثر شيوعًا هو إيقاف تشغيل AWS Lambda Runtimes. عندما يتم وضع علامة على وقت تشغيل Lambda على أنه مهمل، لم يعد بإمكان العملاء إنشاء وظائف Lambda جديدة في حساب AWS الخاص بهم. وهذا يعني أن الإصدارات القديمة من حلولنا التي تستخدم أوقات التشغيل هذه ستفشل في النشر. وهذا يجعل من الصعب على المجتمع تقديم الدعم لأننا غير قادرين على نشر بيئة مماثلة للتحقيق في المشكلات وإعادة إنتاج تقارير الأخطاء.
إذا كان لديك حاليًا نشر حالي يعمل لصالحك، فلا يوجد شيء يتطلب منك التحديث. ومع ذلك، يوصى بشدة بإنشاء خطة لاختبار وترحيل عمليات نشر الإنتاج إلى إصدار مدعوم. كلما ابتعدت عملية النشر عن latest
زاد خطر التعرض لعدم الاستقرار (خاصة فيما يتعلق بالنشر).
وبالنسبة لأولئك الذين يتطلعون إلى بدء استخدام الحل لأول مرة، فمن المستحسن دائمًا استخدام الإصدار الأحدث. إنها النسخة الأكثر أمانًا واستقرارًا وغنية بالميزات من QnABot!
في معظم الحالات، من المفترض أن تسمح لك عملية Update Stack البسيطة بترحيل المثيل الخاص بك إلى إصدار أحدث مع الحفاظ على بياناتك في النشر الجديد.
ملاحظة: بالنسبة لأولئك الذين يقومون بالترقية من
v5.4.X
إلى الإصدارات الأحدث، إذا كنت تقوم بالترقية من نشر مع تعيين LLMApi على SAGEMAKER، فقم بتعيين هذه القيمة على DISABLED قبل الترقية. بعد الترقية، قم بإرجاع هذه القيمة مرة أخرى إلى SAGEMAKER.
يوصي الفريق بشدة باختبار أي ترقيات (خاصة بين الإصدارات الثانوية/الرئيسية) أولاً على مثيل غير إنتاجي للتحقق من أي تراجعات. يعد هذا أمرًا بالغ الأهمية إذا قمت بإجراء تعديلات مخصصة على النشر الخاص بك، أو التكامل مع الخدمات الخارجية، أو التنقل بين إصدارات متعددة.
بعض الاحتياطات الإضافية التي يمكنك اتخاذها هي:
Export Settings
في أسفل صفحة الإعدادات)يجمع هذا الحل مقاييس تشغيلية مجهولة المصدر لمساعدة AWS على تحسين جودة الحل وميزاته. لمزيد من المعلومات، بما في ذلك كيفية تعطيل هذه الإمكانية، يرجى مراجعة دليل التنفيذ.
حقوق الطبع والنشر لشركة Amazon.com, Inc. أو الشركات التابعة لها. جميع الحقوق محفوظة.
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.