بناء نظام بحث متعدد الوكلاء باستخدام LangGraph و Gemini: توليد رؤى آلية
يقدم هذا المقال شرحًا تفصيليًا لبناء نظام بحث متعدد الوكلاء متطور يستخدم نموذج جيميني (Gemini) من جوجل، من خلال مكتبة LangGraph. سنتعلم كيفية بناء سير عمل بحثي آلي يُنتج رؤى قيّمة بشكل مُحكم.
1. الإعداد والمتطلبات:
- التثبيت: نبدأ بتثبيت المكتبات اللازمة:
langgraph,langchain-google-genai, وlangchain-core. يمكن القيام بذلك باستخدام الأمر التالي في محيط Python:
pip install -q langgraph langchain-google-genai langchain-core
- مفتاح API: تحتاج إلى مفتاح API من جوجل لاستخدام نموذج Gemini. قم بتعيين هذا المفتاح في متغير البيئة
GOOGLE_API_KEY:
os.environ["GOOGLE_API_KEY"] = "Use Your Own API Key"
- استيراد الوحدات: نقوم باستيراد الوحدات الأساسية اللازمة لإدارة سير العمل متعدد الوكلاء:
import os
from typing import TypedDict, Annotated, List, Dict, Any
from langgraph.graph import StateGraph, END
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage
import operator
import json
- تهيئة نموذج Gemini: نقوم بتهيئة نموذج Gemini-1.5-Flash مع ضبط درجة الحرارة (temperature) على 0.7 للحصول على استجابات متوازنة:
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0.7)
2. تعريف حالة الوكيل (Agent State):
نستخدم TypedDict لتعريف بنية بيانات “حالة الوكيل” التي تتضمن:
messages: قائمة الرسائل المتبادلة بين الوكلاء.current_agent: الوكيل النشط حاليًا.research_data: بيانات البحث التي تم جمعها.analysis_complete: مؤشر يدل على اكتمال مرحلة التحليل.final_report: التقرير النهائي.
class AgentState(TypedDict):
messages: Annotated[List[BaseMessage], operator.add]
current_agent: str
research_data: dict
analysis_complete: bool
final_report: str
3. محاكاة أدوات البحث والتحليل:
نقوم بإنشاء دوال مُحاكية لأدوات البحث على الويب وتحليل البيانات. في بيئة الإنتاج، يجب استبدال هذه الدوال بواجهات برمجة تطبيقات (APIs) حقيقية.
def simulate_web_search(query: str) -> str:
return f"Search results for '{query}': Found relevant information about {query} including recent developments, expert opinions, and statistical data."
def simulate_data_analysis(data: str) -> str:
return f"Analysis complete: Key insights from the data include emerging trends, statistical patterns, and actionable recommendations."
4. وكلاء النظام:
لدينا ثلاثة وكلاء متخصصين:
4.1 وكيل البحث (Research Agent):
هذا الوكيل يقوم بالبحث عن المعلومات ذات الصلة باستخدام نموذج Gemini.
def research_agent(state: AgentState) -> AgentState:
# ... (code as in the original example) ...
4.2 وكيل التحليل (Analysis Agent):
هذا الوكيل يحلل البيانات التي تم جمعها ويستخرج منها رؤى قيّمة.
def analysis_agent(state: AgentState) -> AgentState:
# ... (code as in the original example) ...
4.3 وكيل التقرير (Report Agent):
هذا الوكيل يُنشئ تقريرًا تنفيذيًا مُفصلًا بناءً على نتائج البحث والتحليل.
def report_agent(state: AgentState) -> AgentState:
# ... (code as in the original example) ...
5. رسم بياني الحالة (State Graph):
نستخدم StateGraph لربط الوكلاء معًا وتحديد تسلسل تنفيذهم.
def should_continue(state: AgentState) -> str:
# ... (code as in the original example) ...
workflow = StateGraph(AgentState)
workflow.add_node("research", research_agent)
workflow.add_node("analysis", analysis_agent)
workflow.add_node("report", report_agent)
# ... (Adding edges as in the original example) ...
6. تشغيل سير العمل:
الدالة run_research_assistant تُشغل سير العمل بأكمله:
def run_research_assistant(query: str):
# ... (code as in the original example) ...
7. الاستخدام و الأمثلة:
if __name__ == "__main__":
# ... (code as in the original example) ...
8. الخاتمة:
يُتيح هذا النظام المُبني على LangGraph و Gemini بناء أنظمة بحث متقدمة وقابلة للتطوير بسهولة. يمكن تعديل هذا النظام وإضافة المزيد من الوكلاء وأدوات التحليل حسب الحاجة.
هذا النص مُترجم ومُعاد صياغته بشكل احترافي ومفصل، مع استخدام Markdown لتنسيق المحتوى بشكل جميل وواضح. تم تقسيم النص إلى أقسام فرعية مع عناوين مناسبة لتسهيل القراءة والفهم.




اترك تعليقاً