مقدمة
المتطلبات الأساسية
مكدس التكنولوجيا المستهدفة
النشر
أوامر CDK مفيدة
هيكل الكود
قم بتخصيص chatbot ببياناتك الخاصة
تم إنشاء تطبيق GenAI ChatBot هذا باستخدام Amazon Bedrock، والذي يتضمن KnowledgeBase وAgent وحلول GenAI الإضافية بدون خادم من AWS. يعرض الحل المقدم Chatbot الذي يستفيد من فهمه لمثيلات EC2 وتسعير مثيلات EC2. يعمل برنامج الدردشة الآلي هذا بمثابة توضيح لقدرات Amazon Bedrock على تحويل اللغة الطبيعية إلى استعلامات Amazon Athena ومعالجة واستخدام مجموعات البيانات المعقدة. يتم استخدام أدوات مفتوحة المصدر، مثل LLamaIndex، لزيادة قدرات النظام على معالجة البيانات واسترجاعها. تم أيضًا التأكيد على تكامل العديد من موارد AWS في الحل. تتكون هذه الموارد من Amazon S3 للتخزين، وAmazon Bedrock KnowledgeBase لتسهيل عملية الاسترجاع المعزز (RAG)، ووكيل Amazon Bedrock لتنفيذ مهام متعددة الخطوات عبر مصادر البيانات، وAWS Glue لإعداد البيانات، وAmazon Athena لتنفيذ استعلامات فعالة، وAmazon Lambda لـ إدارة الحاويات، وAmazon ECS للإشراف على الحاويات. يؤدي الاستخدام المشترك لهذه الموارد إلى تمكين Chatbot من استرداد المحتوى وإدارته بكفاءة من قواعد البيانات والمستندات، وبالتالي إظهار قدرات Amazon Bedrock في تطوير تطبيقات Chatbot المتقدمة.
عامل ميناء
AWS CDK Toolkit 2.114.1+، تم تثبيته وتكوينه. لمزيد من المعلومات، راجع بدء استخدام AWS CDK في وثائق AWS CDK.
Python 3.11+، تم تثبيته وتكوينه. لمزيد من المعلومات، راجع دليل المبتدئين/التنزيل في وثائق Python.
حساب AWS نشط
تم تمهيد حساب AWS باستخدام AWS CDK في us-east-1 أو us-west-2. تمكين الوصول إلى نموذج Claude ونموذج Titan Embedding في خدمة Bedrock.
أمازون بيدروك
أمازون OpenSearch بدون خادم
أمازون إي سي إس
الغراء AWS
أوس لامدا
أمازون إس 3
أمازون أثينا
موازن الحمل المرن
لتشغيل التطبيق محليًا، قم أولاً بإضافة ملف .env إلى مجلد 'code/streamlit-app' الذي يحتوي على ما يلي
ACCOUNT_ID = <معرف حسابك>AWS_REGION = <منطقتك>LAMBDA_FUNCTION_NAME = invocAgentLambda # يعين الاسم المفضل لوظيفة lambda التي يطلق عليها Streamlit للاستجابة. يستدعي حاليا وكيلا.
يخبر ملف cdk.json
مجموعة أدوات CDK بكيفية تنفيذ تطبيقك.
تم إعداد هذا المشروع مثل مشروع بايثون القياسي. تقوم عملية التهيئة أيضًا بإنشاء virtualenv ضمن هذا المشروع، ويتم تخزينها ضمن الدليل .venv
. لإنشاء Virtualenv، يفترض وجود python3
(أو python
لنظام التشغيل Windows) قابل للتنفيذ في المسار الخاص بك مع إمكانية الوصول إلى حزمة venv
. إذا فشل الإنشاء التلقائي لـ virtualenv لأي سبب من الأسباب، فيمكنك إنشاء virtualenv يدويًا.
لإنشاء Virtualenv يدويًا على نظامي التشغيل MacOS وLinux:
$ python3 -m venv .venv
بعد اكتمال عملية init وإنشاء virtualenv، يمكنك استخدام الخطوة التالية لتنشيط virtualenv الخاص بك.
$ المصدر .venv/bin/activate
إذا كنت تستخدم نظام التشغيل Windows، فيمكنك تنشيط Virtualenv مثل هذا:
% .venvScriptsactivate.bat
بمجرد تنشيط Virtualenv، يمكنك تثبيت التبعيات المطلوبة.
$ تثبيت النقطة -r متطلبات.txt
لإضافة تبعيات إضافية، على سبيل المثال مكتبات CDK الأخرى، ما عليك سوى إضافتها إلى ملف setup.py
الخاص بك وإعادة تشغيل الأمر pip install -r requirements.txt
.
عند هذه النقطة يمكنك الآن تجميع قالب CloudFormation لهذا الكود.
$ سي دي كيه موالفة
لإضافة تبعيات إضافية، على سبيل المثال مكتبات CDK الأخرى، ما عليك سوى إضافتها إلى ملف setup.py
الخاص بك وإعادة تشغيل الأمر pip install -r requirements.txt
.
ستحتاج إلى تشغيله إذا كانت هذه هي المرة الأولى التي تقوم فيها بتشغيل cdk في حساب ومنطقة معينين.
$ سي دي كيه التمهيد
بمجرد تشغيله، يمكنك المتابعة لنشر cdk.
نشر $ CDK
إذا كانت هذه هي المرة الأولى التي تقوم فيها بنشره، فقد تستغرق العملية ما بين 30 إلى 45 دقيقة تقريبًا لإنشاء العديد من صور Docker في ECS (Amazon Elastic Container Service). يرجى التحلي بالصبر حتى يتم الانتهاء منه. بعد ذلك، سيبدأ في نشر حزمة chatbot، والتي تستغرق عادةً حوالي 5-8 دقائق.
بمجرد اكتمال عملية النشر، سترى مخرجات cdk في الوحدة الطرفية، ويمكنك أيضًا التحقق من الحالة في وحدة تحكم CloudFormation الخاصة بك.
يمكنك إما اختبار الوكيل في وحدة تحكم AWS أو من خلال عنوان URL للتطبيق المبسط المدرج في مخرجات chatbot-stack في CloudFormation.
لحذف cdk بمجرد الانتهاء من استخدامه لتجنب التكاليف المستقبلية، يمكنك إما حذفه من خلال وحدة التحكم أو تنفيذ الأمر التالي في الوحدة الطرفية.
تدمير $ CDK
قد تحتاج أيضًا إلى حذف مجموعة S3 التي تم إنشاؤها بواسطة cdk يدويًا. يرجى التأكد من حذف جميع الموارد التي تم إنشاؤها لتجنب تكبد التكاليف.
يسرد cdk ls
جميع الأكوام الموجودة في التطبيق
يقوم cdk synth
بإصدار قالب CloudFormation المركب
cdk deploy
نشر هذا المكدس على حساب/منطقة AWS الافتراضية الخاصة بك
يقارن cdk diff
المكدس المنشور بالحالة الحالية
تفتح مستندات cdk cdk docs
cdk destroy
dstroys واحدًا أو أكثر من الأكوام المحددة
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
لدمج بياناتك المخصصة لنشر الحل، يرجى اتباع هذه الإرشادات المنظمة المصممة وفقًا لمتطلباتك:
حدد موقع الدليل assets/knowledgebase_data_source/
.
ضع مجموعة البيانات الخاصة بك داخل هذا المجلد.
قم بالوصول إلى ملف cdk.json
.
انتقل إلى الحقل context/configure/paths/knowledgebase_file_name
وقم بتحديثه وفقًا لذلك.
علاوة على ذلك، قم بتعديل الحقل bedrock_instructions/knowledgebase_instruction
في ملف cdk.json
ليعكس بدقة الفروق الدقيقة وسياق مجموعة البيانات الجديدة.
ضمن الدليل assets/data_query_data_source/
، قم بإنشاء دليل فرعي، على سبيل المثال، tabular_data.
قم بإيداع مجموعة البيانات المنظمة الخاصة بك (تشمل التنسيقات المقبولة CSV و JSON و ORC و Parquet ) في هذا المجلد الفرعي الذي تم إنشاؤه حديثًا.
إذا كنت تتصل بقاعدة بياناتك الحالية ، فقم بتحديث الوظيفة create_sql_engine()
في code/lambda/action-lambda/build_query_engine.py
للاتصال بقاعدة البيانات الخاصة بك.
قم بتحديث حقل context/configure/paths/athena_table_data_prefix
لملف cdk.json
ليتوافق مع مسار البيانات الجديد.
قم بمراجعة code/lambda/action-lambda/dynamic_examples.csv
من خلال دمج نص جديد في أمثلة SQL التي تتوافق مع مجموعة البيانات الخاصة بك.
قم بمراجعة code/lambda/action-lambda/prompt_templates.py
لعكس سمات بياناتك الجدولية الجديدة.
قم بتعديل حقل context/configure/bedrock_instructions/action_group_description
لملف cdk.json
لتوضيح غرض ووظيفة إجراء lambda المخصص لمجموعة البيانات الخاصة بك.
اعكس الوظائف الجديدة للإجراء lambda الخاص بك في ملف assets/agent_api_schema/artifacts_schema.json
.
في ملف cdk.json
، ضمن context/configure/bedrock_instructions/agent_instruction section
، قم بتقديم وصف شامل للوظيفة المقصودة من Amazon Bedrock Agent والغرض من التصميم، مع الأخذ في الاعتبار البيانات المدمجة حديثًا.
تم تصميم هذه الخطوات لضمان عملية تكامل سلسة وفعالة، مما يتيح لك نشر الحل بفعالية باستخدام بياناتك المخصصة.