يستضيف هذا المستودع نموذج رمز يدعم Re: Inforce 2024 Code Talk with Session ID DAP341. الكود في هذا المستودع بسيط عن قصد لتحسين قابلية القراءة أثناء الجلسة ، وليس مخصصًا للاستخدام في إعداد الإنتاج.
الهدف من الكود في هذا المستودع هو إظهار النواة الوظيفية لخط chatbot المعزز للاسترجاع (RAG) ، مع تسليط الضوء على بعض اعتبارات حماية البيانات ذات الصلة بأعباء عمل الذكاء الاصطناعي بشكل عام.
إذا كنت ترغب في نشر حالة استخدام نمط chatbot Rag مع AWS في الإنتاج ، ففكر في أحد الخيارات التالية:
يحتوي هذا المستودع على سلسلة من "البرامج النصية" Python التي يمكن تنفيذها لإظهار سلسلة من الأفكار. يتم ترقيم البرامج النصية لأنها ، عند تنفيذها بالتتابع ، تحكي قصة حول كيفية عمل chatbot Rag ، وكيف يمكن حماية البيانات داخل عبء العمل المستند إلى Genai. ومع ذلك ، فإن البرامج النصية كلها مستقلة ومستقلة ولا تحتاج إلى تشغيلها بالتتابع.
يجب تعديل بعض البرامج النصية للبيثون المتوفرة هنا قبل تشغيلها. يتم تخزين البرامج النصية هنا تمامًا كما هو موضح في العرض التقديمي للاتساق. يتم شرح الحالات التي يجب عليك فيها تحديث البرنامج النصي مع #UPDATE_TO_RUN_YOURSELF .
يمكن توفير موارد AWS المطلوبة لتشغيل نصوص Python مثال ، على سبيل المثال ، مؤشر Amazon Kendra ، ومثال بيانات ، وما إلى ذلك ، من قبل مستخدم هذا المستودع ، ولكن فيما يلي تعليمات لكيفية إنشاء هذه الموارد.
إن موارد AWS الرئيسية التي يجب إنشاؤها والإشارة إليها قبل أن تعمل البرامج النصية Python هي مؤشر Amazon Kendra ومصدر بيانات Kendra المصاحب الذي يشير إلى بيانات على دلو Amazon S3. لاحظ أن مؤشر Amazon Kendra له تكلفة غير مؤهلة ، ويجب توخي الحذر لفهم هذه التكاليف قبل نشر هذا الحل.
يهدف الرمز المقدم في هذا المستودع إلى أن يكون مكملاً لنشر منشئ تطبيق AI التوليدي على AWS. إذا قمت بنشر منشئ تطبيق AI التوليدي على AWS ، وتابعت نشر "استخدام نص" استخدام حالة "استخدام" مع تمكين خيار "RAG" ، يمكن إنشاء فهرس Kendra لك كما هو موضح في القسم التالي:
نشر منشئ تطبيق AI التوليدي على حل AWS لكل دليل النشر.
من حيث صلته بحماية البيانات ، فكر في نشر الحل مع تمكين خيار VPC ، مما يقلل من حركة المرور التي تتدفق عبر الإنترنت العام عن طريق الاستفادة من نقاط نهاية VPC.
بعد نشر لوحة معلومات النشر ، ستتمكن من نشر حالة الاستخدام.
عند نشر حالة استخدام ، حدد خيار text . في قسم Select knowledge base ، حدد yes إلى خيار RAG ، واختر Kendra كقاعدة المعرفة ، وإذا لم يكن لديك بالفعل فهرس Kendra ، فحدد no "هل لديك فهرس Kendra موجود؟" لإنشاء واحد لك. جميع القيم الافتراضية الأخرى على ما يرام ، ولكن اضبط إذا/حسب الحاجة لتناسب احتياجاتك.
بمجرد نشر منشئ تطبيقات AI التوليدي الخاص بك ، سيكون لديك مؤشر Amazon Kendra. تحتاج الآن إلى إضافة مصدر بيانات Kendra إلى هذا الفهرس. أولاً ، قم بإنشاء أو إعادة استخدام دلو Amazon S3 موجود لتخزين البيانات. قم بتحميل محتويات دليل data ، وكذلك src/kendra-acl.json في هذا المستودع لهذا الدلو S3 بحيث يبدو الهيكل الناتج مثل هذا:
engineering/rootrunner3k-techspecs.txt
wiki/ecorobopotato.txt
kendra-acl.json
انتقل إلى مؤشر Amazon Kendra الخاص بك في وحدة التحكم في إدارة AWS ، واختر خيار Add Data Sources . اختر خيار Amazon S3 connector . أعط مصدر البيانات اسمًا. إنشاء دور IAM ، أو استخدم دور موجود حسب الرغبة. عند Configure sync settings ، أدخل موقع S3 Bucket ، قم بتعيين ملف kendra-acl.json في إعداد Access control list configuration file location ، وتوسيع Additional configuration ، وإضافة engineering marketing كبادئ لفهرسة. جميع القيم الافتراضية الأخرى كافية لإنشاء ونشر مصدر بيانات Kendra الخاص بك. بمجرد إنشاء مصدر البيانات ، يجب عليك بدء تشغيل sync مصدر البيانات مرة واحدة على الأقل ، وانتظر هذا المزامنة لإكمالها قبل تشغيل أي نصوص Python.
قبل أن تتمكن من استدعاء أي طرز الأساس Amazon ، يجب عليك تمكين الوصول إلى النموذج. يستخدم هذا المستودع Claude 3 Sonnet ، لذلك على الأقل يجب تمكين هذا النموذج.
من أجل تشغيل ملف Python CloudWatch على وجه التحديد ، يجب عليك تمكين تسجيل استدعاء طراز Bedrock Amazon ، وتحديداً مع وجهة سجل Amazon CloudWatch.
كجزء من هذه العملية ، ستقوم بإنشاء مجموعة سجلات CloudWatch ، والتي يجب تحديثها في البرنامج النصي المصاحب للبيثون.
لتشغيل البرامج النصية Python المتعلقة بدراسات الأساس ، يجب عليك إنشاء دراسة الأساس. للقيام بذلك باستخدام وحدة التحكم في إدارة AWS ، انتقل إلى خدمة Amazon Bedrock وحدد قسم الدرابزين. اختر Create guardrail . امنحه اسمًا وقم بإعداده مع الإعدادات الافتراضية أو أي خيارات تفضلها. ومع ذلك ، تأكد من أنه في قسم Add sensitive information filters ، يمكنك إضافة نوع Address PII ، وحدد Mask كسلوك الدرابزين. هذا يضمن أن الدرابزين الخاص بك سوف يكرر السلوك الذي يهدف إلى الظهور في البرامج النصية Python في هذا المشروع.
يهدف ملفات Markdown ، والصور ، وملف رمز Python في دليل src إلى رؤيته وتنفيذه بالترتيب المحدد بواسطة مخطط الترقيم الخاص بهم. على النحو التالي هو تفسير لكل ملف للمساعدة في توجيه القارئ من خلال نية العرض التقديمي الذي يصاحب عينات التعليمات البرمجية هذه.
يعطي النقطة الرئيسية لمقتطفات التعليمات البرمجية هذه ، والتي تهدف إلى إظهار رمز بيثون مبسط للغاية يمكن قراءته ويوضح كيف تعمل RAG على المستوى الأساسي ، مع تسليط الضوء أيضًا على اعتبارات حماية البيانات لأعباء عمل Genai على نطاق أوسع.
الصورة المستخدمة لتقديم المنتج والمؤسسة النظرية التي نستخدمها. البيانات سخيفة عن قصد حتى لا يكون لدى LLMs أي بيانات تدريب تتعلق بهذا المنتج أو المؤسسة الافتراضية. ومع ذلك ، نظرًا لأن هذا المستودع المصاحب الآن مفتوح المصدر ، فمن المحتمل أن يستخدم LLM في النهاية هذا المستودع كمصدر لبيانات التدريب ، والذي قد يكسر هذا الافتراض في النهاية!
يعرض ببساطة محتويات دلو Amazon S3 الذي قمنا بإعداده والذي يحتوي على بيانات المصدر لدينا. كما يسلط الضوء على نوع التشفير لهذه البيانات على S3 للتأكيد على أهمية تشفير البيانات في الراحة.
يطبع بعض المعلومات الأساسية حول مؤشر Amazon Kendra الخاص بنا لتقديم مفهوم Kendra وكيف يمكنها إجراء عمليات تفتيش دلالية ضد مصادر البيانات الخاصة بنا.
يوضح استدعاء API retrieve مقابل مؤشر Kendra الخاص بنا ، والذي يسترجع السياق بناءً على السؤال الذي نطرحه.
يستدعي Amazon Bedrock ويسأل سؤالًا لا علاقة له ببياناتنا الافتراضية. يهدف هذا إلى توضيح كيفية قدرة LLM على الإجابة على العديد من الأسئلة حول الأشياء المتوفرة للجمهور ، لأن LLMs غالبًا ما يتم تدريبها على كميات هائلة من البيانات المكسورة من الإنترنت المفتوح.
يدعو Bedrock ويسأل سؤالاً حول بياناتنا الملكية. يوضح كيف لا يمكن لـ LLM الإجابة على أسئلة حول البيانات ذات الملكية ولم تكن جزءًا من مجموعة بيانات التدريب الخاصة بها.
يدعو أولا كيندرا لاسترداد السياق ذي الصلة من بيانات الملكية الخاصة بنا ، ثم يستخدم هذا السياق عند استدعاء LLM في Amazon Bedrock. يسمى هذا النمط الجيل المعزز للاسترجاع ، أو خرقة.
يضيف في قائمة التحكم في الوصول في المكالمة إلى Amazon Kendra. نظرًا لأنه لا يُسمح لمجموعتنا "التسويق" بالوصول إلى وثيقة المواصفات الفنية من Kendra ، فإن إجابتنا لا تتضمن تفاصيل حول المحتوى الذي لا يُسمح للتسويق بعرضه. يوضح هذا كيف يمكننا تحقيق ترخيص على مستوى المستند عند استخدام نهج قائم على القطع. تجدر الإشارة إلى أنه إذا استخدمت بدلاً من ذلك بيانات الملكية الخاصة بك لإجراء عملية صقل أو استمرار التدريب المسبق لتخصيص LLM ، فإنك تفقد هذه القدرة على القيام بالترخيص الدقيق على مستوى المستند ؛ يمكن للمستخدمين إما الوصول إلى هذا النموذج المخصص أو لا يفعلون ذلك.
يقوم باستعلام خرقة يتضمن عنوانًا محددًا. ولكن ربما لا نريد عناوين أو أنواع أخرى من PII أو محتوى حساس/ضار يتم تضمينه في chatbot لدينا ...
ببساطة يسرد بعض سماتنا لسمات Bedrock Bedrock التي نستخدمها في الخطوة التالية. على وجه التحديد ، نرى أن جائزة Redacts تتناول أنواع بيانات.
يؤدي نفس المكالمة المستندة إلى RAG على أنها 09_RAG_ADDRESS.PY ، ولكنها تضيف في Bedrock Gasslail كجزء من المكالمة إلى الأساس. وهذا بدوره ينشق العنوان المحدد بيانات PII من الاستجابة.
يسرد 3 مثيلات CloudTrail الحديثة لاستدعاء الأساس. هذا يوضح ببساطة كيف يمكن أن تستخدم CloudTrail لتدقيق استخدام خدمة الأساس الأمازون. تقوم خدمات AWS الأخرى أيضًا بإنشاء أحداث CloudTrail ، ويمكن استخدام هذه البيانات لتدقيق وحماية موارد AWS الخاصة بك.
يسرد 3 سجلات CloudWatch نموذج الاحتجاج الحديثة. يوضح هذا كيفية تضمين بياناتك في سجلات استدعاء نموذج CloudWatch. لذلك ، إذا قمت بتمكين سجلات الاحتجاج النموذجية ، فيجب عليك حمايتها بنفس مستوى الرعاية التي تحميها لمصدر البيانات نفسه.
بعد تشغيل البرامج النصية Python ، سيتم توجيهك من خلال بعض الأمثلة التي توضح اعتبارات حماية البيانات لأعباء عمل الذكاء الاصطناعي. بعض أدوات الاستيلاء الرئيسية هي:
لا تزال أساسيات حماية البيانات تنطبق.
يقدم AI التوليدي بعض الاعتبارات الجديدة
انظر المساهمة لمزيد من المعلومات.
هذه المكتبة مرخصة بموجب ترخيص MIT-0. انظر ملف الترخيص.