بنية التكامل LLM
تشرح هذه الصفحة كيفية ربط نماذج IBM Granite 4 بنظام AuroraSOC متعدد الوكلاء — من المصنع الذي يقوم بإنشاء الوكلاء، من خلال وحدة Granite التي تحل النماذج، إلى الواجهات الخلفية للخدمة التي تقوم بتشغيل الاستدلال.
العمارة عالية المستوى
مسؤوليات المكونات
| عنصر | ملف | غاية |
|---|---|---|
| ** أورورا إيجينت فاكتوري ** | aurorasoc/agents/factory.py | إنشاء جميع وكلاء Beeالذكاء الاصطناعي السبعة عشر (المنسق + 16 متخصصًا) باستخدام أدوات LLM والأدوات والمطالبات الصحيحة |
| ** وحدة الجرانيت ** | aurorasoc/granite/__init__.py | دقة النموذج وتكوينه وإنشاء ChatModel |
| السجل النموذجي | aurorasoc/granite/registry.py | الفحوصات الصحية، وتوافر النموذج، والإحماء |
| مطالبات الوكيل | aurorasoc/agents/prompts.py | يطالب النظام لكل شخصية وكيل |
| إطار عمل Beeالذكاء الاصطناعي | beeai-framework | RequirementAgent، ChatModel، الأدوات، البرامج الوسيطة |
تدفق الطلب
عند وصول تنبيه إلى AuroraSOC، إليك التدفق الكامل من الحدث إلى استجابة LLM:
خطوة بخطوة:
- ** استيعاب الحدث: ** يصل تنبيه عبر MQTT أو NATS JetStream
- التطبيع: يقوم مسار الحدث بتطبيع التنبيه إلى تنسيق قياسي
- الإرسال: تستدعي طبقة API المصنع للتعامل مع التنبيه
- اختيار الوكيل: يحدد المصنع الوكيل المتخصص الذي يجب أن يتعامل مع هذا النوع من التنبيه
- دقة النموذج: يستدعي
_llm_for(agent_name)وحدة Granite لحل النموذج الصحيح - إنشاء ChatModel: تُرجع وحدة Granite مثيل Beeالذكاء الاصطناعي
ChatModelالذي تم تكوينه للواجهة الخلفية الصحيحة - إنشاء الوكيل: يقوم المصنع بإنشاء
RequirementAgentمع النموذج والأدوات وموجه النظام - الاستدلال: يستخدم الوكيل ChatModel للاستعلام عن Ollama أو vLLM
- الاستجابة: يقوم الوكيل بإرجاع التحليل المنظم مرة أخرى إلى طبقة API
المصنع: AuroraAgentFactory
المصنع (aurorasoc/agents/factory.py) هو النقطة المركزية حيث يحصل الوكلاء على LLM الخاصة بهم. يتم الإعلان عن التعريفات المتخصصة في AGENT_SPECS، ثم يتم إنشاء مثيل لها من خلال مسار create_agent() العام.
تهيئة المصنع
class AuroraAgentFactory:
def __init__(self, model_name: str | None = None,
granite_config: GraniteModelConfig | None = None):
self.granite_config = granite_config or get_default_granite_config()
if model_name:
self.granite_config.model_name = model_name
يقبل المصنع model_name اختياري (للتجاوز اليدوي) وGraniteModelConfig اختياري. إذا لم يتم توفير أي منهما، فإنه يعود إلى get_default_granite_config() الذي يقرأ من متغيرات البيئة.
طريقة _llm_for()
هذا هو الجسر الحاسم بين الوكلاء والنماذج:
def _llm_for(self, agent_name: str) -> ChatModel:
"""Resolve the appropriate ChatModel for a given agent."""
return create_granite_chat_model(
config=self.granite_config,
agent_name=agent_name,
)
تستدعي كل طريقة create_*() _llm_for() للحصول على نموذجها:
def create_threat_hunter(self) -> RequirementAgent:
llm = self._llm_for("threat_hunter")
return RequirementAgent(
llm=llm,
tools=[ThinkTool(), ...],
# ... system prompt, middleware
)
المنسق
المنسق هو وكيل خاص يقوم بتوجيه التنبيهات إلى المتخصص الصحيح عبر HandoffTool:
def create_orchestrator(self, agents: dict) -> RequirementAgent:
llm = self._llm_for("orchestrator")
handoff_tools = [
HandoffTool(agent=agent, name=name)
for name, agent in agents.items()
]
return RequirementAgent(
llm=llm,
tools=[ThinkTool(), *handoff_tools],
# ...
)
يحصل المنسق على LLM الخاص به (من المحتمل أن يكون نموذج تنسيق دقيقًا) ويمكنه تفويض أي وكيل متخصص.
بناء الفريق الكامل
async def build_full_team(self):
specialists = [
await self.create_agent(name) for name in AGENT_SPECS
]
orchestrator = await self.create_orchestrator(specialists)
return orchestrator, specialists
يؤدي هذا إلى بناء جميع الوكلاء المتخصصين الستة عشر من AGENT_SPECS وتوصيلهم إلى المنسق.
مخطط تدفق البيانات
قرارات التصميم الرئيسية
لماذا إطار عمل Beeالذكاء الاصطناعي؟
يستخدم AuroraSOC Beeالذكاء الاصطناعي Agent Framework من IBM لأنه يوفر:
- RequirementAgent — الوكلاء الذين يمكنهم تحديد المتطلبات قبل الاستجابة (على سبيل المثال، "أحتاج إلى ملف PCAP")
- المتطلبات الشرطية — إرفاق المتطلبات بشكل مشروط (على سبيل المثال، طلب ThinkTool فقط للتحليل المعقد)
- GlobalTrajectoryMiddleware — ذاكرة مشتركة عبر دورات الوكيل
- HandoffTool — تفويض من وكيل إلى وكيل بدون كود صفري
- ChatModel.from_name() — دقة النموذج غير المعتمدة على الموفر (يدعم Ollama، وvLLM، وAPIs المتوافقة مع Openالذكاء الاصطناعي)
لماذا النماذج لكل وكيل؟
ليست كل مجالات الأمان تحتاج إلى نفس النموذج:
- تحليل البرامج الضارة يحتاج إلى فهم عميق للكود/الثنائي ← نموذج متخصص
- الامتثال يحتاج إلى معرفة تنظيمية ← نموذج متخصص
- يحتاج إنشاء التقارير إلى مخرجات منظمة ← هندسة سريعة مختلفة
تتيح النماذج لكل وكيل لكل وكيل متخصص استخدام نموذج تم ضبطه ليناسب مجاله المحدد.
لماذا الجرانيت 4 الهجين؟
يستخدم IBM Granite 4 Hybrid بنية Mamba-Transformer:
- طبقات Mamba توفر تعقيد O(n) للتسلسلات الطويلة (أفضل لتحليل السجل)
- طبقات المحولات توفر اهتمامًا قويًا بمهام التفكير المنطقي
- يجمع Hybrid بين هاتين القوتين في VRAM أقل من المحول النقي
الخطوات التالية
- الغوص العميق لوحدة الجرانيت — تفاصيل كاملة عن دقة النموذج
- دليل تبديل النماذج — التبديل بين النماذج الأساسية والنماذج المضبوطة بدقة
- واجهات العرض الخلفية — تكوين Ollama مقابل vLLM