
منصة مختبر أمن ذكاء اصطناعي عملي تضم أكثر من 50 سيناريو عبر حقن المطالبات، استغلال الأنظمة الوكيلة، التلاعب بالنماذج، وهجمات حدود الثقة لـ MCP. تستخدم Ollama + FastAPI + React لممارسة هجومية/دفاعية آمنة.
AIVP هو منصة مختبرات أمنية عملية للذكاء الاصطناعي تغطي 4 مراحل وأكثر من 50 مختبرًا (حاليًا أكثر من 50 سيناريو عبر قاعدة الأكواد). تجمع المنصة بين Ollama + Llama 3.1، وواجهة خلفية FastAPI، وواجهة أمامية React/Vite لتمكين الممارسين من ممارسة تقنيات أمن الذكاء الاصطناعي الهجومية والدفاعية بأمان.
إذا كان هذا المشروع مفيدًا لك، يرجى ⭐ وضع نجمة / إعجاب بالمستودع، fork له، ولا تتردد في فتح طلبات سحب (PRs)!
استخدم دليل التشغيل المخصص: RUN_STEPS.md. يغطي الدليل الطرق اليدوية (Vite + uvicorn) وDocker (nginx + API + Redis، مع Ollama على المضيف)، بما في ذلك المتطلبات الأساسية للوصول الموثوق إلى المختبرات.
سلوك الإعدادات صارم في مسارات التشغيل النشطة: قد يؤدي عدم وجود قيم بيئية مطلوبة إلى فشل بدء التشغيل حسب التصميم.
تغطي المنصة أربعة مسارات تدريبية:
يستخدم كل مختبر أسرارًا متغيرة (per-lab secrets) وعمليات تحقق صريحة، حتى تتمكن من التحقق من نجاح الاستغلال في بيئة آمنة.
للاستخدام التعليمي فقط — تحاكي المختبرات سيناريوهات أمن الذكاء الاصطناعي الهجومية والدفاعية على الأنظمة المحلية. لا تستهدف خدمات أو بيانات أو بنية تحتية حقيقية لا تملكها أو ليس لديك إذن صريح باختبارها. الأسرار في هذه المختبرات اصطناعية ويتم إعادة توليدها لكل مختبر؛ وهي ليست بيانات اعتماد إنتاجية. استخدم على مسؤوليتك الخاصة. لا يتم تقديم أي ضمان.
POST /api/labs/{lab}/chatقم بسحب نموذج واحد على الأقل:
ollama pull llama3.1(أو أي متغير متوافق مع llama3.1 تفضله)
apps/
api/ # FastAPI backend (SSE -> Ollama)
main.py
requirements.txt
.env.example
web/ # React + Vite frontend
src/
.env.example
نصيحة: 16 جيجابايت RAM للنظام تعمل؛ 32 جيجابايت تعطي مساحة مريحة للمتصفح و Node و Python و IDE.
من جذر المستودع (المجلد الذي يحتوي على apps\api و apps\web):
# 0) تأكد من توفر النموذج
ollama pull llama3.1
# 1) البيئة الافتراضية للواجهة الخلفية + التبعيات + التشغيل
cd apps/api
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
uvicorn main:app --reload --port 8000
افتح نافذة PowerShell جديدة للواجهة الأمامية:
cd apps/web
npm install
copy .env.example .env
npm run dev # http://localhost:5173
# 0) النموذج
ollama pull llama3.1
# 1) الواجهة الخلفية
cd apps/api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --reload --port 8000
في نافذة طرفية أخرى:
cd apps/web
npm install
cp .env.example .env
npm run dev # http://localhost:5173
ollama serve إذا لزم الأمر).ollama pull llama3.1.:8000.:5173.تقوم الواجهة الأمامية ببث أحداث الخادم (SSE) من الواجهة الخلفية؛ تأكد من أن أصول CORS في
apps/api/.envتتضمنhttp://localhost:5173.
صيغ معرفات المختبرات المقبولة (بواسطة الواجهة الخلفية): PI-01، PI_01، pi01، p01 → كلها يتم تحويلها إلى PI_01.
أسرار ديناميكية يتم إنشاؤها عند أول استخدام للمختبر بعد إعادة تشغيل الواجهة الخلفية. يمكنك أيضًا إعادة تعيين السر:
POST /api/secrets/reset/{labId}
سر كل مختبر مختلف ويتم إعادة إنشائه عند إعادة تشغيل الواجهة الخلفية (في الذاكرة). ضع في اعتبارك النسخ الاحتياطي إلى ملف/قاعدة بيانات إذا كنت بحاجة إلى الاستمرارية.
apps/api/.env)OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3.1
CORS_ORIGINS=http://localhost:5173
SERVER_SALT=change-me-in-production
AIVP_DEFAULT_MODE=off
ENABLE_TRAINING_LABS=false
OLLAMA_MODEL_TRAINING_LABS=llama3.1
REDIS_URL=redis://localhost:6379/0
REDIS_HOST=localhost
REDIS_PORT=6379
MEMORY_TTL_SECONDS=3600
SESSION_TTL_SECONDS=3600
AGENT_B_URL=http://localhost:8001
MM_API_BASE=http://localhost:8000
API_BASE_URL=http://localhost:8000
JIRA_URL=https://example.atlassian.net
GITHUB_API_BASE_URL=https://api.github.com
SLACK_API_BASE_URL=https://slack.com/api
apps/web/.env)# للتطوير المحلي: عنوان URL كامل للـ API (Vite يقوم بوكالة /api في vite.config أيضًا)
VITE_API_BASE=http://localhost:8000/api
VITE_DEV_API_TARGET=http://localhost:8000
[email protected]
إصدارات Docker / الإنتاج تستخدم VITE_API_BASE=/api بحيث يستخدم المتصفح مسارات من نفس الأصل خلف nginx (انظر RUN_STEPS.md → الخيار B).
POST /api/labs/{lab}/chat — دفق SSE مع data: {"content": "..."}POST /api/secrets/validate — { labId, answer } → { success, message }POST /api/secrets/reset/{lab} — (اختياري، للاختبار)أضف لقطات الشاشة الخاصة بك داخل docs/screenshots/ ثم أشر إليها هنا:




``
قم بتشغيل npm install داخل apps/web.
``
أضف from typing import Iterator (أو أزل التعليق التوضيحي) في main.py.
CORS / SSE محظور
تأكد من أن CORS_ORIGINS يتضمن http://localhost:5173.
أخطاء Ollama
تأكد من أن ollama serve يعمل وأن النموذج مسحوب: ollama pull llama3.1.
فحص سريع باستخدام curl
curl -N -X POST http://localhost:8000/api/labs/PI_01/chat \
-H "Content-Type: application/json" \
-d '{"prompt":"قل مرحباً في جملة واحدة."}'
يجب أن ترى أسطر دفق مثل data: {"content":"مرحباً …"}.
نرحب بالمساهمات! يرجى:
المجالات المقترحة:
إذا وجدت خطأ أو كانت لديك فكرة:
إذا أعجبك هذا المشروع، يرجى ⭐ وضع نجمة / إعجاب به ومشاركته مع الآخرين!
MIT.