بناء وكلاء ذكاء اصطناعي باستخدام Google ADK و TypeScript: دليل شامل من الصفر

AI Bot
بواسطة AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

عام 2026 هو عام الوكلاء الأذكياء (AI Agents). بدلاً من مجرد إرسال أسئلة لنموذج لغوي والحصول على إجابات، أصبح بإمكاننا بناء وكلاء يفكرون ويخططون ويستخدمون أدوات وينسقون مع وكلاء آخرين لإنجاز مهام معقدة.

Google Agent Development Kit (ADK) هو إطار عمل مفتوح المصدر أطلقته Google لتمكين المطورين من بناء وكلاء ذكاء اصطناعي بنهج Code-First — أي أنك تكتب كود TypeScript حقيقي بدلاً من الاعتماد على واجهات بصرية أو تكوينات معقدة.

لماذا Google ADK؟ على عكس الأطر الأخرى، يوفر ADK أمان أنواع TypeScript الكامل، بنية معيارية (Agents + Tools + Instructions)، دعم نماذج متعددة (Gemini وغيره)، ومرونة في النشر من المحلي إلى السحابي.

ما ستتعلمه

بنهاية هذا الدرس، ستكون قادراً على:

  • فهم بنية Google ADK ومكوناته الأساسية
  • إنشاء مشروع ADK كامل بـ TypeScript
  • بناء وكيل ذكي مع أدوات مخصصة (Custom Tools)
  • استخدام أنواع الوكلاء الثلاثة: LLM Agent، Sequential Agent، Parallel Agent
  • تشغيل الوكيل محلياً عبر الطرفية وواجهة المتصفح
  • تطبيق أنماط تصميم وكلاء الإنتاج

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

قبل البدء، تأكد من توفر ما يلي:

  • Node.js 20+ مثبت على جهازك
  • TypeScript (سنثبته مع المشروع)
  • حساب Google AI Studio للحصول على مفتاح API (مجاني)
  • معرفة أساسية بـ TypeScript و async/await
  • معرفة بمفاهيم LLM الأساسية (prompts، tokens)

ما هو Google ADK؟

Agent Development Kit هو إطار عمل مفتوح المصدر من Google مصمم لبناء وكلاء ذكاء اصطناعي. يتميز بـ:

الميزةالتفاصيل
نهج Code-Firstتعريف المنطق والأدوات والتنسيق مباشرة بالكود
أمان الأنواعTypeScript كامل مع Zod للتحقق من المدخلات
نماذج متعددةدعم Gemini 2.5 Flash، Gemini 3 Pro، Gemini 3 Flash والمزيد
معياريفصل بين الوكلاء والأدوات والتعليمات
مرن في النشرمحلي، Docker، أو Google Cloud Run
أدوات تطوير مدمجةواجهة ويب تفاعلية وخادم API

أنواع الوكلاء في ADK

يوفر ADK ثلاثة أنواع رئيسية من الوكلاء:

┌─────────────────────────────────────────────────────┐
│                  أنواع الوكلاء في ADK                  │
├─────────────────┬──────────────────┬────────────────┤
│   LLM Agent     │  Workflow Agent  │  Custom Agent  │
│                 │                  │                │
│  يستخدم نموذج    │  تنفيذ حتمي       │  منطق مخصص     │
│  لغوي للتفكير    │  ومتوقع          │  بالكامل       │
│  واتخاذ القرارات │                  │                │
│                 │  • Sequential    │  يمتد من       │
│  غير حتمي       │  • Parallel      │  BaseAgent     │
│  ومرن           │  • Loop          │                │
└─────────────────┴──────────────────┴────────────────┘

الخطوة 1: إعداد المشروع

لنبدأ بإنشاء مشروع ADK جديد:

mkdir my-adk-agent
cd my-adk-agent
npm init -y

ثبّت الحزم المطلوبة:

npm install @google/adk @google/adk-devtools
npm install -D typescript
  • @google/adk: الحزمة الأساسية لإنشاء الوكلاء والأدوات
  • @google/adk-devtools: أدوات التطوير (واجهة الويب، خادم API)

إعداد TypeScript

أنشئ ملف tsconfig.json:

{
  "compilerOptions": {
    "target": "es2020",
    "module": "nodenext",
    "moduleResolution": "nodenext",
    "esModuleInterop": true,
    "strict": true,
    "skipLibCheck": true,
    "verbatimModuleSyntax": false
  }
}

إعداد متغيرات البيئة

أنشئ ملف .env في جذر المشروع:

GOOGLE_GENAI_API_KEY=your_api_key_here
GOOGLE_GENAI_USE_VERTEXAI=false

كيف تحصل على مفتاح API؟ اذهب إلى Google AI Studio → سجّل الدخول → اضغط "Get API Key" → أنشئ مفتاحاً جديداً. المفتاح مجاني مع حصص استخدام سخية.

هيكل المشروع النهائي

my-adk-agent/
├── agent.ts              # الوكيل الرئيسي
├── tools/
│   ├── weather.ts        # أداة الطقس
│   ├── calculator.ts     # أداة الحسابات
│   └── search.ts         # أداة البحث
├── agents/
│   ├── researcher.ts     # وكيل البحث
│   └── writer.ts         # وكيل الكتابة
├── .env
├── package.json
└── tsconfig.json

الخطوة 2: بناء وكيلك الأول

لنبدأ بوكيل بسيط يجيب على الأسئلة:

// agent.ts
import { Agent } from "@google/adk";
 
const agent = new Agent({
  name: "MyAssistant",
  model: "gemini-2.5-flash",
  instruction: `أنت مساعد ذكي باللغة العربية.
    أجب على أسئلة المستخدم بدقة ووضوح.
    استخدم الأدوات المتاحة عند الحاجة.`,
});
 
export default agent;

هذا أبسط وكيل ممكن. يتكون من ثلاثة عناصر أساسية:

  1. name: اسم فريد للوكيل (مهم في أنظمة الوكلاء المتعددة)
  2. model: النموذج اللغوي المستخدم
  3. instruction: التعليمات التي تحدد سلوك الوكيل

تشغيل الوكيل

يوفر ADK ثلاث طرق لتشغيل الوكيل:

عبر الطرفية:

npx adk run agent.ts

عبر واجهة الويب (DevUI):

npx adk web

هذا يفتح واجهة تفاعلية على localhost:8000 تعرض المحادثة وتتبع استدعاءات الأدوات بصرياً.

كخادم API:

npx adk api_server

يمكنك اختباره بـ cURL:

curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ما هي عاصمة تونس؟"}'

الخطوة 3: إنشاء أدوات مخصصة (Custom Tools)

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

أداة الطقس

// tools/weather.ts
import { FunctionTool } from "@google/adk";
import { z } from "zod";
 
const weatherData: Record<string, { temp: number; condition: string }> = {
  tunis: { temp: 18, condition: "مشمس جزئياً" },
  riyadh: { temp: 32, condition: "مشمس وحار" },
  cairo: { temp: 25, condition: "صافي" },
  dubai: { temp: 35, condition: "مشمس" },
  casablanca: { temp: 20, condition: "غائم جزئياً" },
};
 
export const getWeather = new FunctionTool({
  name: "get_weather",
  description: "الحصول على معلومات الطقس الحالية لمدينة محددة",
  parameters: z.object({
    city: z
      .string()
      .describe("اسم المدينة بالإنجليزية مثل: tunis, riyadh, cairo"),
  }),
  handler: async ({ city }) => {
    const normalizedCity = city.toLowerCase().trim();
    const weather = weatherData[normalizedCity];
 
    if (!weather) {
      return {
        error: `لا تتوفر بيانات طقس للمدينة: ${city}`,
        availableCities: Object.keys(weatherData),
      };
    }
 
    return {
      city: normalizedCity,
      temperature: weather.temp,
      condition: weather.condition,
      unit: "celsius",
    };
  },
});

أداة الحسابات

// tools/calculator.ts
import { FunctionTool } from "@google/adk";
import { z } from "zod";
 
export const calculate = new FunctionTool({
  name: "calculate",
  description: "تنفيذ عمليات حسابية رياضية",
  parameters: z.object({
    expression: z
      .string()
      .describe("التعبير الحسابي مثل: 2 + 3 * 4"),
  }),
  handler: async ({ expression }) => {
    // تنظيف التعبير والسماح فقط بالأحرف الحسابية الآمنة
    const sanitized = expression.replace(/[^0-9+\-*/().%\s]/g, "");
 
    if (sanitized !== expression.trim()) {
      return { error: "التعبير يحتوي على أحرف غير مسموح بها" };
    }
 
    try {
      const result = Function(`"use strict"; return (${sanitized})`)();
      return {
        expression: sanitized,
        result: Number(result),
      };
    } catch {
      return { error: `فشل في حساب التعبير: ${sanitized}` };
    }
  },
});

أداة البحث في الويب

// tools/search.ts
import { FunctionTool } from "@google/adk";
import { z } from "zod";
 
export const searchWeb = new FunctionTool({
  name: "search_web",
  description: "البحث في الويب عن معلومات محدثة حول موضوع معين",
  parameters: z.object({
    query: z.string().describe("عبارة البحث"),
    language: z
      .enum(["ar", "en", "fr"])
      .optional()
      .describe("لغة النتائج المطلوبة"),
  }),
  handler: async ({ query, language = "ar" }) => {
    // في بيئة الإنتاج، استخدم Google Custom Search API أو SerpAPI
    // هذا مثال توضيحي
    return {
      query,
      language,
      results: [
        {
          title: `نتيجة بحث عن: ${query}`,
          snippet: `معلومات محدثة حول ${query} في عام 2026...`,
          url: `https://example.com/search?q=${encodeURIComponent(query)}`,
        },
      ],
      note: "في الإنتاج، اربط هذا بـ Google Custom Search API",
    };
  },
});

ربط الأدوات بالوكيل

الآن لنحدّث الوكيل الرئيسي ليستخدم هذه الأدوات:

// agent.ts
import { Agent } from "@google/adk";
import { getWeather } from "./tools/weather.js";
import { calculate } from "./tools/calculator.js";
import { searchWeb } from "./tools/search.js";
 
const agent = new Agent({
  name: "SmartAssistant",
  model: "gemini-2.5-flash",
  instruction: `أنت مساعد ذكي متعدد القدرات. لديك الأدوات التالية:
 
    1. **get_weather**: للحصول على معلومات الطقس. استخدمها عندما يسأل المستخدم عن الطقس.
    2. **calculate**: لتنفيذ العمليات الحسابية. استخدمها لأي حسابات رياضية.
    3. **search_web**: للبحث في الويب. استخدمها للمعلومات المحدثة.
 
    قواعد مهمة:
    - أجب دائماً بالعربية
    - استخدم الأدوات فقط عند الحاجة
    - إذا سأل المستخدم سؤالاً عاماً، أجب من معرفتك مباشرة
    - قدم إجابات واضحة ومنظمة`,
  tools: [getWeather, calculate, searchWeb],
});
 
export default agent;

لاحظ كيف أن التعليمات توضح للوكيل متى يستخدم كل أداة. هذا مهم جداً — الوكيل يقرر بنفسه أي أداة يستدعي بناءً على سياق المحادثة.

اختبار الوكيل مع الأدوات

شغّل الوكيل وجرّب هذه المحادثات:

أنت: كيف الطقس في تونس اليوم؟
الوكيل: [يستدعي get_weather(city: "tunis")]
        الطقس في تونس الآن: 18 درجة مئوية، مشمس جزئياً.

أنت: احسب لي 15% من 2500
الوكيل: [يستدعي calculate(expression: "2500 * 0.15")]
        15% من 2500 = 375

أنت: ما هي عاصمة اليابان؟
الوكيل: [يجيب مباشرة بدون أدوات]
        عاصمة اليابان هي طوكيو.

الخطوة 4: بناء نظام وكلاء متعددين (Multi-Agent)

القوة الحقيقية لـ ADK تظهر عند تنسيق عدة وكلاء معاً. لنبنِ نظاماً يتكون من:

  1. وكيل البحث: يجمع المعلومات
  2. وكيل الكتابة: يكتب محتوى بناءً على البحث
  3. وكيل المنسق: ينسق العمل بينهما

وكيل البحث

// agents/researcher.ts
import { Agent } from "@google/adk";
import { searchWeb } from "../tools/search.js";
 
export const researcher = new Agent({
  name: "Researcher",
  model: "gemini-2.5-flash",
  description: "وكيل متخصص في البحث وجمع المعلومات حول موضوع محدد",
  instruction: `أنت باحث متخصص. مهمتك:
    1. ابحث عن المعلومات المطلوبة باستخدام أداة البحث
    2. نظّم النتائج في نقاط واضحة
    3. حدد المصادر الموثوقة
    4. قدم ملخصاً شاملاً للنتائج
 
    اكتب نتائجك بالعربية بشكل منظم.`,
  tools: [searchWeb],
  outputKey: "research_results",
});

وكيل الكتابة

// agents/writer.ts
import { Agent } from "@google/adk";
 
export const writer = new Agent({
  name: "Writer",
  model: "gemini-2.5-flash",
  description: "وكيل متخصص في كتابة محتوى احترافي بناءً على بيانات البحث",
  instruction: `أنت كاتب محتوى محترف. مهمتك:
    1. اقرأ نتائج البحث من {research_results}
    2. اكتب مقالاً منظماً وجذاباً بناءً على هذه النتائج
    3. استخدم عناوين فرعية واضحة
    4. أضف مقدمة جذابة وخاتمة ملخصة
 
    اكتب بالعربية بأسلوب احترافي وسلس.`,
  outputKey: "final_article",
});

التنسيق التتابعي (Sequential Agent)

// agent.ts - نظام الوكلاء المتعددين
import { Agent, SequentialAgent } from "@google/adk";
import { researcher } from "./agents/researcher.js";
import { writer } from "./agents/writer.js";
 
const contentPipeline = new SequentialAgent({
  name: "ContentPipeline",
  description: "خط إنتاج المحتوى: بحث ثم كتابة",
  subAgents: [researcher, writer],
});
 
// الوكيل الرئيسي الذي ينسق كل شيء
const orchestrator = new Agent({
  name: "Orchestrator",
  model: "gemini-2.5-flash",
  instruction: `أنت منسق ذكي. عندما يطلب المستخدم كتابة مقال أو محتوى:
    1. وجّه المهمة إلى خط إنتاج المحتوى
    2. قدم النتيجة النهائية للمستخدم
 
    للأسئلة البسيطة، أجب مباشرة.`,
  subAgents: [contentPipeline],
});
 
export default orchestrator;

كيف يعمل التنسيق التتابعي؟

طلب المستخدم: "اكتب مقالاً عن الذكاء الاصطناعي في التعليم"
    │
    ▼
┌─ Orchestrator (المنسق) ─────────────────────────┐
│  يفهم أن المطلوب كتابة محتوى → يوجّه لـ Pipeline │
└──────────────────────────────────────────────────┘
    │
    ▼
┌─ ContentPipeline (SequentialAgent) ──────────────┐
│                                                   │
│  الخطوة 1: Researcher                             │
│  ├─ يستدعي search_web("الذكاء الاصطناعي التعليم")  │
│  ├─ ينظم النتائج                                  │
│  └─ يخزّن في research_results                     │
│                                                   │
│  الخطوة 2: Writer                                 │
│  ├─ يقرأ research_results                         │
│  ├─ يكتب مقالاً منظماً                            │
│  └─ يخزّن في final_article                        │
│                                                   │
└───────────────────────────────────────────────────┘
    │
    ▼
النتيجة: مقال كامل ومنظم بالعربية

الخطوة 5: التنسيق المتوازي (Parallel Agent)

ماذا لو أردت تنفيذ عدة مهام في نفس الوقت؟ استخدم ParallelAgent:

import { Agent, ParallelAgent, SequentialAgent } from "@google/adk";
 
// وكيل يبحث في مصادر عربية
const arabicResearcher = new Agent({
  name: "ArabicResearcher",
  model: "gemini-2.5-flash",
  instruction: "ابحث عن الموضوع في مصادر عربية وقدم النتائج بالعربية.",
  tools: [searchWeb],
  outputKey: "arabic_research",
});
 
// وكيل يبحث في مصادر إنجليزية
const englishResearcher = new Agent({
  name: "EnglishResearcher",
  model: "gemini-2.5-flash",
  instruction: "Search for the topic in English sources and summarize findings.",
  tools: [searchWeb],
  outputKey: "english_research",
});
 
// البحث المتوازي: كلا الوكيلين يعملان في نفس الوقت
const parallelResearch = new ParallelAgent({
  name: "ParallelResearch",
  description: "بحث متوازي في مصادر عربية وإنجليزية",
  subAgents: [arabicResearcher, englishResearcher],
});
 
// وكيل يدمج النتائج
const synthesizer = new Agent({
  name: "Synthesizer",
  model: "gemini-2.5-flash",
  instruction: `اقرأ نتائج البحث من:
    - المصادر العربية: {arabic_research}
    - المصادر الإنجليزية: {english_research}
 
    ادمج النتائج في تقرير شامل ومنظم بالعربية.`,
  outputKey: "final_report",
});
 
// خط الإنتاج الكامل: بحث متوازي → دمج
const advancedPipeline = new SequentialAgent({
  name: "AdvancedPipeline",
  subAgents: [parallelResearch, synthesizer],
});

الخطوة 6: إعدادات متقدمة للوكيل

التحكم في سلوك النموذج

const agent = new Agent({
  name: "PreciseAgent",
  model: "gemini-2.5-flash",
  instruction: "أنت مساعد دقيق ومختصر.",
  generateContentConfig: {
    temperature: 0.3, // إجابات أكثر دقة (0 = حتمي، 1 = إبداعي)
    maxOutputTokens: 2048, // الحد الأقصى لطول الإجابة
    topP: 0.8, // التنوع في اختيار الكلمات
    topK: 40, // عدد الخيارات المرشحة لكل كلمة
  },
});

التحكم في تنسيق المخرجات

const structuredAgent = new Agent({
  name: "StructuredAgent",
  model: "gemini-2.5-flash",
  instruction: "حلل البيانات وقدم النتائج بتنسيق JSON.",
  outputSchema: {
    type: "object",
    properties: {
      summary: { type: "string", description: "ملخص التحليل" },
      keyPoints: {
        type: "array",
        items: { type: "string" },
        description: "النقاط الرئيسية",
      },
      confidence: {
        type: "number",
        description: "مستوى الثقة من 0 إلى 1",
      },
    },
    required: ["summary", "keyPoints", "confidence"],
  },
});

استخدام متغيرات الحالة في التعليمات

const personalAgent = new Agent({
  name: "PersonalAssistant",
  model: "gemini-2.5-flash",
  instruction: `أنت مساعد شخصي لـ {user_name}.
    تفضيلات المستخدم: {user_preferences}
    سجل المحادثات السابقة: {conversation_history?}
 
    خاطب المستخدم باسمه وراعِ تفضيلاته.`,
});

المتغيرات بين {} تُستبدل تلقائياً من حالة الجلسة. علامة ? تعني أن المتغير اختياري.

الخطوة 7: أنماط تصميم الوكلاء في الإنتاج

النمط 1: Router Agent (التوجيه الذكي)

import { Agent } from "@google/adk";
 
const technicalSupport = new Agent({
  name: "TechnicalSupport",
  model: "gemini-2.5-flash",
  description: "يتعامل مع المشاكل التقنية والأعطال",
  instruction: "أنت فني دعم تقني. ساعد المستخدم في حل مشاكله التقنية.",
});
 
const salesAgent = new Agent({
  name: "SalesAgent",
  model: "gemini-2.5-flash",
  description: "يتعامل مع استفسارات المبيعات والأسعار",
  instruction: "أنت ممثل مبيعات. أجب عن الأسعار والعروض والخدمات.",
});
 
const generalAgent = new Agent({
  name: "GeneralAgent",
  model: "gemini-2.5-flash",
  description: "يتعامل مع الاستفسارات العامة",
  instruction: "أنت مساعد عام. أجب على الأسئلة العامة.",
});
 
// الموجّه الرئيسي — يقرر تلقائياً أي وكيل يستخدم
const router = new Agent({
  name: "Router",
  model: "gemini-2.5-flash",
  instruction: `أنت موجّه ذكي. حلل طلب المستخدم ووجّهه:
    - مشاكل تقنية → TechnicalSupport
    - أسئلة عن الأسعار والخدمات → SalesAgent
    - أي شيء آخر → GeneralAgent`,
  subAgents: [technicalSupport, salesAgent, generalAgent],
});

النمط 2: Pipeline with Validation (خط إنتاج مع تحقق)

import { Agent, SequentialAgent } from "@google/adk";
 
const dataCollector = new Agent({
  name: "DataCollector",
  model: "gemini-2.5-flash",
  instruction: "اجمع البيانات المطلوبة من المستخدم.",
  outputKey: "collected_data",
});
 
const validator = new Agent({
  name: "Validator",
  model: "gemini-2.5-flash",
  instruction: `تحقق من البيانات في {collected_data}:
    - هل جميع الحقول المطلوبة موجودة؟
    - هل البيانات بالتنسيق الصحيح؟
    - هل هناك تناقضات؟
    قدم تقرير التحقق.`,
  outputKey: "validation_report",
});
 
const processor = new Agent({
  name: "Processor",
  model: "gemini-2.5-flash",
  instruction: `بناءً على البيانات في {collected_data}
    وتقرير التحقق في {validation_report}:
    نفذ المعالجة المطلوبة وقدم النتيجة النهائية.`,
  outputKey: "final_output",
});
 
const pipeline = new SequentialAgent({
  name: "DataPipeline",
  subAgents: [dataCollector, validator, processor],
});

الخطوة 8: النشر والتشغيل في الإنتاج

التشغيل كخادم API

npx adk api_server --port 3000

التشغيل مع Docker

أنشئ Dockerfile:

FROM node:20-slim
 
WORKDIR /app
 
COPY package*.json ./
RUN npm ci --only=production
 
COPY . .
 
EXPOSE 8000
 
CMD ["npx", "adk", "api_server", "--host", "0.0.0.0"]
docker build -t my-adk-agent .
docker run -p 8000:8000 --env-file .env my-adk-agent

النشر على Google Cloud Run

# بناء الصورة ودفعها إلى Container Registry
gcloud builds submit --tag gcr.io/PROJECT_ID/my-adk-agent
 
# نشر على Cloud Run
gcloud run deploy my-adk-agent \
  --image gcr.io/PROJECT_ID/my-adk-agent \
  --platform managed \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_GENAI_API_KEY=your_key

استكشاف الأخطاء وحلها

مشكلة: "API key not found"

# تأكد من وجود ملف .env بالمفتاح الصحيح
echo $GOOGLE_GENAI_API_KEY
 
# أو مررها مباشرة
GOOGLE_GENAI_API_KEY=your_key npx adk run agent.ts

مشكلة: "Module not found"

# تأكد من استخدام امتداد .js في الاستيرادات (حتى لملفات .ts)
# صحيح:
import { getWeather } from "./tools/weather.js";
# خطأ:
import { getWeather } from "./tools/weather";

مشكلة: "Tool schema validation error"

// تأكد من استخدام Zod لتعريف مخطط المعاملات
import { z } from "zod";
 
// كل معامل يحتاج .describe() لمساعدة النموذج
parameters: z.object({
  query: z.string().describe("وصف واضح للمعامل"),
});

مشكلة: الوكيل لا يستدعي الأدوات

// حسّن التعليمات لتوضح متى يستخدم كل أداة
instruction: `
  استخدم أداة get_weather عندما يسأل المستخدم عن:
  - الطقس أو درجة الحرارة
  - حالة الجو في مدينة معينة
 
  لا تستخدمها للأسئلة العامة.
`;

الخطوات التالية

بعد إتقان الأساسيات، يمكنك:

  • إضافة أدوات MCP: يدعم ADK بروتوكول Model Context Protocol لربط أدوات خارجية
  • بناء وكلاء Loop: استخدم LoopAgent لتنفيذ مهام تكرارية حتى تحقيق شرط معين
  • تطبيق Callbacks: أضف منطق مخصص في دورة حياة الوكيل (قبل/بعد استدعاء الأدوات)
  • إضافة Artifacts: خزّن مخرجات دائمة (ملفات، صور) عبر نظام Artifacts
  • التقييم: استخدم إطار التقييم المدمج لقياس أداء وكلائك
  • النماذج الأخرى: جرّب Gemini 3 Pro للمهام المعقدة أو Gemini 3 Flash للسرعة

الخلاصة

في هذا الدرس، بنينا نظام وكلاء ذكاء اصطناعي كامل باستخدام Google ADK و TypeScript:

  1. أنشأنا وكيلاً بسيطاً مع تعليمات مخصصة
  2. بنينا أدوات مخصصة (طقس، حسابات، بحث) مع Zod validation
  3. نسّقنا عدة وكلاء باستخدام Sequential و Parallel Agents
  4. طبّقنا أنماط تصميم الإنتاج (Router، Pipeline مع تحقق)
  5. تعلمنا خيارات النشر (Docker، Cloud Run)

Google ADK يمثل نقلة نوعية في بناء وكلاء الذكاء الاصطناعي — فهو يجمع بين قوة TypeScript ومرونة الوكلاء وبساطة الاستخدام. ابدأ ببناء وكيلك الأول اليوم!


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على أساسيات بيولوجيا النبات للمعلوماتية الحيوية.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.

مقالات ذات صلة

بناء وكلاء الذكاء الاصطناعي من الصفر باستخدام TypeScript: إتقان نمط ReAct مع Vercel AI SDK

تعلّم كيفية بناء وكلاء الذكاء الاصطناعي من الأساس باستخدام TypeScript. يغطي هذا الدليل التعليمي نمط ReAct، واستدعاء الأدوات، والاستدلال متعدد الخطوات، وحلقات الوكلاء الجاهزة للإنتاج مع Vercel AI SDK.

35 د قراءة·