الكشف عن الاتصالات المخفية في البيانات المالية غير المنظمة باستخدام Amazon Bedrock وAmazon Neptune
يحتوي هذا المستودع على تعليمات برمجية لنشر حل نموذجي يوضح كيف يمكن الجمع بين الذكاء الاصطناعي التوليدي والرسم البياني للمعرفة لإنشاء نظام قابل للتطوير وقائم على الأحداث وبدون خادم لمعالجة البيانات غير المنظمة للخدمات المالية. يمكن أن يساعد هذا الحل مديري الأصول في مؤسستك في الكشف عن الاتصالات المخفية في محافظهم الاستثمارية ويوفر نموذجًا لواجهة مستخدم سهلة الاستخدام لاستيعاب الأخبار المالية وفهم ارتباطاتها بمحافظهم الاستثمارية.
حالة استخدام الأعمال
يستثمر مديرو الأصول عمومًا في عدد كبير من الشركات في محافظهم الاستثمارية، ويحتاجون إلى أن يكونوا قادرين على متابعة أي أخبار تتعلق بتلك الشركات لأن هذه الأخبار ستساعدهم على البقاء في صدارة تحركات السوق، وتحديد فرص الاستثمار، وإدارة استثماراتهم بشكل أفضل. مَلَفّ.
بشكل عام، يمكن إجراء تتبع الأخبار بسهولة عن طريق إعداد تنبيه إخباري بسيط يعتمد على الكلمات الرئيسية باستخدام اسم الشركة المستثمر فيها، ولكن هذا يصبح صعبًا بشكل متزايد عندما لا يؤثر الحدث الإخباري على الشركة المستثمر فيها بشكل مباشر. على سبيل المثال، يمكن أن يكون التأثير على مورد شركة مستثمر فيها، مما قد يؤدي إلى تعطيل سلسلة التوريد الخاصة بالشركة. أو يمكن أن يكون التأثير على عميل أحد عملاء الشركة المستثمر فيها. إذا تركزت إيرادات هذه الشركات على عدد قليل من العملاء الرئيسيين، فمن المحتمل أن يكون لذلك تأثير مالي سلبي على استثمارك.
يصعب تحديد مثل هذا التأثير من الدرجة الثانية أو الثالثة، بل ويصعب تتبعه. باستخدام هذا الحل الآلي، يمكن لمديري الأصول إنشاء رسم بياني معرفي للعلاقات المحيطة بمحفظتهم الاستثمارية، ثم الاستفادة من هذه المعرفة لاستخلاص الارتباط والرؤى من آخر الأخبار.
بنيان
الرسم البياني لوظيفة الخطوة (من النقطة رقم 4)
تدفق الحل (خطوة بخطوة)
- قم بتحميل التقارير الرسمية/السنوية/10 آلاف (.PDF) إلى حاوية Amazon S3.
- يمكن استرداد اسم حاوية S3 المراد التحميل إليها من وحدة تحكم CloudFormation - إخراج المكدس الرئيسي - "IngestionBucket"
- لاحظ أن التقارير المستخدمة يجب أن تكون تقارير منشورة رسميًا لتقليل تضمين البيانات غير الدقيقة في الرسم البياني المعرفي الخاص بك (على عكس الأخبار/الصحف الشعبية).
- يقوم إشعار حدث S3 بتشغيل وظيفة AWS Lambda التي ترسل اسم حاوية/ملف S3 إلى قائمة انتظار خدمة Amazon Simple Queue (FIFO).
- يهدف استخدام قائمة انتظار ما يصرف أولاً إلى التأكد من تنفيذ عملية استيعاب التقرير بشكل تسلسلي لتقليل احتمالية إدخال بيانات مكررة في الرسم البياني المعرفي الخاص بك.
- يتم تشغيل حدث يستند إلى الوقت في Amazon EventBridge كل دقيقة لاستدعاء وظيفة AWS Lambda. ستقوم الوظيفة باسترداد رسالة قائمة الانتظار التالية المتاحة من SQS وتبدأ في تنفيذ AWS Step Function بشكل غير متزامن.
- يتم تنفيذ آلة الحالة الوظيفية المرحلية من خلال سلسلة من المهام لمعالجة المستند الذي تم تحميله عن طريق استخراج المعلومات الأساسية وإدراجها في الرسم البياني المعرفي الخاص بك.
- المهام
- باستخدام Amazon Textract، قم باستخراج المحتوى النصي من ملف تقرير الوكيل/السنوي/10k (PDF) في Amazon S3 وتقسيمه إلى عدة أجزاء نصية أصغر للمعالجة. قم بتخزين أجزاء النص في Amazon DynamoDB.
- باستخدام Anthropic's Claude v3 Sonnet على Amazon Bedrock، قم بمعالجة الأجزاء القليلة الأولى من النص لتحديد الكيان الرئيسي الذي يشير إليه التقرير، جنبًا إلى جنب مع السمات ذات الصلة (مثل الصناعة).
- يسترد أجزاء النص من DynamoDB ولكل مقطع نص، يستدعي وظيفة lambda لاستخراج الكيانات (الشركة/الشخص)، وعلاقتها (العميل/المورد/الشريك/المنافس/المدير) بالكيان الرئيسي باستخدام Amazon Bedrock.
- توحيد كافة المعلومات المستخرجة
- يقوم بتصفية الضوضاء/الكيانات غير ذات الصلة (أي المصطلحات العامة مثل "المستهلكين") باستخدام Amazon Bedrock.
- استخدم Amazon Bedrock لتوضيح الغموض عن طريق التفكير باستخدام المعلومات المستخرجة مقابل قائمة الكيانات المشابهة من الرسم البياني المعرفي. إذا كان الكيان غير موجود، قم بإدراجه. بخلاف ذلك، استخدم الكيان الموجود بالفعل في الرسم البياني المعرفي. إدراج كافة العلاقات المستخرجة.
- قم بإجراء التنظيف عن طريق حذف رسالة قائمة انتظار SQS وملف S3.
- بمجرد اكتمال هذه الخطوة، يتم تحديث الرسم البياني المعرفي الخاص بك ويصبح جاهزًا للاستخدام.
- يصل المستخدم إلى تطبيق ويب يستند إلى React لعرض المقالات الإخبارية المثرية بمعلومات الكيان/المشاعر/مسار الاتصال.
- يمكن نسخ عنوان URL لتطبيق الويب من وحدة تحكم CloudFormation - إخراج حزمة webapp - "WebApplicationURL"
- نظرًا لأن هذا حل نموذجي للأغراض التجريبية، يحدد المستخدم نقطة نهاية واجهة برمجة التطبيقات ومفتاح واجهة برمجة التطبيقات ومفتاح واجهة برمجة تطبيقات الأخبار في تطبيق الويب من خلال النقر على أيقونة الترس في الزاوية اليمنى العليا.
- يمكن نسخ نقطة نهاية API من وحدة تحكم CloudFormation - مخرجات المكدس الرئيسي - "APIEndpoint".
- يمكن نسخ مفتاح API من وحدة تحكم API Gateway API Key - المكدس الرئيسي.
- يمكن الحصول على مفتاح News API من NewsAPI.org بعد إنشاء حساب مجانًا.
- انقر على زر "تحديث الإعدادات" بعد ملء القيم.
- باستخدام تطبيق الويب، يحدد المستخدم عدد القفزات (الافتراضي N=2) على مسار الاتصال المطلوب مراقبته.
- للقيام بذلك، انقر على أيقونة الترس في الزاوية اليمنى العليا ثم حدد قيمة N.
- باستخدام تطبيق الويب، يحدد المستخدم قائمة الكيانات التي سيتم تتبعها.
- للقيام بذلك، انقر على أيقونة الترس في الزاوية اليمنى العليا ثم قم بتبديل مفتاح "مهتم" الذي يحدد الكيان المقابل على أنه مهتم = نعم/لا.
- هذه خطوة مهمة، ويجب القيام بها قبل معالجة أي مقالات إخبارية.
- لتوليد أخبار خيالية، ينقر المستخدم على زر "إنشاء عينة من الأخبار" لإنشاء 10 عينات من الأخبار المالية بمحتوى عشوائي ليتم إدخالها في عملية استيعاب الأخبار.
- يتم إنشاء المحتوى باستخدام Amazon Bedrock وهو خيالي تمامًا.
- لتنزيل الأخبار الفعلية، ينقر المستخدم على الزر "تنزيل آخر الأخبار" لتنزيل أهم الأخبار التي تحدث اليوم (مدعوم من NewsAPI.org).
- تحميل الأخبار (.TXT) إلى مجموعة S3.
- يمكن استرداد اسم حاوية S3 المراد التحميل إليها من وحدة تحكم CloudFormation - إخراج المكدس الرئيسي - "NewsBucket"
- قامت الخطوتان رقم 8 أو رقم 9 بتحميل الأخبار إلى حاوية S3 تلقائيًا، ولكن يمكنك أيضًا إنشاء عمليات تكامل مع موفر الأخبار المفضل لديك مثل AWS Data Exchange أو أي موفر أخبار تابع لجهة خارجية لإسقاط المقالات الإخبارية كملفات في حاوية S3.
- يجب تنسيق محتوى ملف بيانات الأخبار على النحو التالي: {dd mmm yyyy}{title}{news content}
- يرسل إشعار حدث S3 اسم مجموعة/ملف S3 إلى SQS (قياسي) الذي يقوم بتشغيل وظائف lambda المتعددة لمعالجة بيانات الأخبار بالتوازي.
- باستخدام Amazon Bedrock، تستخرج وظيفة lambda الكيانات المذكورة في الأخبار بالإضافة إلى أي معلومات وعلاقات ومشاعر ذات صلة بالكيان المذكور.
- ثم يقوم بعد ذلك بالتحقق من الرسم البياني المعرفي واستخدام Amazon Bedrock لإجراء توضيح عن طريق التفكير باستخدام المعلومات المتاحة من الأخبار ومن داخل الرسم البياني المعرفي لتحديد الكيان المقابل.
- بمجرد تحديد موقع الكيان، فإنه يبحث بعد ذلك عن أي مسارات اتصال تتصل بالكيانات التي تم وضع علامة "مهتم=نعم" عليها ويعيدها في الرسم البياني المعرفي الذي يقع على مسافة N=2 من الخطوات.
- يتم تحديث تطبيق الويب تلقائيًا كل ثانية واحدة لسحب أحدث مجموعة من الأخبار المعالجة لعرضها على تطبيق الويب.
رد فعل تطبيق الويب - الإعدادات
مستكشف الرسم البياني
ينشر هذا المستودع أيضًا Graph Explorer (github/aws/graphexplorer) وهو تطبيق ويب قائم على React يمكّن المستخدمين من تصور الكيانات والعلاقات المستخرجة.
- للوصول إلى Graph Explorer، قم باسترداد عنوان URL من وحدة تحكم CloudFormation - مخرجات المكدس الرئيسي - "GraphExplorer"
- عند الوصول إلى تطبيق الويب، ستتلقى تحذيرًا بشأن المخاطر الأمنية المحتملة على متصفحك حيث أن الشهادة المستخدمة للموقع موقعة ذاتيًا. يمكنك الاستمرار في المضي قدما. للتخلص من التحذير، اقرأ هذا.
- بمجرد إطلاقه، سيتصل التطبيق تلقائيًا بقاعدة بيانات AWS Neptune وسيقوم بمزامنة بياناته. يمكنك النقر على أيقونة التحديث في أي وقت لإعادة مزامنة البيانات.
- انقر على "فتح مستكشف الرسم البياني" في أعلى اليمين لبدء تصور الرسم البياني المعرفي.
- انتقل إلى github/aws/graphexplorer لمزيد من المعلومات حول Graph Explorer.
- لاحظ أن Graph Explorer ليس مطلوبًا كجزء من الحل ولكنه يسهل عليك استكشاف العلاقات المستخرجة.
العرض التوضيحي - البدء باستخدام Graph Explorer
البدء باستخدام-graph-explorer.mp4
إليك عرض فيديو توضيحي آخر حول ميزات Graph Explorer: رابط للفيديو التوضيحي
مستكشف الرسم البياني - الرسم البياني للمعرفة
(الاستكشاف المرئي لقاعدة بيانات الرسم البياني لـ Amazon Neptune باستخدام أداة Graph Explorer)
تعليمات النشر
يوفر هذا المستودع تطبيق CDK الذي سينشر حل النموذج الأولي بالكامل عبر مجموعتي CDK:
- مكدس التطبيق الرئيسي ("المكدس الرئيسي") الذي يمكن نشره في أي منطقة (على سبيل المثال us-east-1، us-west-2) التي تحتوي على الخدمات المطلوبة ونماذج Amazon Bedrock.
- مكدس تطبيقات الويب ("مكدس webapp") الذي لا يمكن نشره إلا في us-east-1 لأنه يتطلب AWS WAF.
يمكنك نشر المكدسين في مناطق مختلفة، أو في نفس المنطقة (أي us-east-1).
خدمات AWS المستخدمة
- أمازون بيدروك
- أمازون نبتون
- نص الأمازون
- أمازون دينامو دي بي
- وظيفة خطوة AWS
- أوس لامدا
- خدمة أمازون البسيطة لقائمة الانتظار (SQS)
- أمازون إيفنت بريدج
- خدمة التخزين البسيطة من أمازون (S3)
- أمازون كلاودفرونت
- أوس واف
- Amazon Elastic Compute Cloud (EC2)
- أمازون VPC
- بوابة واجهة برمجة تطبيقات أمازون
- AWS لإدارة الهوية والوصول
المتطلبات المسبقة
- Amazon Bedrock - ستحتاج إلى الوصول إلى Anthropic Claude v3 Sonnet. لإعداد الوصول إلى النموذج في Amazon Bedrock، اقرأ هذا.
- بايثون - سوف تحتاج إلى بايثون 3 وما فوق.
- العقدة - سوف تحتاج إلى الإصدار 18.0.0 وما فوق.
- Docker - سوف تحتاج إلى الإصدار 24.0.0 والإصدارات الأحدث مع Docker Buildx، وتشغيل برنامج docker الخفي.
قم بإعداد Virtualenv
لإنشاء Virtualenv يدويًا على نظامي التشغيل MacOS وLinux:
بعد اكتمال عملية init وإنشاء virtualenv، يمكنك استخدام الخطوة التالية لتنشيط virtualenv الخاص بك.
$ source .venv/bin/activate
إذا كنت تستخدم نظام التشغيل Windows، فيمكنك تنشيط Virtualenv مثل هذا:
% .venvScriptsactivate.bat
بمجرد تنشيط Virtualenv، يمكنك تثبيت التبعيات المطلوبة.
$ pip install -r requirements.txt
ما قبل النشر
إذا كانت هذه هي المرة الأولى التي تقوم فيها بنشر التعليمات البرمجية الخاصة بك عبر CDK إلى حساب AWS الخاص بك، فستحتاج أولاً إلى تشغيل حساب AWS الخاص بك في كل من us-east-1 وكذلك المنطقة التي تقوم بالنشر إليها. بخلاف ذلك، يمكنك تخطي هذه الخطوة.
$ cdk bootstrap aws:///us-east-1 aws:///
ثم تابع تشغيل الأمر أدناه من أجل:
- إنشاء تطبيق ويب قائم على React
- قم بتنزيل تبعيات python المطلوبة لإنشاء طبقة AWS Lambda
- نسخ المكتبة المخصصة (connectionsinsights)
نشر
لنشر الحل (يستغرق حوالي 30 دقيقة):
تنظيف
لتدمير الحل:
إذا واجهت فشلًا في الحذف بسبب عدم إفراغ حاويات S3، فقد يكون ذلك بسبب ملفات سجل الوصول المكتوبة إلى حاويات S3 بعد إفراغها كجزء من عملية تدمير cdk. إذا حدث هذا، فما عليك سوى إفراغ تلك الحاويات وإعادة تشغيل أمر التنظيف مرة أخرى.