1. مقدمة
في هذا الدرس التطبيقي حول الترميز، ستنشئ أول وكيل مستنِد إلى الذكاء الاصطناعي خطوة بخطوة باستخدام "حزمة تطوير الوكلاء" (ADK) من Google وGemini. ستنشئ وكيلًا أساسيًا لكتابة المدوّنات يخطّط للمحتوى ويكتبه، مع عرض المفاهيم الأساسية للاستدلال والتنفيذ.
الإجراءات التي ستنفذّها
- إعداد بيئة التطوير لحزمة تطوير التطبيقات (ADK)
- إنشاء نظام متعدد الوكلاء باستخدام "المخطِّط" و"الكاتب"
- تشغيل الوكيل محليًا والتفاعل معه من خلال واجهة مستخدم الويب الخاصة بحزمة ADK
المتطلبات
- متصفّح ويب، مثل Chrome
- تثبيت الإصدار 3.10 أو إصدار أحدث من Python على جهازك
- مفتاح واجهة برمجة تطبيقات Google AI Studio
هذا الدرس التطبيقي حول الترميز مخصّص للمطوّرين من جميع المستويات، بما في ذلك المبتدئين.
المدة المقدَّرة: 30 دقيقة
2. دليل مرئي: ما هي "وكلاء الذكاء الاصطناعي"؟
قبل أن نبدأ في إنشاء وكلاء الذكاء الاصطناعي، دعونا نتعرّف سريعًا على ماهيتهم والأنماط الشائعة التي يتبعونها.
ما هو وكيل الذكاء الاصطناعي؟

في أبسط مستوياته، الوكيل هو برنامج لا يكتفي بالإجابة، بل يمكنه اتخاذ القرارات وتنفيذ الإجراءات. بدلاً من إنشاء ردّ واحد مثل برامج الدردشة التقليدية، ينظر إلى طلبك، ويحدّد الخطوات التي يجب اتّخاذها، وربما يستدعي واجهة برمجة تطبيقات، وينفّذ الرمز، وينظر إلى النتيجة، ثم يقرّر الخطوة التالية.

أحد أوضح الشروحات يأتي من ورقة البحث ReAct: Synergizing Reasoning and Acting in Language Models. كانت الفكرة الواردة في هذه الورقة بسيطة ولكنها فعّالة: لا يجب أن تنشئ نماذج اللغة النص دفعة واحدة، بل يمكنها التفكير خطوة بخطوة، واتّخاذ إجراء مثل استدعاء أداة أو واجهة برمجة تطبيقات، ومراقبة النتيجة، ثم تحديد الخطوة التالية.
تشكّل دورة الاستدلال والتنفيذ والمراقبة والتعديل هذه الأساس الذي تعمل به وكلاء الذكاء الاصطناعي الحديثة. ويتوافق ذلك مع تعريف Google Cloud لها بأنّها أنظمة تتضمّن قدرات على الاستدلال والتخطيط والتذكّر، مع قدر كافٍ من الاستقلالية للتكيّف واتّخاذ القرارات نيابةً عن المستخدم.
ثلاثة أنماط سلوك للوكلاء
لا تتشابه طريقة عمل جميع البرامج. يمكن التفكير في هذه الأنماط من خلال ثلاثة أنماط عامة:

- الوكلاء التسلسليون: يعمل هؤلاء الوكلاء خطوة بخطوة مثل خط التجميع: الخطوة 1، ثم الخطوة 2، ثم الخطوة 3. وهم يمكن التنبؤ بهم، ولكنهم غير مرنين.
- الوكلاء التفاعليون: يتّخذون القرارات في الوقت الحالي، إذ يحلّلون الحالة الراهنة ويسألون: "ماذا يجب أن أفعل بعد ذلك؟" قد يستخدمون "الأداة أ" مرة، و"الأداة ب" في المرة التالية، فهم مرنون، ولكنّهم لا يخططون مسبقًا.
- الوكلاء المدروسون أو وكلاء التخطيط: يتوقف هؤلاء الوكلاء مؤقتًا لوضع خطة، ثم ينفّذونها. عند التفكير في حجز رحلة، لا تشتري رحلة جوية بشكل عشوائي، بل تختار التواريخ والفنادق وترتّب الخطوات ثم تنفّذها.
أيّ من هذه الخيارات هو "الصحيح"؟ يعتمد ذلك على المشكلة. بالنسبة إلى العمليات البسيطة التي يمكن توقّعها، يكون التسلسل مناسبًا. أما بالنسبة إلى المهام الديناميكية، فيكون التفاعل أفضل. وبالنسبة إلى الأهداف المتعددة الخطوات التي تتضمّن تبعيات، ستحتاج إلى وكلاء تخطيط.
في هذا الدرس العملي، سننشئ وكيلاً تداوليًا/تخطيطيًا يضع أولاً مخططًا تفصيليًا ثم يكتب منشور المدونة.
3- قبل البدء
إنشاء حساب ومشروع على Google Cloud
لنشر وكيلك على Google Cloud Run لاحقًا في هذا المختبر، يجب أن يكون لديك حساب على Google Cloud ومشروع مع تفعيل الفوترة.
- سجِّل الدخول إلى Google Cloud Console. أنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Google، عليك إنشاء حساب.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Cloud. من المفترض أن تكلفك تجربة هذا الدرس العملي أقل من بضعة سنتات. قد يكون مستخدمو Google Cloud الجدد مؤهّلين أيضًا للاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
- دوِّن معرّف المشروع (اسم فريد في جميع مشاريع Google Cloud)، لأنّك ستحتاج إليه لإعداد العامل ونشره.
الحصول على مفتاح واجهة برمجة تطبيقات Google AI Studio
لاستخدام نماذج Gemini، تحتاج إلى مفتاح واجهة برمجة تطبيقات من Google AI Studio.
- انتقِل إلى Google AI Studio.
- انقر على الحصول على مفتاح واجهة برمجة التطبيقات.
- أنشئ مفتاحًا جديدًا أو استخدِم مفتاحًا حاليًا، ثم انسخ المفتاح لاستخدامه لاحقًا.
4. إنشاء بنية مشروع "وكيل كتابة المدونات"
في هذه الخطوة، عليك إعداد الدليل والملفات التي ستتضمّن الرمز البرمجي الخاص بأداة كتابة المدوّنات على جهازك.
1. إنشاء مساحة عمل وكيل كتابة المدوّنات
افتح الوحدة الطرفية ونفِّذ الأوامر التالية لإنشاء دليل مخصّص لوكيل كتابة المدونات والانتقال إليه:
mkdir bloggeragent
cd bloggeragent
2. تهيئة ملفات الوكيل
يحمّل إطار عمل Google ADK مسارات عمل الوكيل مباشرةً من دليل مشروعك. أنشئ الملفات اللازمة مباشرةً في جذر bloggeragent:
touch requirements.txt .env __init__.py agent.py
5- تثبيت التبعيات وإعداد البيئة
في هذه الخطوة، ستُعدّ بيئة Python افتراضية وتثبّت إطار عمل Google ADK وتضبط متغيّرات البيئة لمصادقة وكيل مدونتك باستخدام نموذج Gemini.
1. ضبط متطلبات الوكيل
افتح ملف requirements.txt في الدليل bloggeragent وحدِّد الحِزم اللازمة لأداة كتابة المدونات من خلال إضافة ما يلي إليه:
google-adk==2.2.0
python-dotenv
2. إنشاء بيئة افتراضية للوكيل
من الدليل bloggeragent، أنشئ بيئة Python افتراضية وفعّلها لعزل حِزم الوكيل:
python3 -m venv .venv
source .venv/bin/activate
3- تثبيت إطار عمل ADK
ثبِّت التبعيات المحدّدة في requirements.txt لتزويد مساحة العمل المحلية بـ "حزمة تطوير الوكلاء" من Google:
pip install -r requirements.txt
4. ضبط بيانات اعتماد واجهة برمجة التطبيقات الخاصة بالوكيل
افتح ملف .env الذي أنشأته في جذر المشروع وأضِف مفتاح Gemini API:
GOOGLE_API_KEY=your_api_key
استبدِل your_api_key بالمفتاح الذي نسخته من Google AI Studio.
6. إنشاء أداة كتابة مدوّنات متعددة الوكلاء
في هذه الخطوة، ستنفّذ سير العمل الأساسي لنظام وكيل كتابة المدوّنات.
بدلاً من إنشاء روبوت محادثة بسيط يستجيب لطلب واحد، ستنشئ نظامًا معقّدًا متعدد الوكلاء يستخدم حلقات التصحيح الذاتي والتحقّق من المخطط التفصيلي لكتابة منشورات فنية عالية الجودة. يتبع ذلك نمط التفكير/التخطيط الذي ناقشناه سابقًا.
نظرة عامة على البنية

إليك كيفية تفاعل العملاء المتخصّصين في نظامك:
إعداد init.py
افتح __init__.py في محرّر النصوص وأضِف عملية الاستيراد التالية لعرض سير عمل الوكيل على المشغّل:
from . import agent
كتابة سير عمل وكيل كتابة المدوّنات
افتح ملف agent.py في أداة تعديل الرموز وأضِف الرمز التالي الذي يحدّد "المخطِّط" و"الكاتب" و"أدوات التحقّق من الصحة" وعميل Blogger الرئيسي:
import os
import sys
from pathlib import Path
import datetime
from dotenv import load_dotenv
from google.adk.agents import Agent, LoopAgent
from google.adk.tools import agent_tool
# env config
load_dotenv()
MODEL = os.getenv("MODEL", "gemini-flash-latest")
# Sub-Agent: Planner
blog_planner = Agent(
name="BlogPlanner",
model=MODEL,
description="Creates a practical, skimmable outline in Markdown.",
instruction="""
You are a technical content strategist. Produce a clear Markdown outline with:
- Title
- Short intro
- 4–6 main sections (each with 2–3 bullets)
- Conclusion
If `codebase_context` exists in state, weave in specific sections/snippets.
Return only the outline in Markdown.
""",
output_key="blog_outline",
)
class OutlineValidationChecker(Agent):
def __init__(self):
super().__init__(
name="OutlineValidationChecker",
model=MODEL,
description="Validates that the outline is usable.",
instruction="""
Check the outline in state `blog_outline`. If it has a title, intro, 4–6 sections, and a conclusion, respond exactly "ok".
Otherwise respond exactly "retry" and list missing pieces.
""",
output_key="validation_result",
)
robust_blog_planner = LoopAgent(
name="RobustBlogPlanner",
description="Retries planning if validation fails.",
sub_agents=[blog_planner, OutlineValidationChecker()],
max_iterations=3,
)
# Sub-Agent: Writer
blog_writer = Agent(
name="BlogWriter",
model=MODEL,
description="Writes a technical blog post from the outline.",
instruction="""
Write a complete Markdown article from the outline in `blog_outline`.
Guidelines:
- Audience: software engineers; skip basics and focus on practical insight.
- Explain both the 'how' and 'why'.
- Include concise code snippets when helpful.
- Follow the outline's structure (H2/H3).
- Output only the final article in Markdown (no fence around the whole post).
""",
output_key="blog_post",
)
class BlogPostValidationChecker(Agent):
def __init__(self):
super().__init__(
name="BlogPostValidationChecker",
model=MODEL,
description="Validates the final post.",
instruction="""
Check `blog_post` for: intro, clear sections matching the outline, conclusion, and technical clarity.
If passes, respond "ok". Else respond "retry" with the specific fixes.
""",
output_key="validation_result",
)
robust_blog_writer = LoopAgent(
name="RobustBlogWriter",
description="Retries writing if validation fails.",
sub_agents=[blog_writer, BlogPostValidationChecker()],
max_iterations=3,
)
# Expose planner/writer as tools so the root agent can call them explicitly
planner_tool = agent_tool.AgentTool(agent=robust_blog_planner)
writer_tool = agent_tool.AgentTool(agent=robust_blog_writer)
# Root Agent: Plan → Write
root_agent = Agent(
name="Blogger",
model=MODEL,
description="Minimal multi-agent blogger that plans and writes.",
instruction=f"""
If the user gives a topic:
1) Call the planner tool to generate the outline.
2) Call the writer tool to produce the full draft.
3) End with 3 alternate titles and 2 tweet-length hooks.
Date: {datetime.datetime.now().strftime("%Y-%m-%d")}
""",
tools=[
planner_tool, # calls RobustBlogPlanner
writer_tool, # calls RobustBlogWriter
],
)
فهم بنية الوكيل
لنقسّم المكوّنات الرئيسية للرمز الذي أضفته للتو في agent.py لفهم كيفية تنفيذ سير عمل التخطيط والكتابة باستخدام عدة وكلاء:
1. The BlogPlanner Sub-Agent
يكون وكيل blog_planner مسؤولاً عن التخطيط للمحتوى. يأخذ هذا التطبيق الموضوع الذي يقدّمه المستخدم وينتج مخططًا تفصيليًا منظَّمًا بتنسيق Markdown (مع عنوان ومقدمة و4 إلى 6 أقسام وخاتمة). يتم حفظ المخطط التفصيلي في قاموس الحالة المشترَكة ضمن المفتاح "blog_outline".
2. The OutlineValidationChecker
يعمل وكيل OutlineValidationChecker كبوابة جودة، فهو يراجع "blog_outline" الذي تم إنشاؤه في الحالة. وإذا كان المخطط التفصيلي صالحًا، يردّ بالرمز "ok"، وإلا يعرض "retry" مع قائمة بالعناصر الناقصة.
3- The RobustBlogPlanner Loop
لمنع الوكيل من إنشاء مخططات سيئة، نضع أداة التخطيط وأداة التحقّق من الصحة داخل حلقة LoopAgent تُسمى robust_blog_planner. وفي حال تعذُّر التحقّق من الصحة وعرض "retry"، تعيد الحلقة تشغيل أداة التخطيط تلقائيًا، بحد أقصى 3 مرات، ما يضمن التصحيح الذاتي قبل الانتقال إلى المرحلة التالية.
4. الوكيل الفرعي BlogWriter
بعد الانتهاء من المخطط التفصيلي، يقرأ الوكيل blog_writer "blog_outline" من الحالة وينشئ المقالة الفنية الكاملة بتنسيق Markdown، مع مراعاة بنية المخطط التفصيلي وتخصيصها لمهندسي البرامج.
5- حلقة BlogPostValidationChecker وRobustBlogWriter
وكما هو الحال مع المخطّط التفصيلي، يتم التحقّق من صحة المقالة النهائية من خلال BlogPostValidationChecker للتأكّد من أنّ جميع الأقسام الرئيسية متوفرة وواضحة. يتم تضمين الكاتب والمدقّق في حلقة robust_blog_writer، ما يسمح له بتصحيح نفسه 3 مرات كحد أقصى إذا رصد المدقّق مشاكل.
6. عرض "الحلقات" كأدوات
نغلّف حلقة التخطيط (robust_blog_planner) وحلقة الكتابة (robust_blog_writer) كأدوات (planner_tool وwriter_tool) باستخدام AgentTool. يتيح ذلك للوكلاء الآخرين استدعاء مسارات العمل المعقّدة هذه كما لو كانت أدوات بسيطة.
7. الوكيل الجذر في Blogger
تنسّق root_agent (المسمّاة Blogger) سير العمل بأكمله. وعندما يتم تزويدها بموضوع، ترشدها تعليماتها إلى ما يلي:
- اتّصِل بالرقم
planner_toolلإنشاء المخطط التفصيلي الذي تم التحقّق منه. - اطلب من
writer_toolكتابة المسودّة استنادًا إلى هذا المخطّط. - أنهِ العملية من خلال إنشاء 3 عناوين بديلة وجملتين جذابتين للتغريدات.
تضمن بنية الحلقة المتعددة الوكلاء هذه الموثوقية من خلال رصد أخطاء التنسيق أو الأخطاء البنيوية في نماذج اللغات الكبيرة وتصحيحها قبل عرض الناتج للمستخدم.
7. تشغيل الوكيل واختباره
حان الوقت الآن لتجربة الوكيل.
1. بدء واجهة مستخدم ADK على الويب
تأكَّد من أنّك في دليل جذر مشروع bloggeragent في نافذة الأوامر وأنّ بيئتك الافتراضية نشطة (source .venv/bin/activate)، ثم ابدأ واجهة الويب:
adk web
2. التفاعل مع الوكيل
- افتح المتصفّح وانتقِل إلى
http://127.0.0.1:8000(أو المنفذ الذي حدّدته). - من المفترض أن تظهر لك واجهة مستخدم ADK على الويب مع تحميل الوكيل
Bloggerوتصميمه المرئي (الذي يعرض الوكيل الجذر Blogger الذي يشير إلى أداتَي RobustBlogPlanner وRobustBlogWriter):
- اكتب موضوعًا فنيًا في مربّع الرسالة واضغط على Enter. في ما يلي بعض الطلبات الاختبارية المثيرة للاهتمام التي يمكنك استخدامها لتقييم وكيلك:
How to build an AI agent using planning loopsExplain the difference between REST and gRPC in microservicesA guide to using Python's asyncio for backend concurrencyWhy developers should use Docker for local database setups
- مشاهدة تتبُّع التنفيذ في واجهة المستخدم سيظهر لك
BlogPlannerوهو ينشئ المخطط التفصيلي، وOutlineValidationCheckerوهو يتحقّق من صحته، وBlogWriterوهو يكتب المسودّة النهائية استنادًا إلى المخطط التفصيلي:
8. النشر على Cloud Run
بعد التأكّد من أنّ الوكيل يعمل على جهازك، لننشره على Google Cloud Run ليتمكّن الآخرون من استخدامه.
Google Cloud Run هي منصة حوسبة مُدارة تتيح لك تشغيل حاويات لا يتم تسجيل بياناتها ويمكن استدعاؤها من خلال طلبات الويب أو أحداث Pub/Sub.
1. المتطلبات الأساسية للنشر
لنشر وكيل كتابة المدونات على Cloud Run، عليك تثبيت واجهة سطر الأوامر (CLI) في Google Cloud (gcloud) والمصادقة عليها على جهازك المحلي:
- تثبيت Google Cloud CLI: إذا لم يكن مثبّتًا، اتّبِع دليل تركيب Google Cloud CLI لنظام التشغيل (macOS أو Windows أو Linux).
- مصادقة الوحدة الطرفية المحلية: بعد التثبيت، نفِّذ الأمر التالي في الوحدة الطرفية لتسجيل الدخول إلى حسابك على Google Cloud:
gcloud auth login - التحقّق من المصادقة: تأكَّد من تسجيل الدخول إلى حسابك بنجاح ومن إمكانية الوصول إلى موارد Google Cloud باتّباع الخطوات التالية:
gcloud auth list
2. إعداد مشروع Google Cloud
اضبط مشروعك النشط في نافذة الوحدة الطرفية:
gcloud config set project <YOUR_PROJECT_ID>
فعِّل خدمات Google Cloud اللازمة لإنشاء الوكيل المحفوظ في حاوية ونشره:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
بما أنّ أمر نشر ADK يستخدم Google Cloud Build لأتمتة عملية الإنشاء، يجب منح حساب خدمة الحوسبة التلقائي إذنًا باستخدام Cloud Build.
ابحث عن رقم مشروعك من خلال تنفيذ ما يلي:
gcloud projects describe <YOUR_PROJECT_ID> --format="value(projectNumber)"
نفِّذ الأوامر التالية لربط أدوار IAM المطلوبة (استبدِل برقم تعريف مشروعك و بالرقم الذي تم عرضه من الأمر أعلاه).
- امنح Cloud Build الإذن بإنشاء الحاوية:
gcloud projects add-iam-policy-binding <YOUR_PROJECT_ID> \
--member="serviceAccount:<PROJECT_NUMBER>-compute@developer.gserviceaccount.com" \
--role="roles/cloudbuild.builds.builder"
- امنح وكيل Gemini Enterprise إذن الوصول حتى يتمكّن الوكيل الذي تم نشره من استدعاء نماذج Gemini بدون الحاجة إلى مفتاح واجهة برمجة التطبيقات:
gcloud projects add-iam-policy-binding <YOUR_PROJECT_ID> \
--member="serviceAccount:<PROJECT_NUMBER>-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"
3- إعداد متغيّرات البيئة المحلية
لتبسيط أمر النشر وتجنُّب الأخطاء الإملائية، اضبط رقم تعريف مشروعك كمتغيّر بيئة في جلسة الوحدة الطرفية:
export PROJECT_ID="<YOUR_PROJECT_ID>"
4. النشر باستخدام واجهة سطر الأوامر (CLI) لحزمة نشر الوكلاء (ADK)
توفّر واجهة سطر الأوامر (CLI) الخاصة بـ ADK أمرًا مبسطًا لنشر الوكيل على Cloud Run.
تأكَّد من أنّ بيئتك الافتراضية نشطة وأنّك في دليل مشروع bloggeragent، ثم نفِّذ أمر النشر:
# Deploy using ADK
adk deploy cloud_run \
--project=$PROJECT_ID \
--region=us-east1 \
--service_name=bloggeragent \
--with_ui \
. \
-- \
--set-env-vars GOOGLE_GENAI_USE_VERTEXAI=TRUE,MODEL=gemini-3.5-flash,GOOGLE_CLOUD_LOCATION=global
أثناء عملية النشر، سيُطلب منك الإجابة عن السؤالَين التاليَين في نافذة الأوامر:
- تأكيد إنشاء المستودع:
اكتبDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-east1] will be created. Do you want to continue (Y/n)?
Yواضغط على Enter. - السماح بالوصول بدون مصادقة:
اكتبAllow unauthenticated invocations to [bloggeragent] (y/N)?
yواضغط على Enter (يتيح لك ذلك الوصول إلى واجهة مستخدم الويب الخاصة بـ ADK بشكل علني في المتصفّح).
5- الوصول إلى الوكيل الذي تم نشره
بعد اكتمال عملية النشر، سيُخرج الأمر عنوان URL. افتح عنوان URL هذا في المتصفّح للوصول إلى واجهة مستخدم ADK Web المنشورة والمتاحة للجميع.
9- تَنظيم
لتجنُّب الرسوم المستمرة على حسابك على Google Cloud، احذف الموارد التي تم إنشاؤها أثناء هذا الدرس العملي.
1. حذف خدمة Cloud Run
احذف خدمة bloggeragent التي تم نشرها:
gcloud run services delete bloggeragent --region=us-east1 --quiet
2. حذف مستودع Artifact Registry
احذف مستودع Docker الذي تم إنشاؤه لتخزين صور الحاويات التي تم إنشاؤها:
gcloud artifacts repositories delete cloud-run-source-deploy --location=us-east1 --quiet
3- إيقاف الخادم المحلي
لإيقاف خادم ADK المحلي، اضغط على CTRL+C في الوحدة الطرفية التي يتم تشغيله فيها، وأوقِف البيئة الافتراضية:
deactivate
10. تهانينا
تهانينا! لقد أنشأت وكيل الذكاء الاصطناعي الأول باستخدام حزمة تطوير التطبيقات من Google وGemini.
ما تعلّمته
- المفاهيم الأساسية لوكلاء الذكاء الاصطناعي (الاستدلال والتنفيذ)
- كيفية استخدام "حزمة تطوير الوكلاء" من Google لإنشاء نظام متعدد الوكلاء
- كيفية تشغيل الوكيل واختباره باستخدام واجهة مستخدم الويب
الخطوات التالية
- جرِّب إضافة أدوات إلى وكيلك (مثل البحث على الويب أو طلبات البيانات من واجهة برمجة التطبيقات).
- ترقَّبوا الفيديو 2 الذي سنشرح فيه كيفية دمج خادم MCP.