وكيل ذكاء اصطناعي متقدم باستخدام Semantic Kernel و Gemini: دليل عملي

في هذا البرنامج التعليمي، سنقوم ببناء وكيل ذكاء اصطناعي متقدم باستخدام مكتبة Semantic Kernel بالاقتران مع نموذج Gemini المجاني من جوجل، وسنفعل ذلك بسلاسة على منصة Google Colab. سنبدأ بتوصيل مكونات Semantic Kernel كأدوات، مثل البحث على الويب، وحساب المعادلات الرياضية، وإدخال/إخراج الملفات، وتدوين الملاحظات، ثم سنترك لـ Gemini مهمة التنسيق بينها من خلال مخرجات JSON منظمة. سنرى كيف يقوم الوكيل بالتخطيط، واستدعاء الأدوات، ومعالجة الملاحظات، وتقديم إجابة نهائية.

1. إعداد البيئة وتثبيت المكتبات

نبدأ بتثبيت المكتبات واستيراد الوحدات الأساسية، بما في ذلك Semantic Kernel و Gemini، و DuckDuckGo للبحث. نقوم بتعيين مفتاح API الخاص بـ Gemini لإنشاء الردود، ونقوم بإعداد kernel_function من Semantic Kernel لتسجيل أدواتنا المخصصة. الرمز الكامل متوفر [هنا](رابط الرمز).

pip -q install semantic-kernel google-generativeai duckduckgo-search rich
import os, re, json, time, math, textwrap, getpass, pathlib, typing as T
from rich import print
import google.generativeai as genai
from duckduckgo_search import DDGS

GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") or getpass.getpass("Enter GEMINI_API_KEY: ")
genai.configure(api_key=GEMINI_API_KEY)
GEMINI_MODEL = "gemini-1.5-flash"
model = genai.GenerativeModel(GEMINI_MODEL)
import semantic_kernel as sk
try:
    from semantic_kernel.functions import kernel_function
except Exception:
    from semantic_kernel.utils.function_decorator import kernel_function

2. تعريف أدوات الوكيل

نحدد فئة AgentTools كمجموعة أدوات Semantic Kernel، مما يمنح الوكيل قدرات مثل البحث على الويب، والحساب الرياضي الآمن، واسترجاع الوقت، وقراءة/كتابة الملفات، وتخزين الملاحظات الخفيفة. ثم نقوم بتهيئة Semantic Kernel وتسجيل هذه الأدوات كمكون إضافي حتى يتمكن الوكيل من استدعائها أثناء الاستدلال. الرمز الكامل متوفر [هنا](رابط الرمز).

class AgentTools:
    """Semantic Kernel-native toolset the agent can call."""
    def __init__(self):
        self._notes: list[str] = []
    # ... (باقي تعريف الدوال) ...

3. إعداد قائمة الأدوات والنظام

نقوم بإنشاء دالة مساعدة list_tools لجمع جميع الأدوات المتاحة، وأوصافها، وتوقيعاتها في سجل للوكيل. ثم نقوم ببناء سلسلة CATALOG التي تسرد هذه الأدوات ونقوم بتضمينها في موجه SYSTEM، والذي يوجه Gemini حول كيفية استدعاء الأدوات بتنسيق JSON الصارم وإرجاع إجابة نهائية. أخيرًا، نقوم بتعريف extract_json لتحليل استدعاءات الأدوات أو الإجابات النهائية من مخرجات النموذج بأمان. الرمز الكامل متوفر [هنا](رابط الرمز).

def list_tools() -> dict[str, dict]:
    # ... (تعريف الدالة) ...

TOOLS = list_tools()
CATALOG = "n".join( [f"- {n}{v['signature']}: {v['description']}" for n,v in TOOLS.items()] )
SYSTEM = f"""You are a meticulous tool-using AI agent. ..."""
def extract_json(s: str) -> dict|None:
    # ... (تعريف الدالة) ...

4. تشغيل وكيل الذكاء الاصطناعي

نقوم بتشغيل حلقة وكيل متكررة تغذي سياق النظام/المستخدم إلى Gemini، وتفرض استدعاءات الأدوات فقط بتنسيق JSON، وتنفذ الأدوات المطلوبة، وتغذي الملاحظات مرة أخرى في السجل، وتعيد final_answer؛ إذا انحرف النموذج عن المخطط، فإننا ندفعه، وإذا وصل إلى الحد الأقصى للخطوات، فإننا نلخص النتائج. الرمز الكامل متوفر [هنا](رابط الرمز).

def run_agent(task: str, max_steps: int = 8, verbose: bool = True) -> str:
    # ... (تعريف الدالة) ...

5. مثال عملي

نحدد مهمة تجريبية تجعل الوكيل يبحث، ويحسب، ويكتب ملفًا، ويحفظ ملاحظات، ويبحث عن الوقت الحالي. ثم نقوم بتشغيل الوكيل من البداية إلى النهاية، وطباعة الأدوات المحملة والإجابة النهائية حتى نتمكن من التحقق من سير عمل استخدام الأداة بالكامل دفعة واحدة. الرمز الكامل متوفر [هنا](رابط الرمز).

DEMO = ( "Find the top 3 concise facts about Chandrayaan-3 with sources, "
         "compute 41*73+5, store a 3-line summary into '/content/notes.txt', "
         "add the summary to notes, then show current time and return a clean final answer." )
if __name__ == "__main__":
    print("[bold] Tools loaded:[/bold]", ", ".join(TOOLS.keys()))
    ans = run_agent(DEMO, max_steps=8, verbose=True)
    print("n" + "="*80 + "n[bold green]FINAL ANSWER[/bold green]n" + ans + "n")

6. الخاتمة

نلاحظ كيف يتعاون Semantic Kernel و Gemini لتشكيل نظام وكيل مدمج ولكنه قوي داخل Colab. لا نختبر فقط استدعاءات الأدوات، بل نرى أيضًا كيف تتدفق النتائج مرة أخرى إلى حلقة الاستدلال لإنتاج إجابة نهائية واضحة. لدينا الآن مخططًا قابلاً لإعادة الاستخدام للتوسيع باستخدام المزيد من الأدوات أو المهام، ونثبت أن بناء وكيل ذكاء اصطناعي متقدم عملي يمكن أن يكون بسيطًا وفعالًا عندما نستخدم المزيج الصحيح من الأطر. الرمز الكامل متوفر [هنا](رابط الرمز). تابعونا على [صفحتنا على جيثب](رابط جيثب) و [تويتر](رابط تويتر) وانضموا إلى [مجموعة ML](رابط ريديت).

(تذكر استبدال [هنا] بروابط فعلية عند نشر المقال)

المصدر: MarkTechPost