بناء وكيل ذكاء اصطناعي متعدد الأدوات مع تنفيذ آمن لبايثون باستخدام Riza و Gemini

في هذا البرنامج التعليمي، سنستفيد من ميزة تنفيذ بايثون الآمن في Riza كحجر أساس لوكيل ذكاء اصطناعي قوي مُعزز بالأدوات في Google Colab. سنبدأ بإدارة مفاتيح API بسلاسة، من خلال أسرار Colab، ومتغيرات البيئة، أو المطالبات المخفية، وسنقوم بتكوين بيانات اعتماد Riza لتمكين تنفيذ التعليمات البرمجية في بيئة رملية قابلة للمراجعة. سنُدمج أداة ExecPython من Riza في وكيل LangChain جنبًا إلى جنب مع نموذج Gemini التوليدي من Google، ونحدد AdvancedCallbackHandler الذي يلتقط كل من استدعاءات الأدوات وسجلات تنفيذ Riza، ونبني أدوات مخصصة للرياضيات المعقدة وتحليل النصوص المتعمق.

1. تثبيت المكتبات وتكوين مفاتيح API

سنقوم بتثبيت وترقية المكتبات الأساسية، وامتدادات LangChain Community، وتكامل Google Gemini، وحزمة التنفيذ الآمن من Riza، ودعم dotenv، بهدوء في Colab. ثم نقوم باستيراد الأدوات المساعدة القياسية (مثل os، datetime، json)، و تعليقات الكتابة، والإدخال الآمن عبر getpass، وواجهة برمجة تطبيقات بيانات مستخدم Colab لإدارة متغيرات البيئة وأسرار المستخدم بسلاسة.

%pip install --upgrade --quiet langchain-community langchain-google-genai rizaio python-dotenv
import os
from typing import Dict, Any, List
from datetime import datetime
import json
import getpass
from google.colab import userdata

تُعرّف الخلية أعلاه دالة setup_api_keys() التي تسترد مفاتيح API الخاصة بـ Google Gemini و Riza بأمان، من خلال محاولة تحميلها أولاً من أسرار Colab، ثم الرجوع إلى متغيرات البيئة الموجودة، وأخيراً مطالبتك بإدخالها عبر إدخال مخفي إذا لزم الأمر. إذا فشلت جميع هذه الطرق، فستطبع تعليمات حول كيفية تقديم مفاتيحك وتغلق دفتر الملاحظات.

def setup_api_keys():
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

2. استيراد مكتبات LangChain والأدوات

نقوم باستيراد أداة ExecPython من Riza جنبًا إلى جنب مع مكونات LangChain الأساسية لبناء وكيل يستدعي الأدوات، وهي على وجه الخصوص مُغلف LLM Gemini (ChatGoogleGenerativeAI)، ووظائف مُنفذ الوكيل وإنشائه (AgentExecutor، create_tool_calling_agent)، وقوالب المطالبات والرسائل، وذاكرة المحادثة المؤقتة، ومُغلف الأداة العام، ومعالج الاستدعاء الأساسي لتسجيل ورصد إجراءات الوكيل. تسمح لك هذه اللبنات الأساسية بتجميع وتكوين وتتبع وكيل ذكاء اصطناعي مُمكّن بالذاكرة ومتعدد الأدوات في Colab.

from langchain_community.tools.riza.command import ExecPython
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import HumanMessage, AIMessage
from langchain.memory import ConversationBufferWindowMemory
from langchain.tools import Tool
from langchain.callbacks.base import BaseCallbackHandler

3. إنشاء معالج الاستدعاءات المتقدم والأدوات المخصصة

الخلية أعلاه تجمع بين ثلاث قطع أساسية: AdvancedCallbackHandler الذي يلتقط كل استدعاء أداة مع سجل مُختوم بعلامة زمنية ويمكنه تلخيص الإجراءات الإجمالية المُتخذة؛ وفئة MathTool التي تُقيّم تعابير رياضية معقدة بأمان في بيئة مُقيدة لمنع العمليات غير المرغوب فيها؛ وفئة TextAnalyzer التي تحسب إحصائيات نصية مفصلة، مثل تواتر الأحرف، وعدد الكلمات، ومتوسط طول الكلمة، وتُعيد النتائج كـ JSON مُنسق.

class AdvancedCallbackHandler(BaseCallbackHandler):
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

class MathTool:
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

class TextAnalyzer:
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

4. التحقق من صحة مفاتيح API وإنشاء الوكيل

في هذه الخلية، نقوم أولاً بتعريف وتشغيل validate_api_keys() للتأكد من أن بيانات اعتماد Gemini و Riza تعمل، من خلال محاولة إجراء مكالمة LLM وهمية وإنشاء أداة Riza ExecPython. نغلق دفتر الملاحظات إذا فشل التحقق. ثم نقوم بإنشاء python_tool للتنفيذ الآمن للكود، ونُغلف طرق MathTool و TextAnalyzer لدينا في كائنات LangChain Tool، ونجمعها في قائمة الأدوات. أخيرًا، نقوم بتهيئة نموذج Gemini بإعدادات مخصصة (temperature، max_tokens، top_p، top_k)، وإذا فشل تكوين “Pro”، فإننا نعود بسلاسة إلى متغير “Flash” الأخف وزناً.

def validate_api_keys():
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

# ... (باقي الكود كما هو موضح في النص الأصلي) ...

5. إنشاء نموذج المُطالبة وتهيئة وكيل LangChain

هذه الخلية تُنشئ “دماغ” الوكيل وسير العمل الخاص به: تُعرّف ChatPromptTemplate مُهيكلة تُرشد النظام إلى مجموعة أدواته وأسلوب استنتاجه، وتُنشئ ذاكرة محادثة نافذة منزلقة للاحتفاظ بالتبادلات الخمسة الأخيرة، وتُنشئ AdvancedCallbackHandler للتسجيل في الوقت الفعلي. ثم يُنشئ وكيلًا يستدعي الأدوات من خلال ربط LLM Gemini، والأدوات المخصصة، وقالب المُطالبة، ويُغلفه في AgentExecutor يُدير التنفيذ (حتى عشر خطوات)، ويستخدم الذاكرة للسياق، ويُخرج إخراجًا وافياً، ويتوقف بشكل نظيف بمجرد أن يُنشئ الوكيل استجابة نهائية.

prompt_template = ChatPromptTemplate.from_messages([
    # ... (كود كما هو موضح في النص الأصلي) ...
])

# ... (باقي الكود كما هو موضح في النص الأصلي) ...

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

أخيرًا، نُعرّف دالة مُساعدة، ask_question()، تُرسل استعلام مستخدم إلى مُنفذ الوكيل، وتُطبع رأس السؤال، وتلتقط استجابة الوكيل (أو الخطأ)، ثم تُخرج ملخصًا موجزًا للتنفيذ (يُظهر عدد استدعاءات الأدوات التي تم إجراؤها). ثم توفر قائمة من أسئلة الاختبار، وتغطي عد الأحرف، وحساب الفائدة المركبة، وتحليل تواتر الكلمات، وإنشاء تسلسل فيبوناتشي، وتتكرر من خلالها، وتستدعي الوكيل على كل منها وتجمع النتائج. بعد تشغيل جميع الاختبارات، تُطبع “ملخصًا نهائيًا” مُوجزًا يُشير إلى عدد الاستعلامات التي تم معالجتها بنجاح، مما يُؤكد أن وكيل Gemini + Riza المُتقدم الخاص بك قيد التشغيل في Colab.

def ask_question(question: str) -> Dict[str, Any]:
    # ... (كود الدالة كما هو موضح في النص الأصلي) ...

# ... (باقي الكود كما هو موضح في النص الأصلي) ...

في الختام، من خلال التركيز على بنية بيئة التنفيذ الآمنة لـ Riza، قمنا بإنشاء وكيل ذكاء اصطناعي يُنشئ استجابات ثاقبة عبر Gemini مع تشغيل تعليمات برمجية بايثون عشوائية في سياق مُراقب وآمن بالكامل. يضمن دمج أداة ExecPython من Riza أن يتم تنفيذ كل عملية حسابية، من الروتينات العددية المتقدمة إلى تحليلات النصوص الديناميكية، بأمان وشفافية دقيقين. مع LangChain التي تُنسق استدعاءات الأدوات وذاكرة مؤقتة تحافظ على السياق، أصبح لدينا الآن إطار عمل مُعَمّم جاهز للمهام الواقعية مثل معالجة البيانات الآلية، أو إنشاء نماذج بحثية، أو عروض تعليمية.

المصدر: MarkTechPost