بناء محلل بيانات ذكي باستخدام Python معزول والتحكم في الوصول إلى الحزم

بناء محلل بيانات ذكي باستخدام Python معزول والتحكم في الوصول إلى الحزم

يحتاج محلل البيانات الذكي إلى بيئة Python معزولة عندما يتطلب الأمر تشغيل مجموعات البيانات المقدمة من المستخدم، والكود المُنشأ بواسطة النموذج، وتثبيت الحزم، والرسوم البيانية المُنشأة، والمخرجات القابلة للتنزيل في بيئة منعزلة وقابلة للمراقبة. تدفق التنفيذ العملي هو: رفع ملف، فحص المخطط باستخدام كود موثوق، سؤال النموذج عن خطة، مراجعة كود Python المُنشأ، تشغيله في بيئة معزولة مقيدة، التحقق من القطع الأثرية الناتجة، وعرض ما حدث للمستخدم.

بنية محلل البيانات الذكي: رفع، تحليل، مراجعة

نمط المنتج بسيط على السطح: يقوم المستخدم برفع ملف CSV، ويطرح سؤالاً بلغة طبيعية، ويتوقع جداول ورسوم بيانية وملفات قابلة للتنزيل مفيدة. تحت الغطاء، يقوم التطبيق بتشغيل سير عمل وكيل صغير مع آثار جانبية حقيقية. يقوم النموذج بتخطيط التحليل وصياغة Python، بينما يقرر التطبيق ما هو مسموح به من كود، وحزم، وملفات، ووصول للشبكة، ومخرجات.

قم ببناء الإصدار الأول حول مسار واحد واضح:

  1. قبول رفع ملف CSV لوظيفة تحليل واحدة.
  2. إنشاء مساحة عمل معزولة مخصصة للوظيفة.
  3. تشغيل كود فحص المخطط المملوك قبل سؤال النموذج عن Python.
  4. سؤال النموذج عن خطة تحليل، ثم نص برمجي يتبع قواعد الملفات والحزم الخاصة بك.
  5. تنفيذ النص البرمجي مع حدود زمنية، وذاكرة، وقرص، وحزم، وشبكة.
  6. جمع القطع الأثرية المُحققة فقط من دليل مخرجات معروف.
  7. عرض الإجابة والرسوم البيانية والتحذيرات والسجلات والملفات المحددة للتنزيل للمستخدم.

يحافظ هذا الفصل على وضوح المسؤوليات. النموذج يقترح التحليل ويشرحه. الواجهة الخلفية تطبق سياسة المنتج والتنسيق. البيئة المعزولة تشغل الكود مع ملفات وحزم ووقت وذاكرة ووصول للشبكة وأسرار مقيدة.

ما الذي يعمل داخل بيئة Python معزولة لتحليل البيانات؟

ضع مساحة عمل التحليل داخل البيئة المعزولة، وليس داخل خادم التطبيق الرئيسي الخاص بك. يجب أن تستقبل البيئة المعزولة حزمة إدخال ضيقة لوظيفة تحليل واحدة: الملف المرفوع، وبيان صغير، ونص برمجي مُنشأ، وأي تكوين وقت تشغيل معتمد. يجب أن تحتفظ الواجهة الخلفية للتطبيق بالمصادقة، والفواتير، وهوية المستخدم، والتخزين طويل الأمد، والأسرار الإنتاجية خارج مساحة العمل هذه.

بالنسبة لمحلل بيانات ذكي، عادةً ما تمتلك البيئة المعزولة هذه المهام:

مهمة البيئة المعزولة لماذا تنتمي إلى هناك
إعداد الملفات يمكن فحص ملف CSV المرفوع ونسخه إلى دليل عمل معزول قبل أن يلمسه Python.
فحص المخطط يمكن للتطبيق استنتاج أسماء الأعمدة، والأنواع، ونسب القيم الخالية، وعدد الصفوف، وقيم العينة دون تعريض الملف الكامل للنموذج.
تنفيذ Python يتم تشغيل الكود المُنشأ بواسطة النموذج بعيدًا عن خادم التطبيق ويمكن تحديد زمن تنفيذه.
تجهيز الحزم يتم تثبيت أو توفير التبعيات المعتمدة فقط للوظيفة.
عرض الرسوم البيانية تُكتب صور الرسوم البيانية كملفات وتُفحص قبل التنزيل.
تجهيز النتائج يمكن جمع القطع الأثرية النهائية من دليل مخرجات معروف.
التنظيف يمكن حذف الملفات المؤقتة، والكود المُنشأ، وحالة الجلسة أو السماح بانتهاء صلاحيتها.

اجعل موجه النموذج أصغر من البيانات. أرسل ملخص المخطط، وبعض الصفوف التمثيلية إذا كانت السياسة تسمح بذلك، وأوصاف الأعمدة، ونية المستخدم، والقيود مثل “لا تقم بتدريب نموذج” أو “استخدم الحزم المعتمدة فقط”. يجب أن تبقى مجموعة البيانات الخام في نظام ملفات البيئة المعزولة ما لم يكن لمنتجك سبب محدد ومراجع لعرض المزيد.

كيف يجب أن يعمل رفع ملف CSV وفحص المخطط؟

ابدأ بمعالجة كل رفع كإدخال غير موثوق. تحقق من نوع الملف، وحجمه، والتشفير، والمحدد، وعدد الصفوف، وعدد الأعمدة، والصيغ المشبوهة قبل إشراك النموذج. لا يزال بإمكان ملف CSV احتواء قيم تؤدي إلى تنفيذ صيغ جداول البيانات عند فتحها لاحقًا، لذلك يجب تعقيم الملفات المُصدرة للتنسيق المستهدف أيضًا.

يبدو تدفق الرفع العملي كما يلي:

  1. يقوم المستخدم برفع ملف CSV إلى التطبيق.
  2. تخزن الواجهة الخلفية الملف الأصلي تحت مفتاح كائن مخصص للوظيفة أو مسار مرحلي.
  3. تقوم الواجهة الخلفية بإنشاء جلسة بيئة معزولة للوظيفة.
  4. تنسخ الواجهة الخلفية الملف إلى دليل عمل البيئة المعزولة.
  5. يقرأ نص برمجي صغير وحتمي للفحص الملف وينتج ملخصًا للمخطط.
  6. يتلقى النموذج ملخص المخطط، وسؤال المستخدم، والمكتبات المسموح بها، ومتطلبات المخرجات.

يجب أن تكون خطوة الفحص كودًا حتميًا تمتلكه أنت، وليس كودًا مُنشأ بواسطة النموذج. يمكن أن ينتج ملخص JSON مضغوطًا مثل هذا:

{
  "file": "sales.csv",
  "rows": 84231,
  "columns": [
    {"name": "order_date", "type": "date", "null_rate": 0.01},
    {"name": "region", "type": "string", "sample_values": ["NA", "EMEA", "APAC"]},
    {"name": "revenue", "type": "number", "null_rate": 0.0}
  ],
  "safe_sample_rows": 5
}

يعطي هذا الملخص للنموذج سياقًا كافيًا لصياغة تحليل دون تسليم مجموعة البيانات بالكامل إليه. بالنسبة لأعباء العمل الحساسة، قلل أو أزل قيم العينة، أو قنّع الأعمدة، أو اطلب من المستخدم الموافقة على الأعمدة التي يمكن استخدامها.

كيف يقوم النموذج بتوليد وتشغيل Python بأمان؟

يجب أن ينتج النموذج خطة قبل إنتاج الكود. تحدد الخطة الجيدة الأعمدة التي سيستخدمها، والتحويلات التي يعتزم تشغيلها، والرسوم البيانية التي يتوقع إنشاءها، وملفات المخرجات التي سيكتبها. هذا يعطي تطبيقك نقطة تفتيش للسياسة ومراجعة المستخدم.

بعد قبول الخطة، اطلب Python يتبع عقدًا ضيقًا:

  • قراءة ملفات الإدخال فقط من دليل input/.
  • كتابة القطع الأثرية فقط إلى دليل output/.
  • استخدام الحزم المعتمدة فقط.
  • تجنب استدعاءات الشبكة ما لم تسمح سياسة الوظيفة بذلك صراحةً.
  • طباعة ملخص منظم في النهاية.
  • الفشل بوضوح عند فقدان الأعمدة المطلوبة.

على المستوى المفاهيمي، تبدو حلقة التنسيق هكذا:

job = create_analysis_job(user_id, uploaded_file)
sandbox = create_sandbox(job_id=job.id, timeout_seconds=300)

copy_file_to_sandbox(uploaded_file, sandbox_path="/work/input/data.csv")
schema = run_owned_schema_inspector(sandbox, "/work/input/data.csv")

plan = ask_model_for_analysis_plan(
    user_question=job.question,
    schema=schema,
    allowed_packages=["pandas", "numpy", "matplotlib"],
    output_contract={"directory": "/work/output", "formats": ["png", "csv", "json"]},
)

review_policy(plan)

script = ask_model_for_python(plan=plan, schema=schema)
review_static_code_policy(script)

result = run_python_in_sandbox(
    sandbox=sandbox,
    script=script,
    working_dir="/work",
    timeout_seconds=120,
    memory_limit_mb=1024,
)

artifacts = collect_outputs(sandbox, "/work/output")
review_outputs(artifacts)
return_answer_to_user(result.summary, artifacts)

هذا كود شبه رمزي، وليس عقد SDK للمنتج. النقطة هي الحدود: يتم مراجعة الكود المُنشأ، وتشغيله بحد زمني، وتقييده بدلائل معروفة، ويتبعه جمع المخرجات ومراجعتها.

إذا فشل النص البرمجي، أرسل رسالة الخطأ ومقتطف صغير من الكود إلى النموذج للإصلاح. لا ترسل سجلات غير محدودة. يجب أن يحافظ إصلاح الأخطاء على نفس سياسة الحزمة والملف والشبكة والمخرجات مثل المحاولة الأولى.

التحكم في الوصول إلى حزم Python لتحليل البيانات الذكي

الوصول إلى الحزم هو المكان الذي تصبح فيه العديد من عروض محللي البيانات الذكية محفوفة بالمخاطر. قد يطلب النموذج مكتبة لأنه رآها في برنامج تعليمي، أو لأن اسم حزمة يبدو معقولًا، أو لأن موجه المستخدم اقترحها. لا ينبغي لتطبيقك تحويل هذه الاقتراحات إلى تثبيتات حزم غير مقيدة.

استخدم سياسة تتطابق مع حساسية البيانات:

سياسة الحزمة الأنسب المفاضلة
صورة مبنية مسبقًا فقط أعباء العمل الإنتاجية ذات احتياجات التحليل المتوقعة أقل مرونة، أبسط سطح مراجعة
حزم قائمة بيضاء معظم مساعدي تحليل CSV توازن جيد لـ pandas، والرسم البياني، وحزم الإحصاءات الشائعة
تثبيتات مثبتة الإصدار وظائف تحليل قابلة للتكرار تتطلب صيانة الحزمة ومراجعة الثغرات
مرآة داخلية مخزنة سير عمل البيانات المؤسسية أو المنظمة عمل تشغيلي أكثر، تحكم أفضل في سلسلة التوريد
تثبيتات بموافقة المستخدم أدوات استكشافية للمستخدمين الموثوقين أكثر مرونة، لكنها أبطأ وتحتاج تحذيرات واضحة

للإصدار الإنتاجي الأول، ابدأ ببيئة مبنية مسبقًا أو قائمة بيضاء قصيرة. يمكن الإجابة على معظم أسئلة CSV بمجموعة صغيرة من المكتبات: pandas، numpy، matplotlib، seaborn، scipy، وأحيانًا scikit-learn. إذا كانت الوظيفة بحاجة إلى حزمة أخرى، اجعل النموذج يشرح السبب، ثم قم بتوجيه هذا الطلب من خلال الموافقة البشرية أو سير عمل مراجعة الحزمة.

سجل اسم الحزمة، والإصدار، وسجل المصدر، ووقت التثبيت، وسبب طلب الحزمة. إذا كان فريق الأمان يستخدم ماسحات التبعية أو السجلات الخاصة، فتكامل مع تلك العملية بدلاً من السماح للوكيل بتجاوزها.

كيفية التحقق من صحة الرسوم البيانية وملفات المخرجات

الملفات المُنشأة هي جزء من تجربة المنتج، ولكنها أيضًا جزء من حدود الثقة. يمكن أن يكون الرسم البياني خاطئًا. يمكن أن يحتوي ملف CSV على قيم تشبه الصيغ. يمكن أن يحتوي دفتر الملاحظات على كود مخفي. يمكن أن يحتوي ملف ZIP على مسارات غير متوقعة. تعامل مع القطع الأثرية كعناصر يجب فحصها، وليس مجرد ملفات لتنزيلها.

حدد عقد مخرجات بسيط:

{
  "required_files": ["summary.json"],
  "optional_files": ["chart-*.png", "filtered-data.csv"],
  "blocked_extensions": [".exe", ".sh", ".bat", ".html"],
  "max_total_size_mb": 25
}

لكل وظيفة مكتملة، اجمع الملفات فقط من دليل المخرجات المتوقع. تحقق من نوع MIME، والامتداد، والحجم، والمسار. بالنسبة للصور، قم بإنشاء صور مصغرة للمعاينة. بالنسبة لصادرات CSV، قم بتفريغ صيغ جداول البيانات إذا كان الملف قد يُفتح في Excel أو Google Sheets. بالنسبة لملخصات JSON، تحقق من صحتها مقابل مخطط قبل استخدامها في واجهة المستخدم.

امنح المستخدمين خطوة مراجعة قبل تنزيل النتائج أو مشاركتها. يجب أن تظهر شاشة المراجعة:

  • السؤال الأصلي.
  • اسم مجموعة البيانات والمخطط المستخدم.
  • خطوات التحليل بلغة بسيطة.
  • الرسوم البيانية والجداول المُنشأة.
  • أي أعمدة تم استبعادها لأسباب سياسية.
  • التحذيرات والأخطاء وإعادة المحاولات أو طلبات الحزم.

يمكن للنموذج كتابة شرح سردي، لكن يجب أن يثبت التطبيق هذا الشرح في ملفات وسجلات من تشغيل البيئة المعزولة.

نقاط التفتيش الأمنية قبل الإنتاج

محلل البيانات الذكي هو أداة داخلية مفيدة فقط إذا كانت فرق الأمان والمنصة قادرة على فهم ما هو مسموح له بفعله. يجب أن تغطي المراجعة العزل، وحدود الموارد، وسياسة الحزمة، وسلوك الشبكة، والأسرار، والسجلات، والحذف.

استخدم قائمة التحقق هذه قبل الانتقال إلى ما بعد النموذج الأولي:

نقطة التفتيش السؤال الذي يجب الإجابة عليه
حد العزل ما الذي يفصل كود وملفات مستخدم عن المضيف والمستخدمين الآخرين؟
الوصول إلى الملفات هل يمكن للكود المُنشأ قراءة دليل الوظيفة فقط، أم يمكنه رؤية تخزين أوسع؟
حدود الموارد ما الذي يحدد وقت وحدة المعالجة المركزية، والذاكرة، والقرص، وعدد العمليات، ووقت الجدار؟
سياسة الشبكة هل الوصول إلى الشبكة الخارجة متوقف، أم مدرج في القائمة البيضاء، أم عبر وكيل، أم مفتوح بالكامل؟
سياسة الحزمة ما الحزم التي يمكن تثبيتها، ومن أين، وما ضوابط الإصدار؟
حد الأسرار هل يتم إبقاء مفاتيح API، وبيانات اعتماد قاعدة البيانات، ورموز الخدمة خارج البيئة المعزولة ما لم يتم تحديد نطاقها صراحةً؟
السجلات هل يتم تسجيل الأوامر، وتثبيت الحزم، والأخطاء، وقراءات/كتابات الملفات، والقطع الأثرية الناتجة؟
المراجعة البشرية ما الخطط، ومقتطفات الكود، وطلبات الحزم، والمخرجات التي تحتاج موافقة؟
التنظيف متى يتم حذف حالة البيئة المعزولة، والملفات المرفوعة، والنصوص البرمجية المُنشأة، والسجلات، والمخرجات؟

تجنب الادعاءات المطلقة مثل “لا يمكن للكود الهروب” أو “لا يمكن للبيانات التسرب”. المعيار العملي أكثر واقعية: حدد الحدود، ووثق الضوابط، واختبر حالات الفشل، واحتفظ بمسار تدقيق كافٍ للتحقيق في السلوك غير المتوقع.

بالنسبة لسياسة الشبكة والحزمة، تذكر أن تثبيت التبعية هو شكل من أشكال الخروج من الشبكة ما لم تأت الحزم من صورة مبنية مسبقًا أو مرآة خاضعة للتحكم. إذا كانت مجموعة البيانات حساسة، يجب حظر الوصول إلى الشبكة أو تقييده بشدة بالقائمة البيضاء افتراضيًا. إذا احتاج المحلل إلى بيانات خارجية حية، اجعل ذلك أداة منفصلة بمسار الموافقة والتسجيل الخاص بها.

استخدام Novita Agent Sandbox كطبقة تنفيذ

يوفر Novita Agent Sandbox بيئات تنفيذ معزولة ذات حالة للوكلاء الذكيين. تصف وثائق Novita الحالية دعم تشغيل الكود، وتثبيت التبعيات، والوصول إلى الملفات، واستخدام المتصفحات، والحفاظ على حالة التنفيذ عبر الجلسات. بالنسبة لمحلل بيانات ذكي، ترتبط هذه البدائيات مباشرة بجزء التنفيذ من البنية: إنشاء مساحة عمل للوظيفة، ونقل الملفات إليها، وتشغيل كود التحليل، وجمع القطع الأثرية، وتنظيفها أو الحفاظ على الحالة بناءً على تصميم الجلسة.

تسرد وثائق Novita Agent Sandbox SDK و CLI دعم SDK الرسمي لـ Python و JavaScript/TypeScript، والذي يتناسب مع الواجهات الخلفية للتطبيقات الشائعة. تصف وثائق نظام ملفات sandbox نظام ملفات معزول بمساحة تخزين ثابتة تبلغ 20 جيجابايت لبيئات sandbox، وهو مفيد لمرحلة ملفات CSV والقطع الأثرية المُنشأة داخل مساحة عمل مخصصة للوظيفة.

حافظ على التمييز واضحًا:

  • التوجيهات التنفيذية في هذه المقالة تصف بنية عامة لتطبيقات محلل البيانات الذكي.
  • يمكن لـ Novita Agent Sandbox توفير طبقة تنفيذ البيئة المعزولة لسير العمل هذه.
  • لا يزال تطبيقك يمتلك مصادقة المستخدم، وسياسة الاحتفاظ بالبيانات، والموافقة على الحزمة، وسياسة الشبكة، ومراجعة المخرجات، وقرارات النشر/النشر.

يساعد هذا الفصل الفرق على البناء بنموذج مسؤولية نظيف. النموذج يقترح التحليل ويشرحه. التطبيق يفرض سياسة المنتج. البيئة المعزولة توفر وقت التشغيل الخاضع للتحكم حيث يمكن معالجة الكود والملفات والحزم والرسوم البيانية والسجلات بعيدًا عن خادم التطبيق الرئيسي.

الخاتمة

أقوى تصميم لمحلل بيانات ذكي ليس “دع النموذج يشغل Python.” إنه حلقة خاضعة للتحكم: فحص مجموعة البيانات، سؤال النموذج عن خطة، مراجعة الكود المُنشأ، تشغيله في بيئة معزولة، جمع القطع الأثرية المُحققة، عرض ما حدث للمستخدم، وتنظيف الحالة عند انتهاء الوظيفة. يحافظ هذا الهيكل على سرعة تجربة المستخدم مع إعطاء فرق الهندسة والأمان نقاط تفتيش ملموسة لتقييمها قبل الإنتاج.

للفرق التي تبني هذا النمط، ابدأ صغيرًا: رفع CSV، فحص المخطط، قائمة بيئة حزمة قصيرة، مخرجات رسم بياني، مهلات زمنية صارمة، وشاشة مراجعة مرئية. أضف وصولاً أوسع للحزم، وأدوات الشبكة، والاستمرارية، والأتمتة فقط بعد توثيق الحدود واختبارها.

الأسئلة الشائعة

لماذا يحتاج محلل البيانات الذكي إلى بيئة معزولة؟

يحتاج إلى بيئة معزولة لأن سير العمل يجمع بين ملفات غير موثوقة، وكود Python مُنشأ بواسطة النموذج، وطلبات حزم، وإنشاء رسوم بيانية، وقطع أثرية قابلة للتنزيل. تشغيل هذا العمل في بيئة منفصلة يعطي تطبيقك مكانًا لتطبيق ضوابط الملف والموارد والحزمة والشبكة والتسجيل والتنظيف.

هل يجب على النموذج رؤية ملف CSV الكامل؟

عادةً لا. ابدأ بإرسال ملخص المخطط، وعينات آمنة، وأوصاف الأعمدة، وسؤال المستخدم إلى النموذج. احتفظ بالملف الخام في البيئة المعزولة ما لم يكن لمنتجك سبب مراجع لعرض المزيد من البيانات للنموذج.

هل يمكن السماح بتثبيت الحزم؟

نعم، ولكن يجب التحكم فيها. استخدم صورة مبنية مسبقًا، أو قائمة بيضاء، أو إصدارات مثبتة، أو مرآة خاصة، أو سير عمل موافقة. لا تدع الكود المُنشأ بواسطة النموذج يقوم بتثبيت حزم عشوائية من الإنترنت العام دون مراجعة.

ما الملفات التي يجب أن يعيدها التطبيق إلى المستخدمين؟

أعد فقط الملفات المُحققة من دليل مخرجات معروف، مثل صور الرسوم البيانية، وملخص JSON، وصادرات CSV المعقمة. احظر الامتدادات غير المتوقعة، والملفات الكبيرة، والمسارات المخفية، والقطع الأثرية التي لم تكن جزءًا من عقد المخرجات.

هل هذا ضمان امتثال؟

لا. البيئة المعزولة هي جزء واحد من بنية التنفيذ. تعتمد الموافقة على الامتثال والأمان على بياناتك، ونموذج التهديد، والضوابط، والتسجيل، والاحتفاظ، وعملية المراجعة، وبيئة النشر.

مقالات موصى بها