Foundational LLM Chat هو تطبيق Chainlit تم إنشاؤه باستخدام AWS CDK وConverse API الذي يسمح لك بالتفاعل مع نموذج لغة Amazon Bedrock. فهو يوفر واجهة سهلة الاستخدام للدردشة مع Amazon Bedrock LLMs وتحميل الصور أو المستندات وتلقي استجابات متعددة الوسائط. يتم نشر التطبيق على AWS باستخدام خدمات متنوعة مثل Amazon Bedrock وAmazon Elastic Container Service وAmazon Cognito وAmazon CloudFront والمزيد.
يوضح مخطط البنية نشر AWS لتطبيق Foundational LLM Chat. يتفاعل المستخدمون مع التطبيق من خلال واجهة ويب مؤمنة بواسطة مصادقة Amazon Cognito. يتم توزيع التطبيق عالميًا باستخدام CDN الخاص بـ Amazon CloudFront. داخل منطقة AWS محددة، يتم نشر التطبيق عبر مناطق توافر الخدمات المتعددة باستخدام Amazon ECS للنشر في حاويات. تتكامل الواجهة الخلفية مع Amazon Bedrock للاستفادة من نماذج اللغات المختلفة، مما يتيح للمستخدمين المشاركة في محادثات متعددة الوسائط مع مساعد الذكاء الاصطناعي.
يتم تكوين التطبيق من خلال ملف config.json
في المجلد ./bin
. تتضمن خيارات التكوين الرئيسية ما يلي:
default_system_prompt
: يحتوي هذا الحقل على موجه النظام الافتراضي الذي سيتم استخدامه بواسطة chatbot إذا لم يتم تحديده أدناه في حقل bedrock_models
. وهو يحدد التعليمات والسلوك الأولي لمساعد الذكاء الاصطناعي. يمكنك تعديل هذه القيمة لتغيير شخصية المساعد أو المطالبة الأولية.
max_characters_parameter
: يحدد هذا الحقل الحد الأقصى لعدد الأحرف المسموح بها في نص الإدخال. إذا تم ضبطها على السلسلة "None"
، فلن يكون هناك حد لعدد الأحرف. يمكنك تغيير هذه القيمة لتحديد طول نص الإدخال إذا رغبت في ذلك.
max_content_size_mb_parameter
: يعين هذا الحقل الحد الأقصى لحجم محتوى الإدخال (مثل الصور) بالميجابايت. إذا تم التعيين على السلسلة "None"
، فلن يكون هناك حد للحجم. يمكنك تعديل هذه القيمة لتقييد الحد الأقصى لحجم محتوى الإدخال.
default_aws_region
: يحدد هذا الحقل منطقة AWS حيث يتم نشر التطبيق. يمكنك أيضًا تعيين المنطقة لكل حقل من حقول نموذج Amazon Bedrock.
prefix
: يتيح لك هذا الحقل تعيين بادئة لأسماء الموارد التي أنشأها التطبيق. يمكنك تركه فارغًا أو تقديم بادئة مخصصة إذا رغبت في ذلك.
يحتوي هذا الحقل على قاموس لنماذج Bedrock التي يمكن لروبوت الدردشة استخدامها. يتم تعريف كل نموذج بواسطة مفتاح (على سبيل المثال، "Sonnet"، "Haiku") والمفتاح هو الاسم المستخدم في ملف تعريف Chainlit Chatprofile. يحتوي كل نموذج على الخصائص التالية على الأقل:
id
: المعرف أو ARN لنموذج Amazon Bedrock. يمكنك العثور على معرفات النماذج المتاحة في وثائق AWS.region
: مجموعة من المناطق المستخدمة للوصول إلى النموذج. واحد إذا لم تقم بتمكين الاستدلال عبر المناطق، فهو متعدد للاستدلال عبر المناطق.تتضمن معلمات التكوين الاختيارية ما يلي:
inference_profile
: إعدادات الاستدلال عبر المناطقprefix
: بادئة المنطقة (على سبيل المثال، "نحن")region
: منطقة الاستدلال الأوليةsystem_prompt
: موجه النظام المخصصcost
: معلومات التسعيرinput_1k_price
: التكلفة (بالدولار الأمريكي) لـ 1000 رمز إدخال. يمكنك العثور على معلومات التسعير للنماذج المختلفة على صفحة تسعير AWS Bedrock.output_1k_price
: التكلفة (بالدولار الأمريكي) لـ 1000 رمز إخراج.vision
[اختياري] : صحيح أو خطأ. إذا تم تمكين قدرات الرؤية للنموذج.document
[اختياري] : صحيح أو خطأ. إذا تم تمكين إمكانات المستند](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html) للنموذج.tool
[اختياري] : صح أو خطأ. إذا تم تمكين إمكانات الأدوات](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html) للنموذج.default
[اختياري] : صحيح أو خطأ. النموذج الافتراضي المحدد يمكنك تعديل قسم bedrock_models
ليشمل نماذج إضافية أو تحديث النماذج الموجودة وفقًا لمتطلباتك.
فيما يلي مثال لكيفية استرداد معرف النموذج ومعلومات التسعير:
للعثور على معرف النموذج أو ARN، راجع وثائق معرفات نموذج AWS Bedrock. على سبيل المثال، معرف نموذج Claude 3 Sonnet هو anthropic.claude-3-sonnet-20240229-v1:0
.
للعثور على معلومات التسعير، راجع وثائق تسعير AWS Bedrock. بالنسبة لنموذج Claude 3 Sonnet، فإن تسعير المدخلات والمخرجات هو كما يلي:
بعد إجراء التغييرات المطلوبة على ملف config.json
، يمكنك متابعة النشر كما هو موضح في الملف README.
هنا مثال على json:
{
"default_system_prompt" : " you are an assistant " ,
"max_characters_parameter" : " None " ,
"max_content_size_mb_parameter" : " None " ,
"default_aws_region" : " us-west-2 " ,
"prefix" : " " ,
"bedrock_models" : {
"Claude Sonnet 3.5 New" : {
"system_prompt" : " you are an assistant " ,
"id" : " us.anthropic.claude-3-5-sonnet-20241022-v2:0 " ,
"inference_profile" : {
"prefix" : " us " ,
"region" : " us-west-2 "
},
"region" : [ " us-east-1 " , " us-west-2 " , " us-east-2 " ],
"cost" : {
"input_1k_price" : 0.003 ,
"output_1k_price" : 0.015
},
"default" : true ,
"vision" : true ,
"document" : true ,
"tool" : true
},
"Meta Llama 3.2 90B Vision Instruct" : {
"id" : " us.meta.llama3-2-90b-instruct-v1:0 " ,
"inference_profile" : {
"prefix" : " us " ,
"region" : " us-west-2 "
},
"region" : [ " us-east-1 " , " us-west-2 " ],
"cost" : {
"input_1k_price" : 0.002 ,
"output_1k_price" : 0.002
},
"vision" : true ,
"document" : true ,
"tool" : true
},
"Mistral Large 2" : {
"id" : " mistral.mistral-large-2407-v1:0 " ,
"cost" : {
"input_1k_price" : 0.003 ,
"output_1k_price" : 0.009
},
"vision" : false ,
"document" : true ,
"tool" : true
}
}
}
يستفيد التطبيق من Amazon Bedrock Prompt Manager من أجل:
يدعم التطبيق حاليًا استبدالين متغيرين تلقائيين:
%Y-%m-%d
من اليوم؛%Y-%m-%d %H:%M:%S UTC
يمكنك تحرير وظيفة extract_and_process_prompt
داخل chainlit_image/foundational-llm-chat_app/massages_utils.py
لإضافة المزيد من البدائل المباشرة.
يستخدم التطبيق واجهة برمجة تطبيقات Converse الخاصة بـ Amazon Bedrock، مما يوفر:
يتم تخزين جميع مطالبات النظام وإدارتها من خلال Amazon Bedrock Prompt Manager، مما يوفر ما يلي:
عند استخدام مطالبات النظام لتكوين سلوك نماذج اللغة، فمن الضروري مراعاة الآثار الأمنية واتخاذ التدابير اللازمة لمنع إساءة الاستخدام المحتملة أو نقاط الضعف. أحد المخاطر المهمة هو الحقن الفوري ، حيث يمكن للمدخلات الضارة أن تتلاعب بموجه النظام بطرق غير مقصودة، مما قد يؤدي إلى مخرجات ضارة أو متحيزة.
نقطة البداية الجيدة هي الدليل التالي: التخفيف من عمليات كسر الحماية والحقن الفوري.
تشير الهندسة السريعة إلى ممارسة صياغة المطالبات أو التعليمات بعناية لتوجيه نماذج اللغة في توليد المخرجات المطلوبة. تعد الهندسة السريعة الفعالة أمرًا بالغ الأهمية لضمان فهم النماذج اللغوية للسياق والمهمة المحددة والاستجابة لها بشكل مناسب.
تهدف الدورة التدريبية التالية إلى تزويدك بفهم شامل خطوة بخطوة لكيفية تصميم المطالبات المثالية داخل Claude، باستخدام Bedrock: Prompt Engineering with Anthropic Claude v3.
يغطي هذا الدليل مختلف التقنيات وأفضل الممارسات للهندسة السريعة من خلال سلسلة من الدروس والتمارين، مقسمة إلى ثلاثة مستويات: المبتدئ والمتوسط والمتقدم.
من خلال اتباع المبادئ والتقنيات الموضحة في هذا الدليل، يمكنك تحسين أداء وموثوقية تطبيقات نماذج اللغة الخاصة بك، مما يضمن قيام مساعد الذكاء الاصطناعي بإنشاء استجابات أكثر صلة وتماسكًا ووعيًا بالسياق.
نوصي بالنشر باستخدام AWS Cloud9. إذا كنت ترغب في استخدام Cloud9 لنشر الحل، فستحتاج إلى ما يلي قبل المتابعة:
m5.large
على الأقل كنوع المثيل.Amazon Linux 2023
كمنصة. إذا قررت عدم استخدام AWS Cloud9، فتأكد من أن بيئتك تستوفي المتطلبات الأساسية التالية:
تأكد من أن بيئتك تستوفي المتطلبات الأساسية التالية:
لديك:
حساب AWS
سياسة وصول تسمح لك بإنشاء الموارد الموجودة في نموذج AWS
كل من وحدة التحكم والوصول البرمجي
تم تثبيت NodeJS lts
nvm
فيمكنك تشغيل ما يلي قبل المتابعة nvm install --lts
تم تثبيت NPM
nvm
فيمكنك تشغيل ما يلي قبل المتابعة nvm install-latest-npm
تم تثبيت AWS CLI وتكوينه للاستخدام مع حساب AWS الخاص بك
تم تثبيت AWS CDK CLI
تم تثبيت Finch أو تثبيت Docker
تمكين الوصول إلى نماذج Amazon Bedrock في منطقة النشر: كيفية تمكين الوصول إلى نماذج Amazon Bedrock.
تمكين واحد على الأقل من:
قم باستنساخ المستودع، وافتح المجلد، وقم بتثبيت التبعيات:
git clone https://github.com/aws-samples/foundational-llm-chat.git
cd foundational-llm-chat
npm install
[اختياري فقط إذا لم تقم بذلك من قبل في منطقة النشر] تمهيد بيئة CDK:
cdk bootstrap
بناء ونشر المكدس:
cdk deploy --region YOUR_DEPLOY_REGION
حيث YOUR_DEPLOY_REGION هي منطقة AWS التي ترغب في نشر التطبيق فيها. على سبيل المثال: us-west-2
.
إذا كنت تستخدم Finch بدلاً من Docker، فيرجى إضافة CDK_DOCKER=finch
في بداية الأمر كما في المثال التالي:
CDK_DOCKER=finch cdk deploy --region us-west-2
سيؤدي هذا إلى إنشاء جميع الموارد اللازمة على AWS، بما في ذلك مجموعة ECS، وتجمع مستخدمي Cognito، وتوزيع CloudFront، والمزيد.
بعد اكتمال النشر، سيتم عرض عنوان URL لتوزيع CloudFront في الجهاز الطرفي. استخدم عنوان URL هذا للوصول إلى تطبيق Foundational-llm-chat.
بعد النشر سوف تحصل على شيء مشابه لهذا:
✅ Foundational-LLM-ChatStack
Deployment time: 465.09s
Outputs:
FoundationalLlmChatStack.CognitoUserPool = ID
FoundationalLlmChatStack.NetworkingFoundationalLlmChatChatbotStack = CLOUDFRONT_DISTRIBUTION_ADDRESS
FoundationalLlmChatStack.ecsApplicationFoundationalLlmChatServiceLoadBalancer = ECS_LOAD_BALANCER
FoundationalLlmChatStack.ecsApplicationFoundationalLlmChatServiceServiceURL = ECS_LOAD_BALANCER_ADDRESS
Stack ARN: ARN
Total time: 469.14s
تتم الإشارة إلى توزيع Amazon CloudFront في السطر التالي: FoundationalLlmChatStack.NetworkingFoundationalLlmChat = CLOUDFRONT_DISTRIBUTION_ADDRESS
foundational-llm-chat-user-pool
. افتح مجمع المستخدمين هذا وأنشئ مستخدمًا يتحقق أيضًا من عنوان البريد الإلكتروني؛لتجنب تكبد تكاليف غير ضرورية، يوصى بتنظيف وحذف الموارد التي أنشأتها هذه العينة عند الانتهاء من استخدامها. اتبع هذه الخطوات لحذف المكدس والموارد المرتبطة به:
Foundational-LLM-ChatStack
.سيؤدي هذا إلى حذف المجموعة بأكملها، بما في ذلك مجموعة ECS ومجمع مستخدمي Cognito وتوزيع CloudFront وجميع الموارد الأخرى المرتبطة.
وبدلاً من ذلك، يمكنك استخدام AWS CDK لحذف المكدس من سطر الأوامر:
cdk destroy --region YOUR_DEPLOY_REGION
استبدل YOUR_DEPLOY_REGION
بمنطقة AWS التي قمت بنشر التطبيق فيها.
لاحظ أن حذف المكدس لن يؤدي تلقائيًا إلى حذف سجلات CloudWatch وتعريف مهمة Amazon ECS الذي تم إنشاؤه أثناء النشر. قد ترغب في حذف هذه الموارد يدويًا إذا لم تعد بحاجة إليها لتجنب تكبد تكاليف إضافية.
في حين أن البنية الحالية توفر نقطة بداية جيدة لنشر تطبيق Foundational LLM Chat، إلا أن هناك اعتبارات إضافية للنشر الجاهز للإنتاج:
في البنية الحالية، يتم الاتصال بين توزيع CloudFront وApplication Load Balancer (ALB) عبر HTTP. لنشر الإنتاج، يوصى بشدة باستخدام HTTPS (TLS/SSL) للاتصال الآمن:
يؤدي تمكين HTTPS مع إنهاء TLS على كلا المستويين (مهام ALB وECS) إلى ضمان التشفير الشامل وتعزيز أمان التطبيق.
نموذج AWS هذا مخصص للأغراض التوضيحية والتعليمية فقط. إنه غير مصمم للاستخدام الإنتاجي دون مزيد من التعديلات والتصلب. قبل نشر هذا التطبيق في بيئة الإنتاج، من الضروري إجراء اختبارات شاملة وتقييمات أمنية وتحسينات بناءً على متطلباتك المحددة وأفضل الممارسات.
يمكن الحصول على مطالبات النظام الخاصة بـ claude مباشرةً من الوثائق الأنثروبيكية هنا: مطالبات النظام
المساهمات هي موضع ترحيب! يرجى اتباع سير عمل Git المعتاد:
هذه المكتبة مرخصة بموجب ترخيص MIT-0. انظر ملف الترخيص.
يجب أن تفكر في إجراء تقييم مستقل قبل استخدام المحتوى الموجود في هذه العينة لأغراض الإنتاج. وقد يشمل ذلك (من بين أمور أخرى) اختبار المحتوى المقدم في هذه العينة وتأمينه وتحسينه، استنادًا إلى ممارسات ومعايير مراقبة الجودة المحددة لديك.