انتقل إلى المحتوى الرئيسي

بنية التكامل 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-frameworkRequirementAgent، ChatModel، الأدوات، البرامج الوسيطة

تدفق الطلب

عند وصول تنبيه إلى AuroraSOC، إليك التدفق الكامل من الحدث إلى استجابة LLM:

خطوة بخطوة:

  1. ** استيعاب الحدث: ** يصل تنبيه عبر MQTT أو NATS JetStream
  2. التطبيع: يقوم مسار الحدث بتطبيع التنبيه إلى تنسيق قياسي
  3. الإرسال: تستدعي طبقة API المصنع للتعامل مع التنبيه
  4. اختيار الوكيل: يحدد المصنع الوكيل المتخصص الذي يجب أن يتعامل مع هذا النوع من التنبيه
  5. دقة النموذج: يستدعي _llm_for(agent_name) وحدة Granite لحل النموذج الصحيح
  6. إنشاء ChatModel: تُرجع وحدة Granite مثيل Beeالذكاء الاصطناعي ChatModel الذي تم تكوينه للواجهة الخلفية الصحيحة
  7. إنشاء الوكيل: يقوم المصنع بإنشاء RequirementAgent مع النموذج والأدوات وموجه النظام
  8. الاستدلال: يستخدم الوكيل ChatModel للاستعلام عن Ollama أو vLLM
  9. الاستجابة: يقوم الوكيل بإرجاع التحليل المنظم مرة أخرى إلى طبقة 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 أقل من المحول النقي

الخطوات التالية