كيفية بناء وكيل ذكاء اصطناعي مزدوج المحرك باستخدام Python وOpenAI وGoogle GenAI SDKs

Share:

درس تقني
متقدم
⏱ ٤٠ دقيقة قراءة
© بوابة الذكاء الاصطناعي ٢٠٢٦

تعلم كيفية بناء وكيل ذكاء اصطناعي مزدوج المحرك باستخدام Python يقوم بتوجيه المهام تلقائيًا بين GPT-4o وGemini 2.5 مع دعم الذاكرة.

المتطلبات الأساسية

  • Python ٣.١٠ أو أعلى
  • مفتاح API لـ OpenAI و Google Gemini
  • فهم أساسي للغة Python والتعامل مع الـ APIs

ما ستتعلمه في هذا الدرس

  • كيفية تهيئة عملاء OpenAI و Google GenAI الحديثين
  • توجيه المهام بذكاء بين نموذجين مختلفين
  • تنفيذ نظام ذاكرة بسيط للاحتفاظ بالسياق
  • إدارة مفاتيح API بشكل آمن باستخدام ملف .env

ما الذي نبنيه؟

في هذا الدرس، سنقوم ببناء وكيل ذكاء اصطناعي مزدوج المحرك قادر على اختيار النموذج المناسب تلقائيًا بين GPT-4o وGemini 2.5 Flash حسب طبيعة المهمة.

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

الإعداد والتثبيت

قم بتثبيت المكتبات المطلوبة أولاً:

pip install openai google-genai python-dotenv

ثم أنشئ ملف .env لحفظ مفاتيح الـ API بشكل آمن:

# .env
    OPENAI_API_KEY=sk-...
    GEMINI_API_KEY=AIza...

الخطوة ١: تهيئة الوكيل المزدوج

نبدأ بإنشاء كلاس الوكيل وتهيئة عملاء OpenAI و Google GenAI باستخدام أحدث إصدارات المكتبات.

import os
    from dotenv import load_dotenv
    from openai import OpenAI
    from google import genai
    
    load_dotenv()
    
    class DualEngineAgent:
        def init(self):
            self.memory = []
            self.openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
            self.gemini_client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
    
        def query_openai(self, prompt: str) -> str:
            response = self.openai_client.chat.completions.create(
                model="gpt-4o",
                messages=[{"role": "user", "content": prompt}],
                max_tokens=800
            )
            return response.choices[0].message.content.strip()
    
        def query_gemini(self, prompt: str) -> str:
            response = self.gemini_client.models.generate_content(
                model="gemini-2.5-flash",
                contents=prompt,
            )
            return response.text.strip()
    
    agent = DualEngineAgent()

كيفية توجيه المهام بين GPT-4o و Gemini

بدلاً من استخدام كلمة “complex”، سنستخدم طريقة أكثر ذكاءً لتحديد النموذج المناسب بناءً على نوع المهمة.

def process_task(self, task_description: str) -> str:
        task_lower = task_description.lower()
        
        # توجيه المهام التحليلية أو المعقدة إلى Gemini
        if any(word in task_lower for word in ["analyze", "compare", "research", "summarize", "evaluate", "review"]):
            model_used = "gemini"
            result = self.query_gemini(task_description)
        else:
            model_used = "openai"
            result = self.query_openai(task_description)
    
        self.memory.append({
            "task": task_description,
            "model_used": model_used,
            "result": result
        })
        return result
    
    DualEngineAgent.process_task = process_task
    
    مثال على الاستخدام
    result = agent.process_task("Analyze the impact of AI on software development")
    print(result)

كيفية إضافة ذاكرة للوكيل

نضيف نظام ذاكرة بسيط يسمح للوكيل بالرجوع إلى المهام السابقة واستخدامها لتحسين النتائج.

def enhance_with_memory(self, context: str) -> str:
        matches = [entry for entry in self.memory if context.lower() in entry['task'].lower()]
        
        if matches:
            last = matches[-1]
            return f"بناءً على مهمة سابقة ({last['model_used']}):\n\n{last['result']}"
        return "لم يتم العثور على ذاكرة ذات صلة."
    
    DualEngineAgent.enhance_with_memory = enhance_with_memory
    
    مثال
    agent.process_task("Review Q2 marketing performance")
    print(agent.enhance_with_memory("marketing"))

⚠️ نصيحة مهمة:
تأكد من إعادة تشغيل الطرفية أو بيئة التطوير بعد تحديث ملف .env. هذا من أكثر الأخطاء شيوعًا التي تمنع تحميل مفاتيح الـ API.

اختبار الوكيل

# اختبار النماذج بشكل منفصل
    print(agent.query_openai("Explain RAG in simple terms"))
    print(agent.query_gemini("Compare Claude and Gemini for coding"))
    
    اختبار النظام الكامل مع الذاكرة
    agent.process_task("Summarize recent AI agent trends")
    print(agent.enhance_with_memory("trends"))

ما يمكن بناؤه بعد ذلك؟

  • تطوير نظام توجيه أكثر ذكاءً باستخدام نموذج لغوي لاختيار النموذج
  • إضافة ذاكرة محادثة كاملة بدلاً من ذاكرة المهام فقط
  • دعم المزيد من النماذج مثل Claude و Llama
  • بناء واجهة سطر أوامر أو واجهة ويب للتفاعل مع الوكيل


Share:

هل كان هذا الشرح مفيداً؟