تخطَّ إلى المحتوى الرئيسي
ذكاء اصطناعي · دورة مسجّلة

دورة الذكاء الاصطناعي العملية

لا نظريات ولا شرائح عرض. تنهي الدورة ولديك مشروع ذكاء اصطناعي شغّال ومنشور على الإنترنت برابط تشاركه — مبني على بياناتك أنت، بالعربية، ومن الصفر.

المُخرَج النهائي

كل وحدة تضيف قطعة لمشروع واحد تبنيه معنا خطوة بخطوة، بدلاً من تمارين متفرقة تُنسى.

مساعد ذكي فوق مستنداتك

يجيب من ملفاتك العربية مع الإشارة للمصدر، وواجهة محادثة RTL منشورة على الإنترنت.

أو مشروعك أنت

نفس البنية تُطبَّق على فكرتك: أداة داخلية، مصنّف طلبات، أو مولّد تقارير.

مخرجات التعلم

  • تبني مشروع ذكاء اصطناعي كاملاً من الفكرة حتى النشر على نطاق حقيقي
  • تربط النموذج ببياناتك الخاصة عبر RAG مع استشهاد بالمصدر بدلاً من إجابات مُختلَقة
  • تكتب تعليمات تُنتج مخرجات مهيكلة يمكن لبرنامجك الاعتماد عليها
  • تقيس جودة المخرجات برقم بدل الانطباع، وتضبط حواجز الأمان
  • تحسب تكلفة التشغيل الشهرية وتخفّضها بالتخزين المؤقت واختيار النموذج
  • تحمي مفاتيح الوصول وبيانات المستخدمين وفق ضوابط حماية البيانات الشخصية

المنهج

8 وحدات بإجمالي 9 ساعات فيديو، ولكل وحدة مُخرَج ملموس يُضاف لمشروعك.

الوحدة 1: تأطير المشكلة قبل كتابة سطر واحد

0.75 ساعة
متى يصلح الذكاء الاصطناعي ومتى لا يصلح
تحديد مُخرَج قابل للقياس
حدود المشروع

تُنهي الوحدة ولديك: وثيقة تعريف مشروعك في صفحة واحدة

كود جاهز:project.config.ts

الوحدة 2: أساسيات النماذج اللغوية عملياً

1 ساعة
Tokens والتكلفة
درجة الحرارة والحتمية
اختيار النموذج المناسب للمهمة

تُنهي الوحدة ولديك: جدول مقارنة نماذج لحالتك

كود جاهز:compare-models.ts

الوحدة 3: هندسة التعليمات المنظّمة

1.25 ساعة
تعليمات النظام
المخرجات المهيكلة JSON
استدعاء الأدوات Tool Calling

تُنهي الوحدة ولديك: مكتبة تعليمات مُختبَرة لمشروعك

كود جاهز:structured-output.ts

الوحدة 4: بياناتك الخاصة: RAG من الصفر

1.5 ساعة
التقطيع Chunking
التضمينات Embeddings
قاعدة بيانات متجهية
استرجاع مع الاستشهاد بالمصدر

تُنهي الوحدة ولديك: محرك بحث دلالي فوق مستنداتك العربية

كود جاهز:schema.sqlretrieve.ts

الوحدة 5: بناء الواجهة والخلفية

1.5 ساعة
واجهة محادثة متجاوبة RTL
بث الردود Streaming
مفاتيح API على الخادم لا في المتصفح

تُنهي الوحدة ولديك: تطبيق ويب يعمل محلياً

كود جاهز:api.chat.tsuseChatStream.ts

الوحدة 6: الجودة والتقييم

1 ساعة
مجموعة اختبار ذهبية
قياس الهلوسة
حواجز الأمان والرفض الآمن

تُنهي الوحدة ولديك: تقرير تقييم برقم دقة قبل/بعد

كود جاهز:eval.ts

الوحدة 7: التكلفة والأداء والخصوصية

1 ساعة
التخزين المؤقت
حدود الاستهلاك
معالجة البيانات الشخصية وفق PDPL

تُنهي الوحدة ولديك: نموذج تكلفة شهرية لمشروعك

كود جاهز:guards.ts

الوحدة 8: النشر والعرض

1 ساعة
النشر على نطاق حقيقي
المراقبة والسجلات
عرض المشروع في ملفك المهني

تُنهي الوحدة ولديك: مشروع منشور برابط عام تشاركه

كود جاهز:health-and-logs.ts

معاينة الكود قبل النشر

الدورة تُسلَّم بـ 10 ملف كود حقيقي تنسخه وتشغّله، لا شرائح عرض. هذه عيّنة مفتوحة من وحدتين قبل إطلاق الفيديوهات.

من الوحدة 3: هندسة التعليمات المنظّمة

structured-output.ts
import { z } from "zod";

export const TicketSchema = z.object({
  category: z.enum(["billing", "technical", "account", "other"]),
  urgency: z.number().int().min(1).max(5),
  summary_ar: z.string().max(200),
  needs_human: z.boolean(),
});
export type Ticket = z.infer<typeof TicketSchema>;

const SYSTEM = `أنت مصنّف طلبات دعم.
- صنّف الطلب ولا تجب على العميل.
- إن كان الطلب يتضمن شكوى قانونية أو مالية حسّاسة اجعل needs_human = true.
- أعد JSON فقط بلا أي نص إضافي.`;

export async function classify(ticketText: string): Promise<Ticket> {
  const res = await fetch("https://ai.gateway.lovable.dev/v1/chat/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env["LOVABLE_API_KEY"]}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "google/gemini-2.5-flash",
      temperature: 0,
      messages: [
        { role: "system", content: SYSTEM },
        { role: "user", content: ticketText },
      ],
      response_format: {
        type: "json_schema",
        json_schema: {
          name: "ticket",
          strict: true,
          schema: {
            type: "object",
            additionalProperties: false,
            required: ["category", "urgency", "summary_ar", "needs_human"],
            properties: {
              category: { type: "string", enum: ["billing", "technical", "account", "other"] },
              urgency: { type: "integer", minimum: 1, maximum: 5 },
              summary_ar: { type: "string" },
              needs_human: { type: "boolean" },
            },
          },
        },
      },
    }),
  });

  const json = await res.json();
  // لا تثق بالمخرج: تحقّق دائماً قبل التخزين أو العرض
  return TicketSchema.parse(JSON.parse(json.choices[0].message.content));
}

يجبر النموذج على مخطط JSON ثابت ثم يتحقّق منه بـ Zod قبل استخدامه.

من الوحدة 4: بياناتك الخاصة: RAG من الصفر

schema.sql
create extension if not exists vector;

create table public.doc_chunks (
  id uuid primary key default gen_random_uuid(),
  owner_id uuid not null references auth.users(id) on delete cascade,
  source_title text not null,
  source_url text,
  chunk_index int not null,
  content text not null,
  embedding vector(768) not null,
  created_at timestamptz not null default now()
);

grant select, insert, update, delete on public.doc_chunks to authenticated;
grant all on public.doc_chunks to service_role;

alter table public.doc_chunks enable row level security;

create policy "owners read their chunks"
on public.doc_chunks for select to authenticated
using (owner_id = auth.uid());

create policy "owners write their chunks"
on public.doc_chunks for insert to authenticated
with check (owner_id = auth.uid());

create index doc_chunks_embedding_idx
  on public.doc_chunks using ivfflat (embedding vector_cosine_ops) with (lists = 100);

جدول المقاطع مع عمود متجهي وفهرس بحث تقريبي — مع GRANT وRLS كما في الإنتاج.

retrieve.ts
export function chunk(text: string, size = 900, overlap = 150) {
  const clean = text.replace(/\s+/g, " ").trim();
  const out: string[] = [];
  for (let i = 0; i < clean.length; i += size - overlap) {
    out.push(clean.slice(i, i + size));
  }
  return out.filter((c) => c.length > 80);
}

export async function embed(input: string[]): Promise<number[][]> {
  const res = await fetch("https://ai.gateway.lovable.dev/v1/embeddings", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env["LOVABLE_API_KEY"]}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ model: "google/text-embedding-004", input }),
  });
  const json = await res.json();
  return json.data.map((d: { embedding: number[] }) => d.embedding);
}

/** يعيد أفضل k مقاطع مع عنوان ورابط المصدر للاستشهاد. */
export async function retrieve(supabase: SupabaseClient, question: string, k = 3) {
  const [queryEmbedding] = await embed([question]);
  const { data, error } = await supabase.rpc("match_doc_chunks", {
    query_embedding: queryEmbedding,
    match_count: k,
    min_similarity: 0.72,
  });
  if (error) throw new Error(error.message);
  return data as { content: string; source_title: string; source_url: string | null }[];
}

تقطيع بتداخل، توليد التضمينات، ثم استرجاع أفضل 3 مقاطع مع مصدرها.

قبل أن تبدأ

إن لم تكن متأكداً من جاهزيتك، ابدأ بالدليل التمهيدي المجاني: المفاهيم الثمانية، تجهيز الجهاز والحسابات، والوقت المطلوب.

المتطلبات والفئة المستهدفة

المتطلبات السابقة

  • إلمام أساسي بالبرمجة (JavaScript أو Python) — لا يلزم تخصص في الذكاء الاصطناعي
  • جهاز حاسب واتصال إنترنت
  • حساب على أحد مزوّدي النماذج (الأرصدة التجريبية تكفي لإنهاء الدورة)

لمن هذه الدورة

  • مطوّرون يريدون إضافة قدرات الذكاء الاصطناعي لمنتجاتهم
  • محلّلو أعمال ومدراء منتجات يبنون نموذجاً أولياً بأنفسهم
  • رواد أعمال يريدون التحقق من فكرة قبل توظيف فريق
  • موظفون في جهات حكومية أو مالية يبنون أدوات داخلية

ما لا تقدّمه هذه الدورة

لا شهادة ولا اعتماد. هذه دورة مهارية بلا شهادة حضور وبلا اعتماد من أي جهة. قيمتها في المشروع الذي تخرج به، لا في ورقة.

لا تُغطّي الدورة تدريب النماذج من الصفر ولا الرياضيات النظرية للتعلّم العميق؛ تركيزها على البناء فوق النماذج الجاهزة.

بدل الاعتماد، كل وحدة تستند إلى مراجع رسمية معلنة ولكل مهمة معيار قبول مكتوب. اطّلع على منهجية بناء المناهج.

أسئلة متكررة

هل أحتاج خبرة في الذكاء الاصطناعي؟

لا. تكفي معرفة أساسية بالبرمجة. كل مفهوم يُشرح عند الحاجة إليه داخل المشروع، لا قبله بأسابيع.

هل المحتوى بالعربية؟

الشرح بالعربية بالكامل، والمصطلحات التقنية والكود بالإنجليزية كما هي في الواقع العملي.

كم مدة الوصول؟

وصول مدى الحياة بدفعة واحدة، ويشمل التحديثات اللاحقة على وحدات الدورة.

هل تحصل على شهادة؟

لا. المُخرَج مشروع منشور برابط عام يمكنك عرضه في ملفك المهني، وهو أقوى من شهادة غير معتمدة.