<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yusuf Khalidd</title>
    <description>The latest articles on DEV Community by Yusuf Khalidd (@yusuf_khalidd).</description>
    <link>https://dev.to/yusuf_khalidd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3821724%2F0310c456-f78f-4e57-a40e-62fa6c7bebaa.png</url>
      <title>DEV Community: Yusuf Khalidd</title>
      <link>https://dev.to/yusuf_khalidd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yusuf_khalidd"/>
    <language>en</language>
    <item>
      <title>ما هو vLLM؟ تسريع استدلال LLM لواجهات برمجية سريعة وقابلة للتوسع</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:15:00 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/m-hw-vllm-tsry-stdll-llm-lwjht-brmjy-sry-wqbl-lltws-1gf3</link>
      <guid>https://dev.to/yusuf_khalidd/m-hw-vllm-tsry-stdll-llm-lwjht-brmjy-sry-wqbl-lltws-1gf3</guid>
      <description>&lt;p&gt;هل تبني تطبيقات نماذج اللغة الكبيرة (LLM) وتواجه بطءًا في الاستدلال أو ضغطًا على ذاكرة الـ GPU؟ يقدّم vLLM طريقة عملية لخدمة النماذج بإنتاجية أعلى، وتجميع طلبات ديناميكي، واستهلاك ذاكرة أفضل. في هذا الدليل ستتعرف على vLLM، آلية عمله، طريقة تثبيته، وتشغيله للاستدلال الدفعي أو كخادم API متوافق مع OpenAI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  ما هو vLLM؟ ولماذا يهم مطوري واجهات LLM API؟
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vllm.ai/" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; هو محرك استدلال مفتوح المصدر عالي الإنتاجية وفعّال في استخدام الذاكرة، مصمم لخدمة نماذج اللغة الكبيرة في بيئات التطوير والإنتاج.&lt;/p&gt;

&lt;p&gt;يعالج vLLM مشكلتين شائعتين في نشر نماذج LLM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;بطء الاستدلال&lt;/strong&gt; عند وجود عدد كبير من المستخدمين المتزامنين.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استهلاك ذاكرة GPU بشكل غير فعّال&lt;/strong&gt; بسبب طريقة إدارة KV cache في آليات الانتباه التقليدية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;يعتمد vLLM على ميزتين أساسيتين:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PagedAttention&lt;/strong&gt;: يقلل هدر ذاكرة KV cache عبر تقسيمها إلى صفحات مرنة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous batching&lt;/strong&gt;: يدمج الطلبات الواردة ديناميكيًا بدل انتظار دفعات ثابتة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;النتيجة: خادم LLM أكثر ملاءمة لواجهات API عالية التزامن، خصوصًا عندما تريد تشغيل نموذجك محليًا أو داخل بنيتك التحتية بدل الاعتماد الكامل على مزود خارجي.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا يستخدم مطورو الـ Backend وواجهات API vLLM؟
&lt;/h2&gt;

&lt;p&gt;يفيد vLLM الفرق التي تريد تشغيل LLM API قابلة للتوسع مع تحكم أكبر في النموذج والبنية التحتية.&lt;/p&gt;

&lt;p&gt;أهم ما يقدمه:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;إنتاجية أعلى&lt;/strong&gt;: خدمة طلبات أكثر في الثانية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استخدام أفضل للـ GPU&lt;/strong&gt;: تقليل الهدر في الذاكرة وزيادة الاستفادة من العتاد.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تجميع ديناميكي للطلبات&lt;/strong&gt;: مناسب لحركة مرور API غير المنتظمة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;واجهة API متوافقة مع OpenAI&lt;/strong&gt;: يمكنك استخدام عملاء OpenAI SDK مع خادم vLLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;دعم نماذج واسع&lt;/strong&gt;: مثل Llama، Mistral، Qwen، OPT، Falcon وغيرها.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;دعم للاستدلال الدفعي والخدمة المباشرة&lt;/strong&gt;: مناسب للتقييم، المعالجة بالجملة، أو واجهات الإنتاج.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;راجع القائمة الرسمية هنا: &lt;a href="https://docs.vllm.ai/en/latest/models/supported_models/" rel="noopener noreferrer"&gt;النماذج المدعومة في vLLM&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;نصيحة عملية:&lt;/strong&gt; إذا كنت تبني API فوق vLLM، استخدم أداة مثل Apidog لتوثيق نقاط النهاية، اختبار الطلبات، وإعداد سيناريوهات تحقق لفريق الـ Backend وQA.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  النماذج المدعومة في vLLM
&lt;/h2&gt;

&lt;p&gt;يدعم vLLM مجموعة كبيرة من نماذج Transformer، ومنها:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Llama / Llama 2 / Llama 3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mistral و Mixtral&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Qwen و Qwen2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-2 و GPT-J و GPT-NeoX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OPT&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloom&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falcon&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MPT&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;نماذج أخرى، بما في ذلك بعض النماذج متعددة الوسائط&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;للتأكد من توافق النموذج قبل النشر، راجع دائمًا &lt;a href="https://docs.vllm.ai/en/latest/models/supported_models/" rel="noopener noreferrer"&gt;قائمة النماذج المدعومة الرسمية&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;إذا لم يكن نموذجك مذكورًا في القائمة لكنه يستخدم بنية مشابهة لنموذج مدعوم، قد يعمل. اختبره أولًا في بيئة منفصلة قبل استخدامه في الإنتاج.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  كيف يعمل vLLM؟ المفاهيم المهمة
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. PagedAttention
&lt;/h3&gt;

&lt;p&gt;في الاستدلال التقليدي، تُخزن KV cache في ذاكرة متجاورة، ما قد يؤدي إلى تجزئة وهدر في VRAM.&lt;/p&gt;

&lt;p&gt;يقسم vLLM هذه الذاكرة إلى صفحات، بطريقة مشابهة لإدارة الذاكرة الافتراضية في أنظمة التشغيل. هذا يساعد على:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تقليل هدر الذاكرة.&lt;/li&gt;
&lt;li&gt;تمكين خدمة تسلسلات أطول.&lt;/li&gt;
&lt;li&gt;تحسين التعامل مع الطلبات المتزامنة.&lt;/li&gt;
&lt;li&gt;مشاركة الذاكرة في بعض الحالات للبادئات المشتركة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Continuous batching
&lt;/h3&gt;

&lt;p&gt;في التجميع الثابت، ينتظر النظام اكتمال دفعة كاملة قبل بدء المعالجة، ما يؤدي إلى وقت خمول للـ GPU.&lt;/p&gt;

&lt;p&gt;أما في vLLM، فتُضاف الطلبات الجديدة إلى المعالجة فور توفر الموارد. هذا مفيد جدًا في واجهات API لأن الطلبات تصل غالبًا بشكل غير منتظم.&lt;/p&gt;

&lt;h2&gt;
  
  
  المتطلبات قبل تثبيت vLLM
&lt;/h2&gt;

&lt;p&gt;قبل البدء، تأكد من توفر التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;نظام تشغيل Linux&lt;/strong&gt;: هو الأكثر دعمًا. يمكن استخدام WSL2 أو macOS في بعض الحالات، لكن Linux هو الخيار الأفضل.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt;: الإصدارات 3.9 أو 3.10 أو 3.11 أو 3.12.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU من NVIDIA مع CUDA&lt;/strong&gt;: للحصول على أفضل أداء.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;بيئة افتراضية&lt;/strong&gt;: لتجنب تضارب الحزم.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مساحة كافية على القرص&lt;/strong&gt;: لأن النماذج قد تكون كبيرة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;تحقق من الـ GPU:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;وتحقق من إصدار Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  تثبيت vLLM خطوة بخطوة
&lt;/h2&gt;

&lt;h3&gt;
  
  
  الطريقة 1: التثبيت باستخدام pip
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv vllm-env
&lt;span class="nb"&gt;source &lt;/span&gt;vllm-env/bin/activate

pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;على Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm-env&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;تحقق من التثبيت:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import vllm; print(vllm.__version__)"&lt;/span&gt;
vllm &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  الطريقة 2: التثبيت باستخدام Conda
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;conda create &lt;span class="nt"&gt;-n&lt;/span&gt; vllm-env &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.11 &lt;span class="nt"&gt;-y&lt;/span&gt;
conda activate vllm-env

pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا كنت تحتاج إصدار CUDA مخصصًا، ثبّت PyTorch المناسب أولًا، ثم ثبّت vLLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  الطريقة 3: التثبيت باستخدام uv
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv venv vllm-env &lt;span class="nt"&gt;--python&lt;/span&gt; 3.12 &lt;span class="nt"&gt;--seed&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;vllm-env/bin/activate

uv pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  تشغيل استدلال دفعي باستخدام vLLM
&lt;/h2&gt;

&lt;p&gt;استخدم الاستدلال الدفعي عندما تريد تمرير قائمة prompts ومعالجتها دفعة واحدة، مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تقييم نموذج.&lt;/li&gt;
&lt;li&gt;توليد بيانات.&lt;/li&gt;
&lt;li&gt;معالجة ملفات كثيرة.&lt;/li&gt;
&lt;li&gt;اختبار إعدادات sampling مختلفة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال عملي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;vllm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SamplingParams&lt;/span&gt;

&lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The capital of France is&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain the theory of relativity in simple terms:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a short poem about a rainy day:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Translate &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello, world!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; to German:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;sampling_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SamplingParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;stop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; Human:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; Assistant:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistralai/Mistral-7B-Instruct-v0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sampling_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Prompt: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="si"&gt;!r}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generated Text: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;!r}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ملاحظات مهمة
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;يستخدم vLLM عادة نماذج Hugging Face Hub.&lt;/li&gt;
&lt;li&gt;لاستخدام ModelScope:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;VLLM_USE_MODELSCOPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;إذا أردت استخدام إعدادات vLLM الافتراضية بدل إعدادات النموذج:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistralai/Mistral-7B-Instruct-v0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;generation_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vllm&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;عند استخدام نماذج Quantized مثل AWQ أو GPTQ، راجع بطاقة النموذج ووثائق vLLM قبل التشغيل.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  تشغيل vLLM كخادم API متوافق مع OpenAI
&lt;/h2&gt;

&lt;p&gt;إذا كنت تريد تقديم النموذج عبر HTTP API، يمكن تشغيل vLLM كخادم متوافق مع واجهات OpenAI.&lt;/p&gt;

&lt;p&gt;ابدأ الخادم:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source &lt;/span&gt;vllm-env/bin/activate

vllm serve mistralai/Mistral-7B-Instruct-v0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو استخدم نموذجًا أصغر للتجربة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve Qwen/Qwen2-1.5B-Instruct
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يعمل الخادم افتراضيًا على:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  خيارات مفيدة عند التشغيل
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve mistralai/Mistral-7B-Instruct-v0.1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--api-key&lt;/span&gt; your-api-key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;خيارات شائعة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--host 0.0.0.0&lt;/code&gt;: السماح بالوصول من خارج الجهاز المحلي.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--port 8000&lt;/code&gt;: تحديد المنفذ.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--tensor-parallel-size N&lt;/code&gt;: توزيع النموذج على N من وحدات GPU.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--api-key&lt;/code&gt;: فرض مفتاح API على الطلبات.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--generation-config vllm&lt;/code&gt;: استخدام إعدادات توليد vLLM.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--chat-template&lt;/code&gt;: تمرير قالب دردشة مخصص عند الحاجة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  اختبار endpoint التكملة Completions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  باستخدام cURL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8000/v1/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "mistralai/Mistral-7B-Instruct-v0.1",
    "prompt": "San Francisco is a city in",
    "max_tokens": 50,
    "temperature": 0.7
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا فعّلت &lt;code&gt;--api-key&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8000/v1/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer your-api-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "mistralai/Mistral-7B-Instruct-v0.1",
    "prompt": "Explain the benefits of using vLLM:",
    "max_tokens": 100
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  باستخدام OpenAI Python SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EMPTY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;completion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistralai/Mistral-7B-Instruct-v0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain the benefits of using vLLM:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;completion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  اختبار endpoint الدردشة Chat Completions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  باستخدام cURL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8000/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "mistralai/Mistral-7B-Instruct-v0.1",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is the main advantage of PagedAttention in vLLM?"
      }
    ],
    "max_tokens": 100,
    "temperature": 0.7
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  باستخدام Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EMPTY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;chat_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistralai/Mistral-7B-Instruct-v0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a helpful programming assistant.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a simple Python function to calculate factorial.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chat_response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  توثيق واختبار API باستخدام Apidog
&lt;/h2&gt;

&lt;p&gt;بعد تشغيل vLLM كخادم API، يمكنك إنشاء مجموعة endpoints في Apidog لاختبارها وتوثيقها.&lt;/p&gt;

&lt;p&gt;مثال endpoints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /v1/completions
POST /v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;مثال body لـ &lt;code&gt;/v1/chat/completions&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mistralai/Mistral-7B-Instruct-v0.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You are a helpful assistant."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Explain vLLM in one paragraph."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"temperature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا يساعد الفريق على:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;توحيد طريقة اختبار endpoints.&lt;/li&gt;
&lt;li&gt;مشاركة أمثلة الطلبات والاستجابات.&lt;/li&gt;
&lt;li&gt;توثيق API داخليًا أو خارجيًا.&lt;/li&gt;
&lt;li&gt;اختبار مفاتيح API والـ headers.&lt;/li&gt;
&lt;li&gt;محاكاة سيناريوهات فشل أو نجاح قبل ربط الواجهة بالتطبيق.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  واجهات الانتباه الخلفية في vLLM
&lt;/h2&gt;

&lt;p&gt;يدعم vLLM عدة backends لحساب الانتباه:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FlashAttention 1 و 2&lt;/strong&gt;: غالبًا الخيار الأسرع على GPUs حديثة من NVIDIA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;xFormers&lt;/strong&gt;: خيار واسع التوافق، وقد يكون مفيدًا مع بعض البيئات.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FlashInfer&lt;/strong&gt;: خيار متقدم وقد يتطلب إعدادًا يدويًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;افتراضيًا، يختار vLLM backend المناسب حسب البيئة والنموذج.&lt;/p&gt;

&lt;p&gt;إذا أردت فرض backend محدد:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;VLLM_ATTENTION_BACKEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;FLASH_ATTN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;VLLM_ATTENTION_BACKEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;XFORMERS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;VLLM_ATTENTION_BACKEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;FLASHINFER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم شغّل الخادم:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve mistralai/Mistral-7B-Instruct-v0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  استكشاف الأخطاء الشائعة
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. خطأ CUDA out of memory
&lt;/h3&gt;

&lt;p&gt;إذا ظهرت أخطاء نفاد ذاكرة GPU:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استخدم نموذجًا أصغر.&lt;/li&gt;
&lt;li&gt;قلل &lt;code&gt;max_tokens&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;قلل عدد الطلبات المتزامنة.&lt;/li&gt;
&lt;li&gt;استخدم نموذجًا quantized مثل AWQ أو GPTQ إن كان مدعومًا.&lt;/li&gt;
&lt;li&gt;استخدم أكثر من GPU مع:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve mistralai/Mistral-7B-Instruct-v0.1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;تحقق من العمليات التي تستهلك الذاكرة:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. مشاكل التثبيت أو التوافق
&lt;/h3&gt;

&lt;p&gt;تحقق من توافق:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;إصدار CUDA.&lt;/li&gt;
&lt;li&gt;تعريف NVIDIA.&lt;/li&gt;
&lt;li&gt;إصدار PyTorch.&lt;/li&gt;
&lt;li&gt;إصدار Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;راجع &lt;a href="https://pytorch.org/get-started/locally/" rel="noopener noreferrer"&gt;مصفوفة توافق PyTorch&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;إذا أردت إعدادًا أسهل، استخدم &lt;a href="https://docs.vllm.ai/en/latest/deployment/docker.html" rel="noopener noreferrer"&gt;صور Docker الرسمية لـ vLLM&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. فشل تحميل النموذج
&lt;/h3&gt;

&lt;p&gt;جرّب التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تأكد من اسم النموذج:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mistralai/Mistral-7B-Instruct-v0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;تحقق من اتصال الإنترنت ومساحة القرص.&lt;/li&gt;
&lt;li&gt;إذا كان النموذج يتطلب كودًا مخصصًا، قد تحتاج إلى تفعيل &lt;code&gt;trust_remote_code=True&lt;/code&gt; في حالات معينة.&lt;/li&gt;
&lt;li&gt;استخدم مسارًا محليًا إذا كان النموذج محملًا مسبقًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. الاستدلال بطيء
&lt;/h3&gt;

&lt;p&gt;لتحسين الأداء:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;راقب استخدام GPU:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;حدّث vLLM والتبعيات.&lt;/li&gt;
&lt;li&gt;جرّب backend مختلف للانتباه.&lt;/li&gt;
&lt;li&gt;قلل &lt;code&gt;max_tokens&lt;/code&gt; إذا كان مرتفعًا.&lt;/li&gt;
&lt;li&gt;راجع طول الـ prompt؛ كلما زاد السياق زاد زمن المعالجة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. الناتج غير منطقي أو غير متوقع
&lt;/h3&gt;

&lt;p&gt;تحقق من:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تنسيق prompt المناسب للنموذج.&lt;/li&gt;
&lt;li&gt;استخدام قالب chat template الصحيح.&lt;/li&gt;
&lt;li&gt;إعدادات &lt;code&gt;temperature&lt;/code&gt; و &lt;code&gt;top_p&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;تجربة نموذج آخر لعزل المشكلة.&lt;/li&gt;
&lt;li&gt;قراءة بطاقة النموذج على Hugging Face لمعرفة طريقة الاستخدام الصحيحة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  مثال سريع لهيكلة خدمة Backend فوق vLLM
&lt;/h2&gt;

&lt;p&gt;يمكنك وضع API وسيطة بين تطبيقك وخادم vLLM لإضافة المصادقة، القيود، التسجيل، أو تنسيق الاستجابة.&lt;/p&gt;

&lt;p&gt;مثال بسيط باستخدام FastAPI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pydantic&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BaseModel&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EMPTY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ChatRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseModel&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;

&lt;span class="nd"&gt;@app.post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/ask&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ChatRequest&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistralai/Mistral-7B-Instruct-v0.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a concise technical assistant.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;شغّل التطبيق:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvicorn app:app &lt;span class="nt"&gt;--reload&lt;/span&gt; &lt;span class="nt"&gt;--port&lt;/span&gt; 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم اختبره:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:3000/ask &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"message": "اشرح PagedAttention باختصار"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  الخطوات التالية
&lt;/h2&gt;

&lt;p&gt;باستخدام vLLM يمكنك تشغيل واجهات API لنماذج LLM بكفاءة أعلى، سواء للاستدلال الدفعي أو الخدمة المباشرة المتوافقة مع OpenAI.&lt;/p&gt;

&lt;p&gt;للبدء عمليًا:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;اختر نموذجًا مناسبًا لذاكرة GPU لديك.&lt;/li&gt;
&lt;li&gt;ثبّت vLLM داخل بيئة افتراضية.&lt;/li&gt;
&lt;li&gt;اختبر الاستدلال الدفعي أولًا.&lt;/li&gt;
&lt;li&gt;شغّل &lt;code&gt;vllm serve&lt;/code&gt; كخادم API.&lt;/li&gt;
&lt;li&gt;اختبر &lt;code&gt;/v1/completions&lt;/code&gt; و &lt;code&gt;/v1/chat/completions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;وثّق الطلبات والاستجابات في أداة API مثل Apidog.&lt;/li&gt;
&lt;li&gt;راقب الأداء والذاكرة قبل الانتقال للإنتاج.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;للميزات المتقدمة مثل quantization، و multi-LoRA، والخدمة الموزعة، وفك التشفير التخميني، راجع &lt;a href="https://docs.vllm.ai/en/stable/" rel="noopener noreferrer"&gt;وثائق vLLM الرسمية&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيف يحصل طلاب الجامعات الأمريكية على Gemini Advanced مجانًا وتطوير مهارات API</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:13:02 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyf-yhsl-tlb-ljmt-lmryky-l-gemini-advanced-mjnan-wttwyr-mhrt-api-26ob</link>
      <guid>https://dev.to/yusuf_khalidd/kyf-yhsl-tlb-ljmt-lmryky-l-gemini-advanced-mjnan-wttwyr-mhrt-api-26ob</guid>
      <description>&lt;p&gt;يمكن أن يكون موسم الامتحانات مرهقًا لطلاب الهندسة: دراسة ليلية، تسليم مشاريع، ومحاولة مستمرة للتعلّم بشكل أسرع. إذا كنت طالبًا تقنيًا في الولايات المتحدة وتستعد لأدوار في تطوير البرمجيات، ضمان الجودة، أو تصميم واجهات برمجة التطبيقات API، فإن عرض Google للوصول المجاني إلى Gemini Advanced يمكن أن يساعدك في البحث، التوثيق، التلخيص، وبناء نماذج أولية أسرع.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;إلى جانب أدوات الذكاء الاصطناعي، ستحتاج إلى مهارة عملية لا تقل أهمية: فهم دورة حياة API من التصميم إلى الاختبار والتوثيق. لذلك سنغطي خطوتين عمليتين: كيفية الحصول على Gemini Advanced مجانًا كطالب مؤهل، وكيف تستخدم Apidog كمنصة موحدة لتطبيق ما تتعلمه على مشاريع API حقيقية.&lt;/p&gt;

&lt;h2&gt;
  
  
  ماذا تتضمن حزمة Gemini Advanced المجانية من Google للطلاب؟
&lt;/h2&gt;

&lt;p&gt;عرض Google لا يقتصر على مساعد ذكاء اصطناعي واحد. عند التسجيل، يحصل طلاب الجامعات الأمريكية المؤهلون على خطة Google One AI Premium، وهي مفيدة للبحث، الكتابة التقنية، تحليل المحتوى، وتجهيز المشاريع.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Gemini Advanced — Gemini 2.5 Pro
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام Gemini Advanced في مهام تقنية مباشرة مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;البحث المعمق:&lt;/strong&gt; تلخيص موضوعات مثل OAuth، REST، GraphQL، أو أنماط تصميم الأنظمة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مراجعة الكود:&lt;/strong&gt; طلب تفسير الأخطاء، اقتراح تحسينات، أو تبسيط دوال معقدة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Live:&lt;/strong&gt; مناقشة فكرة مشروع أو تصحيح مفهوم بالصوت أو الفيديو.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canvas:&lt;/strong&gt; صياغة وثائق تقنية، README، أو شرح endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Veo 2:&lt;/strong&gt; إنشاء عروض فيديو توضيحية للمشاريع أو مفاهيم تقنية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;نافذة سياق طويلة:&lt;/strong&gt; التعامل مع ملفات كبيرة، وثائق API، أو أوراق بحثية طويلة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال على Prompt عملي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;لدي مشروع REST API لإدارة المهام.
اقترح endpoints أساسية، نماذج JSON للطلبات والاستجابات،
وحالات اختبار يجب تنفيذها قبل التسليم.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F51fPjNxtslRaE05Zvn5WNGsHflZ8i6yLMlogzhC0AHTf-4gfntD64tp1o5CyMZKgLb_0tjFyMEYmIDAzpaYU0BU1NZZdYlk6NNA%3De365-pa-nu-s0" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F51fPjNxtslRaE05Zvn5WNGsHflZ8i6yLMlogzhC0AHTf-4gfntD64tp1o5CyMZKgLb_0tjFyMEYmIDAzpaYU0BU1NZZdYlk6NNA%3De365-pa-nu-s0" alt="نموذج Gemini Advanced للذكاء الاصطناعي" width="760" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. NotebookLM Plus
&lt;/h3&gt;

&lt;p&gt;استخدم NotebookLM Plus عندما يكون لديك محتوى طويل تريد تحويله إلى مادة قابلة للمراجعة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ارفع ملفات المحاضرات أو وثائق المشروع.&lt;/li&gt;
&lt;li&gt;اطلب منه إنشاء دليل دراسة أو ملخص تقني.&lt;/li&gt;
&lt;li&gt;استخدمه لفهم متطلبات مشروع قبل تحويلها إلى API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال استخدام:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;حوّل هذه الوثيقة إلى:
1. متطلبات وظيفية
2. متطلبات غير وظيفية
3. endpoints مقترحة
4. أسئلة يجب طرحها على صاحب المنتج
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FkcIwH0uZM8e8U1BnUc1_YtDh5jO6v2TCmcPKq_oeREKOVCApxTdbs3nh-vAmqNPGGhhKGTZfRqvANsSIYI4kUoStLV0Yh8XIJuua%3De365-pa-nu-s0" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FkcIwH0uZM8e8U1BnUc1_YtDh5jO6v2TCmcPKq_oeREKOVCApxTdbs3nh-vAmqNPGGhhKGTZfRqvANsSIYI4kUoStLV0Yh8XIJuua%3De365-pa-nu-s0" alt="NotebookLM Plus" width="1226" height="1226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Gemini داخل Google Workspace
&lt;/h3&gt;

&lt;p&gt;يمكنك دمج Gemini في أدوات Google اليومية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; كتابة تقارير تقنية، README، أو وثائق API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sheets:&lt;/strong&gt; تحليل بيانات اختبار أو تتبع أخطاء.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slides:&lt;/strong&gt; تجهيز عرض مشروع هندسي بسرعة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FOkYlIrapqYhsGvBaD8kgRVxbviUx2gBm9-hnZwEAui9HAN9Ix0hzCQ9d5hivwOuu-A2oD3NS-WR0CusC0teyhd8O3PN11AJnW_k%3De365-pa-nu-s0" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FOkYlIrapqYhsGvBaD8kgRVxbviUx2gBm9-hnZwEAui9HAN9Ix0hzCQ9d5hivwOuu-A2oD3NS-WR0CusC0teyhd8O3PN11AJnW_k%3De365-pa-nu-s0" alt="تطبيق Gemini في Google Workspace" width="1226" height="1226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Whisk — معامل
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام Whisk لتجربة أفكار مرئية أولية، مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تصور شاشة UI.&lt;/li&gt;
&lt;li&gt;إنشاء رسوم بسيطة لعرض تدفق بيانات.&lt;/li&gt;
&lt;li&gt;تحضير عناصر مرئية لعروض المشاريع.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. تخزين سحابي 2 تيرابايت
&lt;/h3&gt;

&lt;p&gt;المساحة الإضافية مفيدة لحفظ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;مستودعات الكود.&lt;/li&gt;
&lt;li&gt;ملفات المشروع.&lt;/li&gt;
&lt;li&gt;مجموعات بيانات.&lt;/li&gt;
&lt;li&gt;تسجيلات العروض التوضيحية.&lt;/li&gt;
&lt;li&gt;وثائق API وملفات OpenAPI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fu66858yDBPIoAXkqmhl3D-W9C6PC97z4G-BwLvq3cpg1ZQRCEbz06QyaS3CpInYjPViC_tbsnUrlG8NMyvFqplMjTkUPP23_Q%3De365-pa-nu-s0" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fu66858yDBPIoAXkqmhl3D-W9C6PC97z4G-BwLvq3cpg1ZQRCEbz06QyaS3CpInYjPViC_tbsnUrlG8NMyvFqplMjTkUPP23_Q%3De365-pa-nu-s0" alt="تخزين Google One بسعة 2 تيرابايت" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  كيفية المطالبة بـ Gemini Advanced مجانًا كطالب جامعي أمريكي
&lt;/h2&gt;

&lt;p&gt;اتبع الخطوات التالية بدل البحث العشوائي عن تفاصيل العرض.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. تحقق من أهليتك
&lt;/h3&gt;

&lt;p&gt;يجب أن تتوفر لديك الشروط التالية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;أن تكون مسجلًا في كلية أو جامعة أمريكية معتمدة.&lt;/li&gt;
&lt;li&gt;أن يكون عمرك 18 عامًا أو أكثر.&lt;/li&gt;
&lt;li&gt;أن تمتلك بريدًا جامعيًا فعالًا ينتهي بـ &lt;code&gt;.edu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;أن تستخدم حساب Google شخصيًا، وليس حساب Google Workspace الخاص بالجامعة.&lt;/li&gt;
&lt;li&gt;أن يكون لديك حساب Google Payments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. افتح صفحة العرض الرسمية
&lt;/h3&gt;

&lt;p&gt;اذهب إلى:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://one.google.com/explore-plan/google-ai-pro-students" rel="noopener noreferrer"&gt;الصفحة الرسمية لعرض Google One AI Premium للطلاب&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ثم:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;سجّل الدخول بحساب Google الشخصي.&lt;/li&gt;
&lt;li&gt;ابدأ عملية التسجيل.&lt;/li&gt;
&lt;li&gt;اتبع التعليمات المعروضة على الصفحة.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3. تحقق من حالة الطالب
&lt;/h3&gt;

&lt;p&gt;أثناء التسجيل:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;أدخل بريدك الجامعي الذي ينتهي بـ &lt;code&gt;.edu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;أكمل عملية التحقق، غالبًا عبر SheerID أو خدمة مشابهة.&lt;/li&gt;
&lt;li&gt;افتح بريدك الجامعي واضغط رابط التحقق.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4. انتبه للموعد النهائي
&lt;/h3&gt;

&lt;p&gt;يجب التسجيل والتحقق بحلول:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;30 يونيو 2025&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. فعّل الوصول المجاني
&lt;/h3&gt;

&lt;p&gt;بعد التحقق، تحصل على Google One AI Premium، بما في ذلك Gemini Advanced، مجانًا حتى:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;30 يونيو 2026&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. أعد التحقق إذا أردت الاحتفاظ بالوصول للسنة الثانية
&lt;/h3&gt;

&lt;p&gt;للاحتفاظ بالوصول لسنة ثانية، أعد التحقق من حالة الطالب قبل:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;31 أغسطس 2025&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ستذكرك Google بذلك.&lt;/p&gt;

&lt;h3&gt;
  
  
  ملاحظات مهمة قبل التسجيل
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;العرض مخصص للمشتركين الجدد في AI Premium أو الطلاب الموجودين في مستويات Google One الأقل.&lt;/li&gt;
&lt;li&gt;إذا كان لديك خصم 50% للطلاب حاليًا، فألغِه أولًا، وانتظر انتهاء فترة الفوترة، ثم اشترك في العرض المجاني.&lt;/li&gt;
&lt;li&gt;ستحتاج إلى طريقة دفع مسجلة، لكن لن يتم تحصيل رسوم خلال الفترة المجانية.&lt;/li&gt;
&lt;li&gt;ستخطرك Google قبل انتهاء الوصول المجاني.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  لماذا تحتاج مهارات API بجانب أدوات الذكاء الاصطناعي؟
&lt;/h2&gt;

&lt;p&gt;Gemini يساعدك في البحث والكتابة والتلخيص. لكن في المشاريع الحقيقية، تحتاج إلى تنفيذ دورة حياة API عمليًا:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تصميم endpoints واضحة.&lt;/li&gt;
&lt;li&gt;كتابة نماذج request و response.&lt;/li&gt;
&lt;li&gt;اختبار الحالات الناجحة والفاشلة.&lt;/li&gt;
&lt;li&gt;إنشاء mock server للواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;توثيق API بطريقة قابلة للمشاركة.&lt;/li&gt;
&lt;li&gt;التعاون مع الفريق على نفس المواصفات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هذه المهارات مهمة لـ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;مطوري الواجهة الخلفية:&lt;/strong&gt; تصميم وبناء وصيانة APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مطوري الواجهة الأمامية:&lt;/strong&gt; استهلاك APIs والعمل مع بيانات وهمية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مهندسي QA:&lt;/strong&gt; أتمتة اختبارات API والتحقق من العقود.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;القادة التقنيين:&lt;/strong&gt; مراجعة وتوحيد تصميم APIs داخل الفريق.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  تحديات شائعة عند بناء API كمشروع طلابي
&lt;/h2&gt;

&lt;p&gt;غالبًا ستواجه هذه المشاكل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تصميم API في أداة، واختباره في أداة أخرى، وتوثيقه في مكان ثالث.&lt;/li&gt;
&lt;li&gt;وثائق تصبح قديمة بعد تعديل endpoint.&lt;/li&gt;
&lt;li&gt;صعوبة مشاركة mock API مع فريق الواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;عدم وجود حالات اختبار منظمة.&lt;/li&gt;
&lt;li&gt;اختلاف أسماء الحقول بين الواجهة الأمامية والخلفية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هنا يفيد Apidog لأنه يجمع التصميم، الاختبار، المحاكاة، والتوثيق في مكان واحد.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2023%2F07%2F18%2F40b094f384c3351c13c6336d4cddfd26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2023%2F07%2F18%2F40b094f384c3351c13c6336d4cddfd26.png" alt="التعاون الجماعي باستخدام Apidog" width="800" height="708"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  كيف تستخدم Apidog في مشروع API عملي؟
&lt;/h2&gt;

&lt;p&gt;لنفترض أنك تبني REST API لإدارة المهام. يمكنك التعامل مع المشروع بهذه الخطوات.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. صمم endpoints أولًا
&lt;/h3&gt;

&lt;p&gt;ابدأ بتحديد الموارد الأساسية:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET    /tasks
POST   /tasks
GET    /tasks/{id}
PATCH  /tasks/{id}
DELETE /tasks/{id}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم عرّف نموذج البيانات:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"إنهاء تقرير المشروع"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dueDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-06-15"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;في Apidog، يمكنك إنشاء هذه endpoints بصريًا بدل تعديل ملفات OpenAPI يدويًا من البداية.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. عرّف الطلبات والاستجابات
&lt;/h3&gt;

&lt;p&gt;مثال request لإنشاء مهمة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"مراجعة وثائق API"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dueDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-06-20"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;مثال response ناجح:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_124"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"مراجعة وثائق API"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dueDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-06-20"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ومثال response عند خطأ التحقق:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"VALIDATION_ERROR"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"حقل title مطلوب"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذه التفاصيل مهمة لأنها تتحول لاحقًا إلى توثيق واختبارات.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. اختبر endpoint مباشرة
&lt;/h3&gt;

&lt;p&gt;بعد بناء endpoint في مشروعك، اختبره بطلب مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.example.com/tasks &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "title": "مراجعة وثائق API",
    "dueDate": "2025-06-20"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;داخل Apidog يمكنك إرسال الطلبات، رؤية الردود، وتصحيح نقاط النهاية مع الحفاظ على ارتباطها بالمواصفات.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2024%2F12%2Fsend-api-quick-request.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2024%2F12%2Fsend-api-quick-request.png" alt="واجهة طلب واجهة برمجة تطبيقات Apidog السريع" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. أنشئ Mock Server قبل جاهزية الواجهة الخلفية
&lt;/h3&gt;

&lt;p&gt;إذا كان فريق الواجهة الأمامية ينتظر API، يمكنك إنشاء mock endpoints من المواصفات.&lt;/p&gt;

&lt;p&gt;مثال mock response لـ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /tasks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"إنهاء تقرير المشروع"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_124"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"مراجعة وثائق API"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بهذا يستطيع فريق الواجهة الأمامية البدء في بناء الشاشة حتى قبل اكتمال كود الخادم.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.apidog.com%2Fapi%2Fv1%2Fprojects%2F544525%2Fresources%2F348769%2Fimage-preview" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.apidog.com%2Fapi%2Fv1%2Fprojects%2F544525%2Fresources%2F348769%2Fimage-preview" alt="مثال على عنوان URL وهمي في Apidog" width="2464" height="1534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. أضف اختبارات API
&lt;/h3&gt;

&lt;p&gt;ابدأ بحالات بسيطة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;إنشاء مهمة بعنوان صحيح يجب أن يعيد &lt;code&gt;201&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;إنشاء مهمة بدون &lt;code&gt;title&lt;/code&gt; يجب أن يعيد خطأ تحقق.&lt;/li&gt;
&lt;li&gt;جلب مهمة غير موجودة يجب أن يعيد &lt;code&gt;404&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;حذف مهمة موجودة يجب أن ينجح.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال منطق اختبار:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;أرسل POST /tasks بدون title
توقع status code = 400
توقع وجود الحقل error في الاستجابة
توقع message يوضح أن title مطلوب
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذه الخطوة تحاكي ما ستفعله لاحقًا في فرق QA أو CI/CD.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. ولّد وثائق API تلقائيًا
&lt;/h3&gt;

&lt;p&gt;بدل كتابة التوثيق يدويًا بعد الانتهاء، اجعل التوثيق ناتجًا من التصميم نفسه.&lt;/p&gt;

&lt;p&gt;يجب أن تتضمن الوثائق:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;وصف كل endpoint.&lt;/li&gt;
&lt;li&gt;نوع method.&lt;/li&gt;
&lt;li&gt;parameters.&lt;/li&gt;
&lt;li&gt;request body.&lt;/li&gt;
&lt;li&gt;response examples.&lt;/li&gt;
&lt;li&gt;status codes.&lt;/li&gt;
&lt;li&gt;رسائل الأخطاء.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.apidog.com%2Fapi%2Fv1%2Fprojects%2F544525%2Fresources%2F344101%2Fimage-preview" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.apidog.com%2Fapi%2Fv1%2Fprojects%2F544525%2Fresources%2F344101%2Fimage-preview" alt="مثال على وثائق واجهة برمجة التطبيقات المولدة بواسطة Apidog" width="799" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. شارك المشروع مع الفريق
&lt;/h3&gt;

&lt;p&gt;في المشاريع الجماعية، استخدم التعاون لتقسيم العمل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;طالب يصمم endpoints.&lt;/li&gt;
&lt;li&gt;طالب يراجع نماذج البيانات.&lt;/li&gt;
&lt;li&gt;طالب يكتب الاختبارات.&lt;/li&gt;
&lt;li&gt;طالب يجهز التوثيق.&lt;/li&gt;
&lt;li&gt;طالب يربط الواجهة الأمامية مع mock API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هذا يشبه سير عمل فرق البرمجيات الحقيقية، ويجعل المشروع مناسبًا للعرض في ملف أعمالك.&lt;/p&gt;

&lt;h2&gt;
  
  
  سير عمل عملي يجمع Gemini و Apidog
&lt;/h2&gt;

&lt;p&gt;استخدم Gemini للتفكير والتحليل، ثم Apidog للتنفيذ والتحقق.&lt;/p&gt;

&lt;p&gt;مثال سير عمل:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;اكتب متطلبات المشروع في Gemini.&lt;/li&gt;
&lt;li&gt;اطلب منه اقتراح endpoints ونماذج JSON.&lt;/li&gt;
&lt;li&gt;راجع الاقتراحات وعدّلها يدويًا.&lt;/li&gt;
&lt;li&gt;أنشئ API في Apidog.&lt;/li&gt;
&lt;li&gt;أضف mock responses.&lt;/li&gt;
&lt;li&gt;اختبر endpoints.&lt;/li&gt;
&lt;li&gt;ولّد الوثائق.&lt;/li&gt;
&lt;li&gt;استخدم Gemini لتحسين README أو شرح المشروع.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Prompt مفيد:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;راجع تصميم REST API التالي.
اقترح تحسينات في أسماء endpoints، status codes،
رسائل الأخطاء، ونماذج الاستجابة بدون تغيير نطاق المشروع.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم طبّق النتائج التي توافق عليها داخل Apidog.&lt;/p&gt;

&lt;h2&gt;
  
  
  اغتنم الفرصة: اجمع بين Gemini Advanced و Apidog لمهارات قابلة للتطبيق
&lt;/h2&gt;

&lt;p&gt;يوفر عرض Google One AI Premium للطلاب أدوات قوية للبحث، الكتابة، التلخيص، وتجهيز المشاريع. لكن القيمة الحقيقية تظهر عندما تستخدم هذه الأدوات لبناء شيء عملي.&lt;/p&gt;

&lt;p&gt;إذا كنت تستعد لتدريب صيفي، مقابلة تقنية، أو مشروع تخرج، فركّز على مخرجات واضحة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API مصمم جيدًا.&lt;/li&gt;
&lt;li&gt;اختبارات قابلة للتشغيل.&lt;/li&gt;
&lt;li&gt;mock server للواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;وثائق تفاعلية.&lt;/li&gt;
&lt;li&gt;README يشرح القرارات التقنية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;تذكر التسجيل في عرض Google قبل &lt;strong&gt;30 يونيو 2025&lt;/strong&gt; إذا كنت مؤهلًا. وبعد ذلك، استخدم Gemini لتسريع التعلم، وApidog لتطبيق دورة حياة API كما تُستخدم في المشاريع الحقيقية.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيفية تحميل Cursor 0.50 الوصول المبكر وفتح ميزات الذكاء الاصطناعي القوية للبرمجة</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:11:40 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyfy-thmyl-cursor-050-lwswl-lmbkr-wfth-myzt-ldhk-lstny-lqwy-llbrmj-2k3m</link>
      <guid>https://dev.to/yusuf_khalidd/kyfy-thmyl-cursor-050-lwswl-lmbkr-wfth-myzt-ldhk-lstny-lqwy-llbrmj-2k3m</guid>
      <description>&lt;p&gt;هل تريد تجربة ميزات الذكاء الاصطناعي الجديدة في Cursor 0.50 داخل سير عملك اليومي؟ يشرح هذا الدليل خطوات الوصول إلى الإصدار عبر برنامج الوصول المبكر، ثم يوضح كيف تستخدم الميزات الجديدة عمليًا في مشاريع الواجهات الخلفية وواجهات برمجة التطبيقات.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 إذا كنت تختبر واجهات برمجة التطبيقات أثناء تجربة Cursor 0.50، يمكنك استخدام Apidog لتسريع التحقق من الطلبات، تصحيح الأخطاء، وتنظيم اختبارات API ضمن سير عمل التطوير الحالي.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ما هو Cursor 0.50؟ ولماذا يهم المطورين؟
&lt;/h2&gt;

&lt;p&gt;Cursor هو محرر مبني على VS Code ويضيف قدرات ذكاء اصطناعي لمساعدة المطورين في كتابة التعليمات البرمجية، تعديلها، وفهمها بسرعة أكبر.&lt;/p&gt;

&lt;p&gt;الإصدار 0.50 يضيف تحسينات مهمة مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تحرير ملفات متعددة.&lt;/li&gt;
&lt;li&gt;عوامل خلفية لتشغيل مهام الذكاء الاصطناعي عن بُعد.&lt;/li&gt;
&lt;li&gt;تحرير مضمّن محسّن عبر &lt;code&gt;Cmd/Ctrl + K&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;دعم أفضل لمساحات العمل والمجلدات الكبيرة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;حاليًا، يتوفر Cursor 0.50 عبر برنامج الوصول المبكر. اتبع الخطوات التالية لتفعيله.&lt;/p&gt;

&lt;h2&gt;
  
  
  كيفية تنزيل Cursor 0.50 عبر برنامج الوصول المبكر
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. افهم برنامج الوصول المبكر في Cursor
&lt;/h3&gt;

&lt;p&gt;برنامج الوصول المبكر يتيح لك تجربة الميزات قبل إصدارها العام. في المقابل، قد تواجه تغييرات أو سلوكًا تجريبيًا، لذلك يُفضّل استخدامه مع مشاريع يمكن التحكم فيها أو بعد حفظ التغييرات.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. تحقق من إصدار Cursor الحالي
&lt;/h3&gt;

&lt;p&gt;افتح Cursor ثم:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;اضغط على أيقونة الترس في أسفل اليسار.&lt;/li&gt;
&lt;li&gt;افتح صفحة الإعدادات.&lt;/li&gt;
&lt;li&gt;تحقق من رقم الإصدار.&lt;/li&gt;
&lt;li&gt;إذا كان الإصدار أقل من &lt;code&gt;0.50&lt;/code&gt;، فعّل الوصول المبكر.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffb3pjmaev5qh4hayg3xi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffb3pjmaev5qh4hayg3xi.png" alt="صورة" width="795" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. فعّل قناة Early Access
&lt;/h3&gt;

&lt;p&gt;داخل الإعدادات:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح إعدادات Cursor من أيقونة الترس.&lt;/li&gt;
&lt;li&gt;انتقل إلى القائمة المنسدلة &lt;code&gt;Beta&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;غيّر القناة من &lt;code&gt;Standard&lt;/code&gt; إلى &lt;code&gt;Early Access&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;احفظ التغييرات إن طُلب منك ذلك.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpklps4ad1s03pkva82cm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpklps4ad1s03pkva82cm.png" alt="صورة" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp4f3d9qpxfcyzh51onnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp4f3d9qpxfcyzh51onnw.png" alt="صورة" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4pbc2sh2y8dheu118djw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4pbc2sh2y8dheu118djw.png" alt="صورة" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. حدّث إلى Cursor 0.50
&lt;/h3&gt;

&lt;p&gt;بعد تفعيل &lt;code&gt;Early Access&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;انتظر ظهور مطالبة التحديث داخل Cursor.&lt;/li&gt;
&lt;li&gt;إذا لم تظهر، افتح قائمة &lt;code&gt;Help&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;اختر التحقق من التحديثات يدويًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fent418fw7u81v0ur4uia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fent418fw7u81v0ur4uia.png" alt="صورة" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. ثبّت التحديث وتحقق منه
&lt;/h3&gt;

&lt;p&gt;بعد تنزيل التحديث:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;اتبع تعليمات التثبيت.&lt;/li&gt;
&lt;li&gt;أعد تشغيل Cursor.&lt;/li&gt;
&lt;li&gt;افتح الإعدادات مرة أخرى.&lt;/li&gt;
&lt;li&gt;تأكد أن الإصدار أصبح &lt;code&gt;0.50&lt;/code&gt; أو أحدث.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbe28h4pxz1yiztm4pnsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbe28h4pxz1yiztm4pnsv.png" alt="صورة" width="799" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. الرجوع إلى الإصدار المستقر
&lt;/h3&gt;

&lt;p&gt;إذا أردت الخروج من برنامج الوصول المبكر:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح الإعدادات.&lt;/li&gt;
&lt;li&gt;انتقل إلى &lt;code&gt;Beta&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;غيّر الخيار من &lt;code&gt;Early Access&lt;/code&gt; إلى &lt;code&gt;Standard&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;بهذا يمكنك العودة إلى القناة المستقرة عند الحاجة.&lt;/p&gt;

&lt;h2&gt;
  
  
  ميزات Cursor 0.50 وكيف تستخدمها عمليًا
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. تحرير ملفات متعددة باستخدام نموذج علامات التبويب المحسّن
&lt;/h3&gt;

&lt;p&gt;يدعم Cursor 0.50 اقتراح تعديلات عبر أكثر من ملف. هذا مفيد عند تنفيذ تغييرات تؤثر على طبقات متعددة مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Controller&lt;/li&gt;
&lt;li&gt;Service&lt;/li&gt;
&lt;li&gt;Repository&lt;/li&gt;
&lt;li&gt;Types&lt;/li&gt;
&lt;li&gt;Tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9f55tn1gxl7qgex2kk0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9f55tn1gxl7qgex2kk0t.png" alt="صورة" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;مثال عملي: إذا أضفت endpoint جديدًا في مشروع TypeScript، اطلب من Cursor تحديث الملفات المرتبطة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;أضف endpoint جديدًا باسم GET /users/:id.
حدّث ملف routes، وملف service، وأنشئ type مناسبًا للرد.
اقترح أيضًا اختبارًا بسيطًا للحالة الناجحة وحالة عدم العثور.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعد ذلك راجع التغييرات المقترحة ملفًا ملفًا قبل قبولها.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. استخدام Background Agent للمهام الثقيلة
&lt;/h3&gt;

&lt;p&gt;ميزة Background Agent، المتوفرة كمعاينة، تسمح بتشغيل مهام مدعومة بالذكاء الاصطناعي على أجهزة افتراضية بعيدة. الفكرة العملية هي نقل المهام الطويلة بعيدًا عن جلسة التحرير الأساسية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxct9v2ao63vce291hm6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxct9v2ao63vce291hm6t.png" alt="صورة" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;استخدمها في حالات مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;توليد اختبارات لوحدة كبيرة.&lt;/li&gt;
&lt;li&gt;تحليل أخطاء build.&lt;/li&gt;
&lt;li&gt;اقتراح refactor لجزء من الكود.&lt;/li&gt;
&lt;li&gt;مراجعة تغييرات كبيرة في مشروع API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال طلب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;افحص مجلد services واقترح refactor لتقليل التكرار.
لا تغيّر الواجهات العامة الحالية.
أنشئ ملخصًا بالتغييرات قبل تعديل الملفات.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. التحرير المضمّن عبر Cmd/Ctrl + K
&lt;/h3&gt;

&lt;p&gt;يدعم التحرير المضمّن الآن تغييرات أوسع على مستوى الملف بالكامل. يمكنك استخدامه عندما تريد تعديل ملف مفتوح دون الانتقال إلى محادثة طويلة.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;أمثلة عملية:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;حوّل هذا الملف لاستخدام async/await بدل Promise chains.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;أضف معالجة أخطاء موحدة دون تغيير توقيع الدوال الحالية.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;استخرج منطق التحقق إلى دالة مستقلة داخل نفس الملف.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;نصيحة: قبل تنفيذ تغييرات واسعة، تأكد أن المشروع تحت Git حتى يمكنك مراجعة diff أو الرجوع بسهولة.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. تضمين مجلدات كاملة باستخدام @-Folder
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام &lt;code&gt;@-folder&lt;/code&gt; لإضافة سياق من مجلد كامل داخل Cursor. هذا مفيد عندما يكون السؤال مرتبطًا بأكثر من ملف.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;مثال:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@backend اشرح مسار تنفيذ طلب تسجيل الدخول من route إلى قاعدة البيانات.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@backend @frontend تحقق من توافق شكل response الخاص بـ /auth/login مع استهلاك الواجهة الأمامية.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا كان المشروع كبيرًا جدًا، سيعرض Cursor الملفات المستبعدة بصريًا حتى تعرف حدود السياق المستخدم.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. مساحات العمل لإدارة مشاريع متعددة
&lt;/h3&gt;

&lt;p&gt;إذا كنت تعمل على عدة خدمات أو مستودعات، استخدم Workspaces بدل فتح كل مشروع منفصلًا.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;الخطوات:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح Cursor.&lt;/li&gt;
&lt;li&gt;من القائمة اختر &lt;code&gt;File&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;اختر &lt;code&gt;Add Folder to Workspace&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;أضف مجلدات مثل:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;backend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;frontend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api-gateway&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shared-types&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;احفظ مساحة العمل كملف JSON لإعادة فتحها لاحقًا.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;هذا مفيد جدًا عند العمل على microservices أو واجهات API تعتمد على أكثر من مستودع.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. تحسينات الدردشة
&lt;/h3&gt;

&lt;p&gt;يدعم Cursor 0.50 تحسينات في الدردشة مثل نسخ المحادثات وتصديرها، ما يجعلها مفيدة للتوثيق ومشاركة خطوات التصحيح مع الفريق.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;مثال استخدام عملي:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح دردشة مع Cursor أثناء تصحيح bug.&lt;/li&gt;
&lt;li&gt;اطلب منه تحليل الخطأ واقتراح خطوات.&lt;/li&gt;
&lt;li&gt;بعد الوصول للحل، صدّر المحادثة.&lt;/li&gt;
&lt;li&gt;شاركها في issue أو pull request لتوثيق سبب التغيير.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. التسعير المبسط و Max Mode
&lt;/h3&gt;

&lt;p&gt;في Cursor 0.50، يتم احتساب استدعاءات النماذج كطلبات. كما يتوفر &lt;code&gt;Max Mode&lt;/code&gt; لكل نموذج حدودي، مع تكلفة مميزة أعلى من أسعار API بنسبة 20%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpefdhj2o4jf6wlase9hc.png" alt="صورة" width="799" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;لتفعيله:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح إعدادات الدردشة.&lt;/li&gt;
&lt;li&gt;فعّل &lt;code&gt;Max Mode&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;اختر النموذج الذي تريد استخدامه.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;استخدم &lt;code&gt;Max Mode&lt;/code&gt; للمهام التي تحتاج قدرة أعلى، مثل تحليل ملفات كثيرة أو تنفيذ refactor معقّد، وليس لكل تعديل صغير.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. تحسينات إضافية
&lt;/h3&gt;

&lt;p&gt;يتضمن Cursor 0.50 أيضًا تحسينات أخرى مفيدة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP على WSL و Remote SSH:&lt;/strong&gt; دعم أفضل لسير العمل على Windows Subsystem for Linux وجلسات SSH البعيدة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;أدوات MCP قابلة للتبديل:&lt;/strong&gt; يمكنك تفعيل أو تعطيل الأدوات حسب الحاجة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP قابل للبث لـ MCP:&lt;/strong&gt; تحسينات في الأداء للعمليات المرتبطة بـ MCP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;محطة وكيل أصلية:&lt;/strong&gt; Terminal أكثر سرعة وموثوقية بدل المحاكي السابق.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  سير عمل مقترح لمطوري API باستخدام Cursor 0.50
&lt;/h2&gt;

&lt;p&gt;يمكنك تطبيق الميزات السابقة بهذا التسلسل العملي:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح مشروع API داخل Workspace.&lt;/li&gt;
&lt;li&gt;استخدم &lt;code&gt;@backend&lt;/code&gt; لإعطاء Cursor سياق المجلد.&lt;/li&gt;
&lt;li&gt;اطلب منه فهم endpoint أو تنفيذ endpoint جديد.&lt;/li&gt;
&lt;li&gt;استخدم تحرير الملفات المتعددة لتحديث routes وservices وtypes.&lt;/li&gt;
&lt;li&gt;شغّل الاختبارات محليًا.&lt;/li&gt;
&lt;li&gt;استخدم Background Agent للمهام الثقيلة مثل توليد اختبارات إضافية.&lt;/li&gt;
&lt;li&gt;اختبر endpoint باستخدام أداة API مثل Apidog.&lt;/li&gt;
&lt;li&gt;صدّر محادثة التصحيح إذا احتجت توثيق القرار داخل PR.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;مثال prompt كامل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@backend أضف endpoint جديدًا GET /orders/:id.
استخدم النمط الموجود في routes وservices.
أضف type للرد.
أضف اختبارًا للحالة الناجحة وحالة 404.
لا تغيّر أسماء الدوال العامة الحالية.
اعرض ملخصًا قبل تطبيق التعديلات.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  لماذا يهم Cursor 0.50 لمطوري الواجهات الخلفية وواجهات API؟
&lt;/h2&gt;

&lt;p&gt;أكبر فائدة في Cursor 0.50 ليست مجرد توليد كود أسرع، بل تقليل التنقل اليدوي بين الملفات عند تنفيذ تغيير واحد يؤثر على أجزاء متعددة من النظام.&lt;/p&gt;

&lt;p&gt;هذا يظهر بوضوح في مهام مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;إضافة endpoint جديد.&lt;/li&gt;
&lt;li&gt;تعديل شكل response.&lt;/li&gt;
&lt;li&gt;تحديث validation.&lt;/li&gt;
&lt;li&gt;إنشاء أو تعديل tests.&lt;/li&gt;
&lt;li&gt;إعادة هيكلة service أو repository.&lt;/li&gt;
&lt;li&gt;تتبع bug عبر عدة ملفات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ومع أدوات اختبار API مثل Apidog، يمكنك الانتقال بسرعة من تعديل الكود إلى اختبار الطلبات والتحقق من النتائج.&lt;/p&gt;

&lt;h2&gt;
  
  
  ابدأ باستخدام Cursor 0.50
&lt;/h2&gt;

&lt;p&gt;لتجربة Cursor 0.50:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;فعّل &lt;code&gt;Early Access&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;حدّث Cursor إلى الإصدار &lt;code&gt;0.50&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;جرّب تحرير ملفات متعددة على مهمة صغيرة.&lt;/li&gt;
&lt;li&gt;استخدم &lt;code&gt;@-folder&lt;/code&gt; لإضافة سياق أكبر.&lt;/li&gt;
&lt;li&gt;انقل المهام الثقيلة إلى Background Agent عند الحاجة.&lt;/li&gt;
&lt;li&gt;راجع كل التغييرات عبر Git قبل الدمج.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cursor 0.50 يمنحك سير عمل أقرب إلى مساعد تطوير متكامل، خصوصًا عند العمل على مشاريع API وBackend متعددة الملفات.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيفية بناء أتمتة متصفح مدعومة بالذكاء الاصطناعي باستخدام بايثون، أولاما وديب سيك</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:10:00 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyfy-bn-tmt-mtsfh-mdwm-bldhk-lstny-bstkhdm-bythwn-wlm-wdyb-syk-2j09</link>
      <guid>https://dev.to/yusuf_khalidd/kyfy-bn-tmt-mtsfh-mdwm-bldhk-lstny-bstkhdm-bythwn-wlm-wdyb-syk-2j09</guid>
      <description>&lt;p&gt;يتطور أتمتة المتصفحات الحديثة بسرعة. بدل الاعتماد على سكربتات Selenium الهشة، يمكنك استخدام Browser Use مع Ollama ونماذج DeepSeek لبناء وكيل ذكاء اصطناعي محلي يتحكم في المتصفح، يملأ النماذج، يستخرج البيانات، وينفذ مهام متعددة الخطوات من تعليمات باللغة الطبيعية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;في هذا الدليل العملي ستجهز بيئة Python، تشغل Ollama محليًا، تثبت Browser Use وPlaywright، ثم تبني وكيلًا بسيطًا يبحث في Google عن طقس بوسطن ويطبع النتيجة.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا تستخدم Browser Use وOllama وDeepSeek؟
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browser Use&lt;/strong&gt;: حزمة Python لتنسيق إجراءات المتصفح مثل التنقل، النقر، قراءة الصفحة، واستخراج البيانات.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt;: خادم محلي لتشغيل نماذج اللغة الكبيرة LLM على جهازك.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt;: نموذج استدلال يساعد الوكيل على تحويل المهمة النصية إلى خطوات قابلة للتنفيذ داخل المتصفح.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;باستخدام هذه الحزمة يمكنك تنفيذ مهام مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;أتمتة البحث والتنقل في الويب&lt;/li&gt;
&lt;li&gt;ملء النماذج والتعامل مع الصفحات الديناميكية&lt;/li&gt;
&lt;li&gt;استخراج بيانات من مواقع مختلفة&lt;/li&gt;
&lt;li&gt;تشغيل مهام متعددة الخطوات من Prompt واحد&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  المتطلبات الأساسية
&lt;/h2&gt;

&lt;p&gt;قبل البدء، تأكد من توفر التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.11+&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; من &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;ollama.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; لتشغيل Playwright
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware مقترح&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;4 أنوية CPU على الأقل&lt;/li&gt;
&lt;li&gt;16GB RAM&lt;/li&gt;
&lt;li&gt;12GB مساحة تخزين تقريبًا لنموذج DeepSeek&lt;/li&gt;
&lt;li&gt;GPU اختياري لكنه مفيد للنماذج الكبيرة&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. إنشاء مشروع جديد
&lt;/h2&gt;

&lt;p&gt;ابدأ بمجلد مستقل للمشروع:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;browser-use-agent
&lt;span class="nb"&gt;cd &lt;/span&gt;browser-use-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. استنساخ مستودع Browser Use
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/browser-use/browser-use.git
&lt;span class="nb"&gt;cd &lt;/span&gt;browser-use
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. إنشاء بيئة Python افتراضية
&lt;/h2&gt;

&lt;p&gt;استخدم بيئة افتراضية لعزل التبعيات:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;فعّل البيئة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate

&lt;span class="c"&gt;# Windows&lt;/span&gt;
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعد التفعيل يجب أن ترى &lt;code&gt;(venv)&lt;/code&gt; في الطرفية.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. فتح المشروع في VS Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا لم تستخدم VS Code، يمكنك المتابعة بأي محرر تفضله.&lt;/p&gt;

&lt;h2&gt;
  
  
  تثبيت Ollama وDeepSeek محليًا
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. تثبيت Ollama
&lt;/h3&gt;

&lt;p&gt;نزّل Ollama من &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;ollama.com&lt;/a&gt;، ثم تحقق من التثبيت:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9hs731bxt3r1pudmuyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9hs731bxt3r1pudmuyi.png" alt="download ollama" width="799" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. تنزيل نموذج DeepSeek
&lt;/h3&gt;

&lt;p&gt;اسحب النموذج باستخدام Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull deepseek/seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;ملاحظة: حجم النموذج قد يكون كبيرًا. إذا كانت موارد جهازك محدودة، يمكنك تجربة نموذج أخف مثل &lt;code&gt;qwen2.5:14b&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;تحقق من النماذج المثبتة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;تأكد من ظهور &lt;code&gt;deepseek/seed&lt;/code&gt; أو النموذج الذي اخترته.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8ypljcyc80vze3ikty5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8ypljcyc80vze3ikty5.png" alt="pull deepseek model" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  تثبيت Browser Use والتبعيات
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. تثبيت Browser Use وأدوات التطوير
&lt;/h3&gt;

&lt;p&gt;من داخل مجلد &lt;code&gt;browser-use&lt;/code&gt; والبيئة الافتراضية مفعّلة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; .&lt;span class="s2"&gt;"[dev]"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. تثبيت LangChain وتكامل Ollama
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;langchain langchain-ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذه الحزم تسمح للوكيل باستخدام نموذج Ollama المحلي.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. تثبيت متصفحات Playwright
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;playwright &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا ظهرت مشاكل في الاعتماديات على Linux، جرّب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;playwright install-deps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  تشغيل خادم Ollama
&lt;/h2&gt;

&lt;p&gt;افتح نافذة طرفية منفصلة وشغّل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;سيعمل خادم LLM محليًا على:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:11434
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;اتركه يعمل أثناء تشغيل وكيل المتصفح.&lt;/p&gt;

&lt;h2&gt;
  
  
  مثال عملي: وكيل يبحث عن طقس بوسطن في Google
&lt;/h2&gt;

&lt;p&gt;أنشئ ملفًا باسم &lt;code&gt;test.py&lt;/code&gt; داخل المشروع:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;browser_use&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_ollama&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatOllama&lt;/span&gt;


&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_search&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Use Google to find the weather in Boston, Massachusetts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;ChatOllama&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek/seed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;num_ctx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;max_actions_per_step&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;tool_call_in_content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;


&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;run_search&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  تشغيل السكربت
&lt;/h3&gt;

&lt;p&gt;تأكد أولًا أن VS Code يستخدم مترجم Python الخاص بالبيئة الافتراضية:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;اضغط &lt;code&gt;Ctrl+P&lt;/code&gt; أو &lt;code&gt;Cmd+P&lt;/code&gt; على macOS&lt;/li&gt;
&lt;li&gt;اكتب:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Select Python Interpreter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;اختر مترجم البيئة &lt;code&gt;venv&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ثم شغّل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python test.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;سيقوم الوكيل بفتح المتصفح، البحث في Google عن طقس بوسطن، ثم طباعة النتيجة.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqf2i0o8fi0solt5e52p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqf2i0o8fi0solt5e52p.png" alt="browser-use search" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;إذا ظهر خطأ، تحقق من التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل يعمل Ollama؟
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;هل المنفذ &lt;code&gt;11434&lt;/code&gt; متاح؟&lt;/li&gt;
&lt;li&gt;هل النموذج مثبت؟
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;راجع سجلات Ollama:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/.ollama/logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kgnz25ynjtz5wfjiabt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0kgnz25ynjtz5wfjiabt.png" alt="browser-use search result" width="798" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  دمج Apidog لاختبار واجهات API التي يعتمد عليها الوكيل
&lt;/h2&gt;

&lt;p&gt;عندما يعتمد وكيل المتصفح على واجهات API، مثل نقاط نهاية للاستخراج أو تنفيذ سير عمل خلفي، يصبح اختبار عقود API مهمًا لتقليل الأعطال غير المتوقعة.&lt;/p&gt;

&lt;p&gt;يساعدك Apidog في:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;اختبار نقاط النهاية التي يعتمد عليها الوكيل&lt;/li&gt;
&lt;li&gt;إدارة حالات اختبار API للواجهة الخلفية&lt;/li&gt;
&lt;li&gt;التحقق من عقود API بين التطوير والإنتاج&lt;/li&gt;
&lt;li&gt;تقليل أخطاء التكامل أثناء تشغيل الأتمتة&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;استخدمه كجزء من سير العمل قبل تشغيل وكلاء المتصفح على بيانات أو مهام حقيقية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy9qo7a59se7jxdgydlsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy9qo7a59se7jxdgydlsq.png" alt="API Contract Testing with Apidog" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;اختبار عقود API باستخدام Apidog&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  نصائح لكتابة Prompts أفضل
&lt;/h2&gt;

&lt;p&gt;كلما كانت المهمة أوضح، زادت دقة الوكيل.&lt;/p&gt;

&lt;h3&gt;
  
  
  كن محددًا
&lt;/h3&gt;

&lt;p&gt;بدلًا من:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ابحث عن رحلات جوية.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;اكتب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;انتقل إلى kayak.com، ابحث عن رحلات جوية من زيورخ إلى بكين من 25.12.2025 إلى 02.02.2026، ثم رتب النتائج حسب السعر.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  قسم المهام الطويلة
&lt;/h3&gt;

&lt;p&gt;مثال:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;زر LinkedIn، ابحث عن وظائف تعلم الآلة، اجمع روابط أول 10 نتائج، واحفظها في ملف.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  عدّل Prompt عند الحاجة
&lt;/h3&gt;

&lt;p&gt;إذا كانت النتيجة غير دقيقة، عدّل المهمة لتصبح أكثر وضوحًا:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;حدد الموقع المطلوب&lt;/li&gt;
&lt;li&gt;حدد البيانات التي تريد استخراجها&lt;/li&gt;
&lt;li&gt;حدد صيغة الإخراج&lt;/li&gt;
&lt;li&gt;ضع حدودًا للخطوات أو النتائج&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  تصحيح الأخطاء واستكشاف المشكلات
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ollama لا يستجيب
&lt;/h3&gt;

&lt;p&gt;تحقق من تشغيل الخادم:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;وتحقق من السجلات:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/.ollama/logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Playwright لا يفتح المتصفح
&lt;/h3&gt;

&lt;p&gt;أعد تثبيت المتصفحات:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;playwright &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;وعلى Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;playwright install-deps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  النموذج بطيء
&lt;/h3&gt;

&lt;p&gt;جرّب أحد الخيارات التالية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استخدام نموذج أصغر&lt;/li&gt;
&lt;li&gt;تقليل &lt;code&gt;num_ctx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;تقليل &lt;code&gt;max_steps&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;استخدام GPU إن توفر&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  تغيير المهمة
&lt;/h3&gt;

&lt;p&gt;لتشغيل سيناريو مختلف، عدّل قيمة &lt;code&gt;task&lt;/code&gt; فقط:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Go to GitHub, search for browser-use, and summarize the repository stars and description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Open a website, extract product names and prices, and return them as a list&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  الأسئلة الشائعة
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ما هو Browser Use؟
&lt;/h3&gt;

&lt;p&gt;Browser Use هو حزمة Python لأتمتة المتصفحات باستخدام وكلاء ذكاء اصطناعي وPlaywright.&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/browser-use/browser-use" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  هل أحتاج إلى GPU؟
&lt;/h3&gt;

&lt;p&gt;ليس إلزاميًا للنماذج الأصغر، لكنه يحسن الأداء مع النماذج الأكبر.&lt;/p&gt;

&lt;h3&gt;
  
  
  هل يمكنني استخدام نموذج غير DeepSeek؟
&lt;/h3&gt;

&lt;p&gt;نعم. يمكنك استخدام أي نموذج يدعمه Ollama ويملك قدرة جيدة على الاستدلال.&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/browser-use/browser-use" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  هل تتم معالجة البيانات محليًا؟
&lt;/h3&gt;

&lt;p&gt;نعم، عند تشغيل Ollama محليًا تبقى عملية الاستدلال على جهازك، ما لم تقم بتكوين شيء مختلف.&lt;/p&gt;

&lt;h3&gt;
  
  
  هل يمكن أتمتة تسجيل الدخول والمهام متعددة الخطوات؟
&lt;/h3&gt;

&lt;p&gt;نعم. اكتب المهمة بشكل واضح، وسيحاول الوكيل تقسيمها إلى خطوات داخل المتصفح.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخاتمة
&lt;/h2&gt;

&lt;p&gt;باستخدام Python وBrowser Use وOllama وDeepSeek، يمكنك بناء وكلاء ذكاء اصطناعي يتحكمون في متصفح حقيقي اعتمادًا على تعليمات نصية. هذه الحزمة مفيدة لاختبارات QA، استخراج البيانات، أتمتة سير العمل، وتجارب التكامل التي تحتاج خصوصية وتشغيلًا محليًا.&lt;/p&gt;

&lt;p&gt;ولأن وكلاء المتصفح غالبًا يتفاعلون مع واجهات API، أضف Apidog إلى سير العمل لاختبار العقود ونقاط النهاية التي تعتمد عليها الأتمتة.&lt;/p&gt;

&lt;p&gt;ابدأ بسيناريو صغير مثل البحث والاستخراج، ثم وسّع الوكيل تدريجيًا إلى مهام أكثر تعقيدًا.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>تعلم البرمجة بالذكاء الاصطناعي مجاناً: دور Cursor Pro و Apidog في تمكين المطورين الطلاب</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:09:42 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/tlm-lbrmj-bldhk-lstny-mjnan-dwr-cursor-pro-w-apidog-fy-tmkyn-lmtwryn-ltlb-3ilp</link>
      <guid>https://dev.to/yusuf_khalidd/tlm-lbrmj-bldhk-lstny-mjnan-dwr-cursor-pro-w-apidog-fy-tmkyn-lmtwryn-ltlb-3ilp</guid>
      <description>&lt;p&gt;يمكن أن يكون الوصول إلى أدوات ترميز الذكاء الاصطناعي المتقدمة عاملًا مهمًا للمطورين الطلاب. مع إتاحة Cursor لخطة Pro مجانًا لمدة عام واحد للطلاب المعتمدين عالميًا، ومع استخدام Apidog في تصميم واختبار وتوثيق واجهات برمجة التطبيقات، يمكنك بناء مشاريع أسرع وتقليل أخطاء التكامل دون تكلفة إضافية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor Pro مجانًا للطلاب: كيف تستفيد منه عمليًا
&lt;/h2&gt;

&lt;p&gt;Cursor ليس مجرد محرر كود؛ هو بيئة تطوير مدعومة بالذكاء الاصطناعي تساعدك أثناء الكتابة، التصحيح، وفهم قاعدة الكود. إذا كنت تعمل على واجبات جامعية، مشروع تخرج، أو هاكاثون، فالفائدة الأساسية هي تقليل الوقت بين الفكرة والتنفيذ.&lt;/p&gt;

&lt;h3&gt;
  
  
  ما الذي تحصل عليه في Cursor Pro للطلاب؟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;اقتراحات كود مدعومة بالذكاء الاصطناعي:&lt;/strong&gt; إكمال تلقائي، اكتشاف أخطاء، واقتراحات تحسين أثناء الكتابة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;فهم سياقي للمشروع:&lt;/strong&gt; يمكن لـ Cursor استخدام ملفات المشروع لتقديم اقتراحات أقرب إلى الكود الفعلي.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;بيئات اختبار وتجربة:&lt;/strong&gt; جرّب حلولًا مختلفة بسرعة قبل اعتمادها.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;دعم لغات وأطر عمل متعددة:&lt;/strong&gt; مفيد عند الانتقال بين JavaScript، Python، Node.js، React، وغيرها.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  كيفية الحصول على Cursor Pro مجانًا كطالب
&lt;/h2&gt;

&lt;p&gt;اتبع الخطوات التالية:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح صفحة الطلاب في Cursor.&lt;/li&gt;
&lt;li&gt;استخدم بريدك الإلكتروني الأكاديمي للتحقق من حالتك كطالب.&lt;/li&gt;
&lt;li&gt;بعد الموافقة، تحصل على سنة كاملة من ميزات Pro، بما في ذلك:

&lt;ul&gt;
&lt;li&gt;500 طلب ذكاء اصطناعي متميز سريع شهريًا.&lt;/li&gt;
&lt;li&gt;طلبات بطيئة غير محدودة.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F05%2Fimage-20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F05%2Fimage-20.png" alt="الحصول على Cursor مجاناً للطلاب" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  نظرة سريعة: مزايا Cursor Pro للطلاب
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;الميزة&lt;/th&gt;
&lt;th&gt;الوصف&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;جميع ميزات Pro&lt;/td&gt;
&lt;td&gt;وصول كامل لأدوات ترميز الذكاء الاصطناعي المتقدمة&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;طلبات متميزة سريعة&lt;/td&gt;
&lt;td&gt;500 طلب شهريًا، بالإضافة إلى طلبات بطيئة غير محدودة&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;بيئات اختبار عملية&lt;/td&gt;
&lt;td&gt;جرّب، اختبر، وتعلم بشكل تفاعلي&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;مساعدة واعية بالسياق&lt;/td&gt;
&lt;td&gt;إرشادات مرتبطة بقاعدة الكود والمشروع&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  لماذا تجمع بين Cursor و Apidog؟
&lt;/h2&gt;

&lt;p&gt;معظم مشاريع الطلاب لا تتوقف عند كتابة الكود فقط. غالبًا ستحتاج إلى:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تصميم REST API.&lt;/li&gt;
&lt;li&gt;اختبار endpoints.&lt;/li&gt;
&lt;li&gt;إنشاء mock API للواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;توثيق API للفريق أو للمناقشة الأكاديمية.&lt;/li&gt;
&lt;li&gt;التأكد من أن الواجهة الأمامية والخلفية متوافقتان.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هنا يأتي دور Apidog كمساحة عمل لتصميم واختبار وتوثيق واجهات برمجة التطبيقات، بينما يساعدك Cursor على كتابة الكود ودمج هذه الواجهات داخل التطبيق.&lt;/p&gt;

&lt;h2&gt;
  
  
  سير عمل عملي: React + Node.js + Apidog + Cursor
&lt;/h2&gt;

&lt;p&gt;لنفترض أنك تبني مشروعًا طلابيًا يحتوي على:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;واجهة أمامية بـ React.&lt;/li&gt;
&lt;li&gt;واجهة خلفية بـ Node.js.&lt;/li&gt;
&lt;li&gt;API لإدارة المستخدمين.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. صمّم endpoint في Apidog
&lt;/h3&gt;

&lt;p&gt;مثال endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /users
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استجابة متوقعة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sara"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sara@example.com"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. اختبر endpoint قبل دمجه
&lt;/h3&gt;

&lt;p&gt;داخل Apidog، أرسل الطلب وتأكد من:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;كود الاستجابة &lt;code&gt;200&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;شكل البيانات مطابق لما تحتاجه الواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;أسماء الحقول ثابتة مثل &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. استخدم Cursor لكتابة كود العميل
&lt;/h3&gt;

&lt;p&gt;مثال بسيط في React:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UsersList&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setUsers&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchUsers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:3000/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="nf"&gt;setUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;fetchUsers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; - &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استخدم Cursor لمراجعة الكود، اقتراح معالجة الأخطاء، أو تحويله إلى TypeScript إذا كان مشروعك يتطلب ذلك.&lt;/p&gt;

&lt;p&gt;مثال لتحسين معالجة الأخطاء:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchUsers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:3000/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;فشل تحميل المستخدمين&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="nf"&gt;setUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;fetchUsers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  خادم Apidog MCP: جعل Cursor يفهم مواصفات API
&lt;/h2&gt;

&lt;p&gt;عند بناء مشروع يعتمد على API، تحدث الأخطاء غالبًا بسبب عدم تطابق الكود مع مواصفات الواجهة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;اسم endpoint غير صحيح.&lt;/li&gt;
&lt;li&gt;parameter ناقص.&lt;/li&gt;
&lt;li&gt;body لا يطابق schema.&lt;/li&gt;
&lt;li&gt;response مختلف عمّا تتوقعه الواجهة الأمامية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;خادم Apidog MCP، أو Model Context Protocol، يساعد في تقليل هذه الفجوة عبر إتاحة مواصفات API لـ Cursor حتى يتمكن من تقديم اقتراحات أكثر ارتباطًا بتعريفات الواجهة لديك.&lt;/p&gt;

&lt;h2&gt;
  
  
  ما الذي يضيفه Apidog MCP إلى Cursor؟
&lt;/h2&gt;

&lt;p&gt;عند تشغيله مع مواصفات Apidog أو OpenAPI/Swagger، يمكن أن يساعد Cursor في:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;توليد كود مطابق للمواصفات:&lt;/strong&gt; اقتراح طلبات HTTP تتوافق مع endpoints الفعلية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;إكمال تلقائي أفضل:&lt;/strong&gt; اقتراح أسماء parameters والحقول بناءً على API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;توثيق داخل الكود:&lt;/strong&gt; إنشاء تعليقات توضح endpoints والاستخدام.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;اكتشاف عدم التطابق مبكرًا:&lt;/strong&gt; تقليل أخطاء التكامل أثناء التطوير.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  إعداد Apidog MCP مع Cursor
&lt;/h2&gt;

&lt;p&gt;الخطوات العامة:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ثبّت Node.js إصدار 18 أو أحدث.&lt;/li&gt;
&lt;li&gt;افتح إعدادات Cursor الخاصة بـ MCP.&lt;/li&gt;
&lt;li&gt;أضف إعدادات خادم Apidog MCP.&lt;/li&gt;
&lt;li&gt;اختر مصدر مواصفات API:

&lt;ul&gt;
&lt;li&gt;رابط مباشر لمشروع Apidog.&lt;/li&gt;
&lt;li&gt;وثائق Apidog المنشورة.&lt;/li&gt;
&lt;li&gt;ملف OpenAPI أو Swagger محلي أو عبر الإنترنت.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;مثال هيكل إعدادات عام:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apidog"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"PATH_TO_APIDOG_MCP_SERVER"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"APIDOG_PROJECT_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_APIDOG_PROJECT_OR_DOC_URL"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استبدل القيم التالية بما يناسب مشروعك:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PATH_TO_APIDOG_MCP_SERVER&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YOUR_APIDOG_PROJECT_OR_DOC_URL&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بعد الإعداد، افتح مشروعك في Cursor واطلب منه مثلًا:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;اكتب دالة TypeScript تستدعي endpoint /users بناءً على مواصفات API المتاحة.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;تحقق من أن request body في هذا الكود يطابق schema الخاصة بـ POST /users.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  مثال عملي: endpoint لإنشاء مستخدم
&lt;/h2&gt;

&lt;p&gt;إذا كانت لديك endpoint مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /users
Content-Type: application/json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sara"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sara@example.com"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يمكنك كتابة دالة في TypeScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;CreateUserInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CreateUserInput&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:3000/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;فشل إنشاء المستخدم&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;باستخدام Cursor مع سياق API، يصبح من الأسهل مراجعة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل endpoint صحيح؟&lt;/li&gt;
&lt;li&gt;هل الحقول المطلوبة موجودة؟&lt;/li&gt;
&lt;li&gt;هل نوع البيانات متوافق؟&lt;/li&gt;
&lt;li&gt;هل تحتاج إلى headers إضافية؟&lt;/li&gt;
&lt;li&gt;هل طريقة التعامل مع response مناسبة؟&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  فوائد واقعية للمطورين الطلاب
&lt;/h2&gt;

&lt;p&gt;الجمع بين Cursor و Apidog يساعدك على بناء مشاريع أكثر تنظيمًا:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;تعلم أسرع:&lt;/strong&gt; Cursor يساعدك على فهم الكود، وApidog يساعدك على فهم API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;أخطاء أقل:&lt;/strong&gt; اختبار endpoints قبل الدمج يقلل مشاكل الواجهة الأمامية والخلفية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;سير عمل أقرب للفرق الاحترافية:&lt;/strong&gt; تصميم، اختبار، توثيق، ثم تنفيذ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;إنجاز أسرع للمشاريع:&lt;/strong&gt; مفيد للواجبات، مشاريع التخرج، والهاكاثونات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;عرض Cursor للطلاب هو جزء واحد من مجموعة أكبر من الأدوات المجانية للمتعلمين: &lt;a href="https://apidog.com/ar/blog/free-github-student-developer-pack/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;حزمة GitHub Student Developer Pack&lt;/a&gt; تضيف أرصدة سحابية ونطاقات مجانية وعشرات الخدمات المدفوعة دون تكلفة.&lt;/p&gt;

&lt;p&gt;إذا رفض فحص التسجيل بريدك الإلكتروني الأكاديمي، فمن المفيد أن تفهم &lt;a href="https://apidog.com/ar/blog/fix-curror-student-verification-error/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;سبب حدوث خطأ التحقق من الطالب&lt;/a&gt; وأسرع الطرق لتجاوزه.&lt;/p&gt;

&lt;h2&gt;
  
  
  خلاصة: ابنِ بذكاء أكبر، وأطلق أسرع
&lt;/h2&gt;

&lt;p&gt;إذا كنت طالبًا وتعمل على مشاريع برمجية تعتمد على API، فابدأ بالحصول على Cursor Pro للطلاب، ثم استخدم Apidog لتنظيم دورة حياة واجهة البرمجة: التصميم، الاختبار، التوثيق، والـ mock.&lt;/p&gt;

&lt;p&gt;الخطوة العملية التالية:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://cursor.com/students" rel="noopener noreferrer"&gt;تحقق من حالة الطالب الخاصة بك واطالب بـ Cursor Pro&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;صمّم API مشروعك في Apidog.&lt;/li&gt;
&lt;li&gt;اختبر endpoints قبل كتابة الواجهة الأمامية.&lt;/li&gt;
&lt;li&gt;استخدم Cursor لدمج API داخل الكود بثقة أكبر.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  الأسئلة المتكررة
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;س: كيف أحصل على Cursor Pro مجانًا كطالب؟&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ج: تحقق من حالة الطالب الخاصة بك على موقع Cursor باستخدام بريدك الإلكتروني الأكاديمي. بعد الموافقة، تحصل على سنة كاملة من ميزات Pro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;س: ماذا يحدث بعد السنة المجانية؟&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ج: يتم تجديد الاشتراك بالأسعار القياسية، ويمكنك الإلغاء في أي وقت.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;س: هل Apidog متوافق مع Cursor؟&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ج: نعم. يمكن استخدام Apidog مع Cursor عبر مواصفات API والخوادم الوهمية وسير عمل MCP لتحسين تجربة الترميز المعتمدة على السياق.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;س: لدي اشتراك Cursor بالفعل، ماذا يحدث؟&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ج: يحصل المستخدمون الحاليون على استرداد للوقت غير المستخدم، ويتم تطبيق خصم الطلاب مباشرة.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيفية تشغيل جوجل جيما 3n LLM على أندرويد: دليل الإعداد الشامل</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:06:22 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyfy-tshgyl-jwjl-jym-3n-llm-l-ndrwyd-dlyl-ldd-lshml-1em5</link>
      <guid>https://dev.to/yusuf_khalidd/kyfy-tshgyl-jwjl-jym-3n-llm-l-ndrwyd-dlyl-ldd-lshml-1em5</guid>
      <description>&lt;p&gt;تشغيل نماذج اللغة الكبيرة (LLMs) مباشرة على Android يغيّر طريقة بناء تطبيقات الذكاء الاصطناعي: زمن استجابة أقل، خصوصية أعلى، وإمكانية العمل دون اتصال. في هذا الدليل العملي ستثبّت &lt;strong&gt;Google Gemma 3n&lt;/strong&gt; عبر &lt;strong&gt;AI Edge Gallery&lt;/strong&gt;، تختبره على الجهاز، ثم تجهّزه للاستخدام داخل تطبيق أو سير عمل API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;💡 إذا كنت تبني طبقة API حول Gemma 3n، استخدم Apidog للتحقق من الطلبات، تنسيقات الاستجابة، زمن الاستجابة، ومعالجة الأخطاء قبل ربطها بتطبيق Android.&lt;/p&gt;

&lt;h2&gt;
  
  
  ما هو Google Gemma 3n ومعرض AI Edge Gallery؟
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemma 3n&lt;/strong&gt; هو نموذج لغوي خفيف من Google مصمم للتشغيل على الأجهزة الطرفية بدل الاعتماد الكامل على السحابة. هذا يعني أن الاستدلال يمكن أن يحدث محليًا على جهاز Android، مما يقلل زمن الوصول ويحافظ على بيانات المستخدم داخل الجهاز.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google AI Edge Gallery&lt;/strong&gt; هو تطبيق ومجموعة أدوات تساعد المطورين على تجربة نماذج الذكاء الاصطناعي على الأجهزة الطرفية. يوفر لك:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;نماذج وتجارب جاهزة للـ LLM والرؤية.&lt;/li&gt;
&lt;li&gt;واجهة لاختبار المطالبات النصية والمهام متعددة الوسائط.&lt;/li&gt;
&lt;li&gt;طريقة عملية لتقييم الأداء قبل دمج النموذج في تطبيقك.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  لماذا تستخدم AI Edge Gallery لتشغيل LLM على الجهاز؟
&lt;/h2&gt;

&lt;p&gt;استخدم AI Edge Gallery عندما تريد التحقق سريعًا من ملاءمة Gemma 3n لجهاز معين قبل كتابة تكامل مخصص داخل تطبيقك.&lt;/p&gt;

&lt;p&gt;أهم ما يساعدك عليه:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تشغيل النموذج محليًا واختبار الاستجابة مباشرة.&lt;/li&gt;
&lt;li&gt;مقارنة متغيرات النماذج حسب الذاكرة والسرعة.&lt;/li&gt;
&lt;li&gt;تجربة النصوص والصور والمهام متعددة الدورات.&lt;/li&gt;
&lt;li&gt;رصد السلوك العام للنموذج قبل بناء واجهة API أو شاشة داخل التطبيق.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-3.png" alt="Image" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;الفكرة المعمارية بسيطة: نموذج محلي + وقت تشغيل محسّن + واجهة اختبار. بعد ذلك يمكنك نقل نفس منطق الاستدلال إلى تطبيقك أو تغليفه خلف طبقة API داخلية.&lt;/p&gt;

&lt;h2&gt;
  
  
  متطلبات النظام: هل جهازك مناسب لتشغيل Gemma 3n؟
&lt;/h2&gt;

&lt;p&gt;قبل التثبيت، تحقق من الحد الأدنى التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android:&lt;/strong&gt; 8.0 أو أحدث، أي API Level 26+.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; يفضّل 4 جيجابايت أو أكثر.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;التخزين:&lt;/strong&gt; حوالي 2 جيجابايت مساحة فارغة لملفات النموذج.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;المعالج:&lt;/strong&gt; ARM64 مفضل.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تسريع العتاد:&lt;/strong&gt; وجود GPU أو NPU يساعد في تحسين سرعة الاستدلال.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;نصيحة عملية: اختبر على نفس فئة الأجهزة التي يستهدفها تطبيقك. لا تعتمد فقط على هاتف تطوير عالي المواصفات إذا كان جمهورك يستخدم أجهزة متوسطة.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخطوة 1: تثبيت Google AI Edge Gallery من ملف APK
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ملاحظة:&lt;/strong&gt; AI Edge Gallery غير متاح على Google Play حتى الآن، لذلك ستثبته يدويًا من GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-4.png" alt="Image" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. فعّل تثبيت التطبيقات من مصادر خارجية
&lt;/h3&gt;

&lt;p&gt;على Android:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;الإعدادات &amp;gt; الأمان &amp;gt; تثبيت التطبيقات غير المعروفة
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;في الإصدارات الأحدث، ستمنح الإذن للتطبيق الذي تستخدمه للتثبيت، مثل المتصفح أو مدير الملفات.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. نزّل ملف APK
&lt;/h3&gt;

&lt;p&gt;افتح صفحة الإصدارات:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/google-ai-edge/gallery/releases" rel="noopener noreferrer"&gt;إصدارات GitHub الخاصة بمعرض AI Edge Gallery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ثم نزّل أحدث ملف APK متاح.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. انقل الملف إلى الجهاز
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تنزيل مباشر من متصفح الهاتف.&lt;/li&gt;
&lt;li&gt;USB.&lt;/li&gt;
&lt;li&gt;تخزين سحابي.&lt;/li&gt;
&lt;li&gt;ADB من جهاز التطوير.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال باستخدام ADB بعد تنزيل الملف محليًا:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adb &lt;span class="nb"&gt;install &lt;/span&gt;ai-edge-gallery.apk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا كان التطبيق مثبتًا سابقًا وتريد تحديثه:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adb &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; ai-edge-gallery.apk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. ثبّت التطبيق وافتحه
&lt;/h3&gt;

&lt;p&gt;افتح ملف APK من مدير الملفات، ثم اتبع تعليمات النظام. امنح الأذونات المطلوبة مثل التخزين أو الشبكة إذا طلبها التطبيق.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-5.png" alt="Image" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-6.png" alt="Image" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;عند التشغيل الأول، قد يستغرق التطبيق بعض الوقت للتهيئة وتنزيل الأصول الأولية.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخطوة 2: تنزيل وتهيئة نموذج Gemma 3n
&lt;/h2&gt;

&lt;p&gt;بعد تثبيت AI Edge Gallery، ابدأ بإضافة نموذج Gemma 3n.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح التطبيق.&lt;/li&gt;
&lt;li&gt;انتقل إلى قسم إدارة النماذج.&lt;/li&gt;
&lt;li&gt;نزّل ملف النموذج بصيغة &lt;code&gt;.task&lt;/code&gt; من Hugging Face أو مصدر موثوق.&lt;/li&gt;
&lt;li&gt;اختر النموذج داخل التطبيق وانتظر اكتمال التحميل.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-11.png" alt="Image" width="588" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  كيف تختار متغير النموذج؟
&lt;/h3&gt;

&lt;p&gt;اختر حسب قيود الجهاز وتجربة المستخدم المطلوبة:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;النوع&lt;/th&gt;
&lt;th&gt;مناسب عندما&lt;/th&gt;
&lt;th&gt;الملاحظة&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;متغير أصغر&lt;/td&gt;
&lt;td&gt;تحتاج استجابة أسرع واستهلاك ذاكرة أقل&lt;/td&gt;
&lt;td&gt;قد تكون القدرة أقل قليلًا&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;متغير أكبر&lt;/td&gt;
&lt;td&gt;تحتاج جودة أعلى في الاستجابات&lt;/td&gt;
&lt;td&gt;يتطلب RAM وCPU/GPU أكثر&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;قاعدة عملية: ابدأ بالنموذج الأصغر، اختبر زمن الاستجابة والذاكرة، ثم انتقل إلى متغير أكبر فقط إذا كانت الجودة غير كافية.&lt;/p&gt;

&lt;p&gt;أثناء التنزيل سترى مؤشرات التقدم والوقت المتوقع.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-9.png" alt="Image" width="737" height="1003"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  الخطوة 3: اختبار Gemma 3n داخل AI Edge Gallery
&lt;/h2&gt;

&lt;p&gt;لا تنتقل مباشرة إلى التكامل داخل تطبيقك. اختبر النموذج أولًا داخل المعرض.&lt;/p&gt;

&lt;h3&gt;
  
  
  اختبارات أساسية
&lt;/h3&gt;

&lt;p&gt;جرّب الأنواع التالية من المطالبات:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;لخّص الفقرة التالية في 3 نقاط:
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;اكتب ردًا قصيرًا على رسالة دعم فني من مستخدم يواجه مشكلة في تسجيل الدخول.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;استخرج الكيانات المهمة من النص التالي بصيغة JSON:
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;راقب:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل الاستجابة منطقية؟&lt;/li&gt;
&lt;li&gt;هل النموذج يلتزم بالتنسيق المطلوب؟&lt;/li&gt;
&lt;li&gt;هل زمن الاستجابة مقبول؟&lt;/li&gt;
&lt;li&gt;هل يتوقف التطبيق أو يستهلك ذاكرة عالية؟&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  اختبار الصور والمهام متعددة الوسائط
&lt;/h3&gt;

&lt;p&gt;إذا كان السيناريو الخاص بك يعتمد على الصور:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;حمّل صورة داخل ميزة "اسأل الصورة".&lt;/li&gt;
&lt;li&gt;اطلب وصفًا أو تحليلًا بسيطًا.&lt;/li&gt;
&lt;li&gt;جرّب مطالبات قصيرة وطويلة.&lt;/li&gt;
&lt;li&gt;قارن زمن الاستجابة بين المهام النصية والمهام متعددة الوسائط.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fimage-8.png" alt="Image" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  قائمة تحقق قبل التكامل
&lt;/h3&gt;

&lt;p&gt;استخدم هذه القائمة قبل نقل التجربة إلى تطبيقك:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] النموذج يعمل على الجهاز المستهدف.&lt;/li&gt;
&lt;li&gt;[ ] زمن الاستجابة مقبول.&lt;/li&gt;
&lt;li&gt;[ ] لا يحدث نفاد ذاكرة أثناء الاستخدام العادي.&lt;/li&gt;
&lt;li&gt;[ ] الاستجابات مستقرة عبر مطالبات مختلفة.&lt;/li&gt;
&lt;li&gt;[ ] تم اختبار مدخلات قصيرة وطويلة.&lt;/li&gt;
&lt;li&gt;[ ] تم اختبار حالات فشل، مثل مدخل فارغ أو نص كبير جدًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  الخطوة 4: تحسين Gemma 3n للاستخدام الإنتاجي
&lt;/h2&gt;

&lt;p&gt;عند الانتقال من التجربة إلى الإنتاج، ركّز على الأداء والاستقرار.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. إدارة الذاكرة
&lt;/h3&gt;

&lt;p&gt;لا تحمّل النموذج طوال الوقت إذا لم يكن مطلوبًا. صمّم دورة حياة واضحة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;فتح الميزة &amp;gt; تحميل النموذج &amp;gt; تنفيذ الاستدلال &amp;gt; تحرير الموارد عند الخروج
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;داخل تطبيق Android، يمكنك استخدام منطق مشابه:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LocalAiSession&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;loadModel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// تحميل النموذج عند الحاجة&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;runInference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// تنفيذ الاستدلال المحلي&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;release&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// تحرير الذاكرة عند انتهاء الجلسة&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. استخدم نماذج مكمّمة عند الحاجة
&lt;/h3&gt;

&lt;p&gt;النماذج منخفضة الدقة مثل INT8 تقلل استهلاك الذاكرة وقد تحسن الأداء على الأجهزة المحمولة. الاختيار يعتمد على التوازن بين:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;الجودة.&lt;/li&gt;
&lt;li&gt;الحجم.&lt;/li&gt;
&lt;li&gt;زمن الاستجابة.&lt;/li&gt;
&lt;li&gt;استهلاك البطارية.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. لا تحجب واجهة المستخدم
&lt;/h3&gt;

&lt;p&gt;شغّل الاستدلال في مسار خلفي بدل Main Thread.&lt;/p&gt;

&lt;p&gt;مثال عام في Kotlin Coroutines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="n"&gt;viewModelScope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;withContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Dispatchers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Default&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;localAiSession&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;runInference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;uiState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uiState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. راقب الحرارة والبطارية
&lt;/h3&gt;

&lt;p&gt;الاستدلال المتكرر قد يرفع حرارة الجهاز. للإنتاج:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;قلل عدد الطلبات المتزامنة.&lt;/li&gt;
&lt;li&gt;أضف حدًا لطول المدخلات.&lt;/li&gt;
&lt;li&gt;أوقف المهام الثقيلة عندما يكون الجهاز في وضع توفير الطاقة.&lt;/li&gt;
&lt;li&gt;وفّر خيارًا لتعطيل ميزات AI على الأجهزة الضعيفة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  الخطوة 5: التكامل والاختبار مع Apidog
&lt;/h2&gt;

&lt;p&gt;إذا كنت تغلف Gemma 3n خلف API محلي أو خادم وسيط، فاختبر العقد بوضوح. يساعدك &lt;strong&gt;Apidog&lt;/strong&gt; على:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;إرسال طلبات مشابهة للطلبات الحقيقية من تطبيق Android.&lt;/li&gt;
&lt;li&gt;التحقق من بنية JSON.&lt;/li&gt;
&lt;li&gt;اختبار حالات الخطأ.&lt;/li&gt;
&lt;li&gt;مراقبة زمن الاستجابة.&lt;/li&gt;
&lt;li&gt;محاكاة خدمات غير جاهزة عبر Mock Server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال لعقد API بسيط حول الاستدلال:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /ai/generate
Content-Type: application/json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"لخّص النص التالي في نقطتين"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استجابة متوقعة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"النص الملخص..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latencyMs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1430&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;اختبر أيضًا حالات الخطأ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MODEL_NOT_LOADED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"النموذج غير جاهز بعد"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fmain-interface.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fmain-interface.png" alt="Image" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;يمكنك استخدام Mock Server في Apidog لمحاكاة سير عمل هجين: جزء من الذكاء الاصطناعي يعمل على الجهاز، وجزء آخر عبر خدمة بعيدة. هذا مفيد عندما تريد تطوير واجهة المستخدم قبل اكتمال طبقة الاستدلال الفعلية.&lt;/p&gt;

&lt;h2&gt;
  
  
  ماذا بعد لـ Gemma 3n و Edge Gallery؟
&lt;/h2&gt;

&lt;p&gt;يتطور نظام Gemma 3n و AI Edge Gallery بسرعة. من التحسينات المتوقعة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;دعم iOS:&lt;/strong&gt; أعلنت Google عن توفر مستقبلي لنظام iOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ضغط أفضل للنماذج:&lt;/strong&gt; أحجام أصغر وسرعة أعلى دون التضحية الكبيرة بالجودة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ميزات متعددة الوسائط أغنى:&lt;/strong&gt; دعم أفضل للنصوص والصور والصوت والفيديو.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تدفقات ضبط دقيقة مخصصة:&lt;/strong&gt; لتخصيص النموذج حسب المجال أو حالة الاستخدام.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هذه التحسينات ستجعل بناء تطبيقات AI محلية أكثر عملية، خصوصًا للتطبيقات التي تحتاج خصوصية أو زمن استجابة منخفض.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخلاصة: تشغيل Gemma 3n محليًا على Android
&lt;/h2&gt;

&lt;p&gt;باستخدام AI Edge Gallery، يمكنك تجربة Gemma 3n على Android بسرعة قبل دمجه في تطبيقك. ابدأ بتثبيت APK، نزّل نموذج &lt;code&gt;.task&lt;/code&gt; مناسبًا، اختبر المطالبات والموارد، ثم حسّن الذاكرة وزمن الاستجابة قبل الإنتاج.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fapidog-animate-post.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F06%2Fapidog-animate-post.png" alt="Image" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;إذا كنت تبني API حول النموذج أو تدمجه مع خدمات خلفية، استخدم Apidog لاختبار الطلبات، توثيق العقد، ومحاكاة الحالات قبل إطلاق الميزة للمستخدمين.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>جوجل جمناي 2.5 معاينة 06-05: ترقيات رئيسية للمطورين</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:04:25 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/jwjl-jmny-25-myn-06-05-trqyt-ryysy-llmtwryn-2g0k</link>
      <guid>https://dev.to/yusuf_khalidd/jwjl-jmny-25-myn-06-05-trqyt-ryysy-llmtwryn-2g0k</guid>
      <description>&lt;p&gt;يقدم Gemini 2.5 06-05 Preview تحسينات مهمة للمطورين الذين يبنون ميزات تعتمد على الذكاء الاصطناعي، خصوصًا في الترميز، الاستدلال، وتحليل الوسائط المتعددة. إذا كنت تعمل على واجهات API أو أدوات داخلية أو اختبارات آلية، فالإصدار يركز على رفع جودة توليد الكود، التعامل مع سياقات كبيرة، وتسهيل دمجه داخل سير عمل التطوير والاختبار.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;إذا كنت تريد تجربة واجهات Gemini 2.5 06-05 بسرعة داخل سير عملك، يمكنك استخدام &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; لاختبار نقاط النهاية، حفظ الطلبات، مقارنة الاستجابات، وتشغيل اختبارات الانحدار أثناء تطوير التكامل.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 2.5 06-05: ما الجديد للفرق التقنية؟
&lt;/h2&gt;

&lt;p&gt;تركز معاينة Gemini 2.5 06-05 على ثلاثة محاور مفيدة مباشرة لفرق التطوير:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;الترميز:&lt;/strong&gt; دقة أعلى في توليد الكود وفهم أفضل للسياق.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;الاستدلال:&lt;/strong&gt; أداء أقوى في المهام التي تحتاج منطقًا متعدد الخطوات.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;المخرجات الإبداعية والمنظمة:&lt;/strong&gt; استجابات أكثر قابلية للاستخدام في الوثائق، الواجهات، وأدوات التعلم.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بالنسبة لفرق API والواجهة الخلفية، هذا يعني إمكانية استخدام النموذج في مهام مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;توليد أمثلة SDK أو snippets من مواصفات API.&lt;/li&gt;
&lt;li&gt;مراجعة الكود أو اقتراح refactoring.&lt;/li&gt;
&lt;li&gt;توليد اختبارات API من سيناريوهات مكتوبة.&lt;/li&gt;
&lt;li&gt;تحليل logs أو payloads كبيرة ضمن نافذة سياق واحدة.&lt;/li&gt;
&lt;li&gt;بناء prototypes لواجهات ويب أو أدوات داخلية من وصف مختصر.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  أداء ترميز محسّن
&lt;/h2&gt;

&lt;p&gt;يقدم Gemini 2.5 06-05 قفزة واضحة في مهام الترميز العملية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;82.2% في Aider Polyglot:&lt;/strong&gt; نتيجة قوية في مهام ترميز واقعية متعددة اللغات.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;توليد تطبيقات أكثر تعقيدًا:&lt;/strong&gt; يمكنه إنشاء تطبيقات كاملة من مطالبة واحدة، مثل تطبيق إملاء بواجهة موجية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;أداء قوي في WebDev Arena:&lt;/strong&gt; زيادة 24 نقطة Elo إلى 1470، ما يعكس قدرة أعلى على توليد تطبيقات ويب عملية وجذابة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ميزانيات تفكير قابلة للتكوين:&lt;/strong&gt; مفيدة لضبط التوازن بين التكلفة، زمن الاستجابة، وجودة الإجابة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  مثال عملي: استخدامه لتوليد اختبار API
&lt;/h3&gt;

&lt;p&gt;بدلًا من طلب “اكتب اختبارًا”، اجعل الطلب محددًا بالسياق:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;لدي endpoint التالية:

POST /api/orders
Body:
{
  "userId": "string",
  "items": [
    { "productId": "string", "quantity": "number" }
  ]
}

اكتب حالات اختبار API تشمل:
1. طلب صحيح
2. userId مفقود
3. quantity تساوي 0
4. productId غير موجود
5. استجابة 500 متوقعة من خدمة خارجية

أخرج النتيجة كجدول يحتوي:
- اسم الحالة
- request body
- expected status
- expected assertion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعد ذلك يمكنك نقل الحالات إلى أداة اختبار API مثل Apidog وتشغيلها كاختبارات انحدار.&lt;/p&gt;

&lt;h2&gt;
  
  
  منطق واستدلال أقوى
&lt;/h2&gt;

&lt;p&gt;يتفوق Gemini 2.5 06-05 في المهام التي تحتاج تحليلًا عميقًا أو سياقًا طويلًا:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;نتائج متقدمة في GPQA و Humanity’s Last Exam:&lt;/strong&gt; مفيدة للمهام المعرفية والعلمية المعقدة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مكاسب Elo ملحوظة:&lt;/strong&gt; زيادة 35 نقطة في WebDevArena إلى 1443، وزيادة 24 نقطة في LMArena إلى 1470.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تحليل بيانات أفضل:&lt;/strong&gt; مناسب للتعامل مع مستندات طويلة، مواصفات API، أو سياقات متعددة الملفات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هذا مفيد في سيناريوهات مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تحليل مواصفة OpenAPI كبيرة واستخراج المخاطر.&lt;/li&gt;
&lt;li&gt;مراجعة تغييرات backend قبل الدمج.&lt;/li&gt;
&lt;li&gt;توليد خطة اختبار من user stories.&lt;/li&gt;
&lt;li&gt;مقارنة استجابات API بين بيئتي staging وproduction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnppyopr73gn4mjl7do1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnppyopr73gn4mjl7do1w.png" alt="صورة" width="800" height="1133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  مخرجات إبداعية وهيكلية أفضل
&lt;/h2&gt;

&lt;p&gt;يعالج Gemini 2.5 06-05 بعض نقاط الضعف السابقة في المهام غير البرمجية، خصوصًا تنظيم الإجابة وتنسيقها.&lt;/p&gt;

&lt;p&gt;يمكن استخدامه في:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;كتابة وثائق API أولية.&lt;/li&gt;
&lt;li&gt;تحويل شرح فيديو أو مستند إلى tutorial تفاعلي.&lt;/li&gt;
&lt;li&gt;توليد محتوى onboarding للمطورين.&lt;/li&gt;
&lt;li&gt;إنشاء أمثلة استخدام منظمة حسب اللغة أو السيناريو.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  مثال مطالبة لإنشاء وثائق endpoint
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;حوّل مواصفة endpoint التالية إلى وثائق موجزة للمطورين باللغة العربية.

GET /api/users/{id}

Response 200:
{
  "id": "u_123",
  "name": "Sara",
  "email": "sara@example.com"
}

Response 404:
{
  "error": "User not found"
}

المطلوب:
- وصف endpoint
- Path parameters
- أمثلة request/response
- أخطاء محتملة
- مثال curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  الميزات التقنية الرئيسية في Gemini 2.5 06-05
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ذكاء اصطناعي متعدد الوسائط
&lt;/h3&gt;

&lt;p&gt;يدعم Gemini 2.5 06-05 التعامل مع النصوص، الصوت، الصور، والفيديو ضمن سير عمل واحد.&lt;/p&gt;

&lt;p&gt;أمثلة عملية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تحليل فيديو تعليمي وتحويله إلى خطوات تنفيذية.&lt;/li&gt;
&lt;li&gt;استخراج متطلبات من صورة أو مخطط معماري.&lt;/li&gt;
&lt;li&gt;تحويل تسجيل صوتي لاجتماع تقني إلى قائمة endpoints مطلوبة.&lt;/li&gt;
&lt;li&gt;توليد مواصفات API من وصف منتج متعدد الوسائط.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;كما يحقق &lt;strong&gt;84.8% في معيار VideoMME&lt;/strong&gt;، ما يجعله مناسبًا لفهم الفيديوهات وتحويلها إلى مواصفات أو كود قابل للتنفيذ.&lt;/p&gt;

&lt;h3&gt;
  
  
  نافذة سياق ضخمة
&lt;/h3&gt;

&lt;p&gt;يدعم النموذج نافذة سياق تصل إلى &lt;strong&gt;مليون رمز مميز&lt;/strong&gt;، مع توسع مخطط إلى &lt;strong&gt;2 مليون رمز مميز&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;هذا مهم عند العمل مع:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;monorepo كبير.&lt;/li&gt;
&lt;li&gt;مواصفات API طويلة.&lt;/li&gt;
&lt;li&gt;وثائق داخلية كثيرة.&lt;/li&gt;
&lt;li&gt;ملفات logs كبيرة.&lt;/li&gt;
&lt;li&gt;فيديو يصل إلى ساعة أو صوت يصل إلى 11 ساعة في استدعاء واحد.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  مثال استخدام للسياق الكبير
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;سأزودك بمواصفة OpenAPI طويلة، ثم ملفات service وcontroller.

المطلوب:
1. اكتشف عدم التطابق بين المواصفة والكود.
2. اقترح اختبارات API ناقصة.
3. حدد endpoints التي لا تحتوي على validation كافٍ.
4. أخرج النتائج كقائمة قابلة للتحويل إلى tickets.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  تكامل مطور مبسط
&lt;/h2&gt;

&lt;p&gt;يمكن الوصول إلى Gemini عبر:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google AI Studio&lt;/li&gt;
&lt;li&gt;Vertex AI&lt;/li&gt;
&lt;li&gt;Gemini API&lt;/li&gt;
&lt;li&gt;تطبيق Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ولدمجه داخل سير عمل التطوير، يمكن بناء خطوات مثل:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;إرسال مواصفة API أو prompt إلى Gemini.&lt;/li&gt;
&lt;li&gt;توليد حالات اختبار أو snippets.&lt;/li&gt;
&lt;li&gt;اختبار الطلبات في Apidog.&lt;/li&gt;
&lt;li&gt;حفظ السيناريوهات كاختبارات regression.&lt;/li&gt;
&lt;li&gt;تشغيل الاختبارات عند تحديث endpoint أو تغيير schema.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  مثال سير عمل عملي
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Story
↓
Gemini يولد endpoints وحالات اختبار
↓
Apidog يحفظ requests وassertions
↓
الفريق يراجع النتائج
↓
تشغيل الاختبارات بعد كل تعديل API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  بالأرقام: مقاييس أداء Gemini 2.5 06-05
&lt;/h2&gt;

&lt;p&gt;للفرق التي تقارن نماذج الذكاء الاصطناعي قبل الدمج، هذه أبرز النتائج المذكورة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aider Polyglot:&lt;/strong&gt; معدل نجاح 82.2% في الترميز.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebDev Arena:&lt;/strong&gt; زيادة 35 نقطة Elo إلى 1443.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LMArena:&lt;/strong&gt; زيادة 24 نقطة Elo إلى 1470.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VideoMME:&lt;/strong&gt; نتيجة 84.8% في فهم الفيديو.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPQA و HLE:&lt;/strong&gt; نتائج قوية في الاستدلال والعلوم والرياضيات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;هذه المؤشرات تجعله مناسبًا لتجارب الإنتاج الأولية في:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;توليد الكود.&lt;/li&gt;
&lt;li&gt;أتمتة الاختبار.&lt;/li&gt;
&lt;li&gt;تحليل السياق الطويل.&lt;/li&gt;
&lt;li&gt;دعم أدوات المطورين الداخلية.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  كيفية الوصول إلى Gemini 2.5 06-05
&lt;/h2&gt;

&lt;p&gt;للبدء:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح Google AI Studio أو Vertex AI.&lt;/li&gt;
&lt;li&gt;اختر Gemini 2.5 06-05 Preview عند توفره في بيئتك.&lt;/li&gt;
&lt;li&gt;جرّب prompts صغيرة أولًا لتحديد جودة الإخراج.&lt;/li&gt;
&lt;li&gt;اختبر التكامل عبر Gemini API.&lt;/li&gt;
&lt;li&gt;استخدم أداة مثل Apidog لتجربة request/response وتوثيق السيناريوهات.&lt;/li&gt;
&lt;li&gt;أضف اختبارات regression قبل الاعتماد على التكامل في سير عمل مستقر.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  قائمة تحقق قبل استخدامه في workflow حقيقي
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;هل prompt يحتوي مدخلات واضحة ومخرجات مطلوبة؟&lt;/li&gt;
&lt;li&gt;هل الاستجابة قابلة للتحقق آليًا؟&lt;/li&gt;
&lt;li&gt;هل لديك اختبارات تقارن المخرجات المتوقعة؟&lt;/li&gt;
&lt;li&gt;هل تم ضبط التكلفة والكمون حسب حالة الاستخدام؟&lt;/li&gt;
&lt;li&gt;هل يتم تسجيل الأخطاء والاستجابات غير المتوقعة؟&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;إن فهم قدرات النموذج هو البداية فقط. إذا كنت تريد تشغيل توليد الكود من الطرفية، يمكنك إقران Gemini 2.5 Pro مع &lt;a href="https://apidog.com/ar/blog/google-gemini-open-code-cli/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Open Codex CLI لسير عمل الترميز المدعوم بالذكاء الاصطناعي&lt;/a&gt; وتشغيل توليد كود واعٍ بالسياق مباشرة من shell.&lt;/p&gt;

&lt;p&gt;ولفهم موقع هذا التحديث داخل عائلة النماذج الأوسع، يمكنك مراجعة &lt;a href="https://apidog.com/ar/blog/gemini-2-5-family/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;عائلة نموذج Gemini 2.5 الكاملة—Pro و Flash و Flash-Lite&lt;/a&gt;، مع مقارنات للقدرات والتسعير لكل مستوى.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا يهم Gemini 2.5 06-05 فرق API والواجهة الخلفية؟
&lt;/h2&gt;

&lt;p&gt;Gemini 2.5 06-05 مفيد عندما تحتاج إلى دمج الذكاء الاصطناعي داخل دورة تطوير عملية، وليس فقط تجربة محادثة. قوته في الترميز، الاستدلال، السياق الطويل، والوسائط المتعددة تجعله مناسبًا لمهام مثل توليد الاختبارات، مراجعة الكود، تحليل الوثائق، وبناء prototypes.&lt;/p&gt;

&lt;p&gt;لأفضل نتيجة، استخدمه كجزء من pipeline واضح:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt واضح
→ مخرجات منظمة
→ تحقق واختبار API
→ مراجعة بشرية
→ أتمتة تدريجية
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يمكنك استخدام Apidog مع Gemini لتسريع النماذج الأولية، اختبار نقاط النهاية، وتوثيق سيناريوهات API المدعومة بالذكاء الاصطناعي بثقة أكبر.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkc39hy7noucjlokcu2ou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkc39hy7noucjlokcu2ou.png" alt="صورة" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>٧ طرق مجربة للحصول على Perplexity Pro مجاناً (بالإضافة إلى: تسريع تدفقات عمل API)</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:03:25 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/7-trq-mjrb-llhswl-l-perplexity-pro-mjnan-bldf-l-tsry-tdfqt-ml-api-2959</link>
      <guid>https://dev.to/yusuf_khalidd/7-trq-mjrb-llhswl-l-perplexity-pro-mjnan-bldf-l-tsry-tdfqt-ml-api-2959</guid>
      <description>&lt;p&gt;يمكن أن يؤدي الوصول إلى أدوات ذكاء اصطناعي متقدمة مثل Perplexity Pro إلى تحسين سير عملك كمطور أو قائد تقني، لكن الاشتراك الشهري قد يصبح مكلفًا. في هذا الدليل ستجد 7 طرق عملية ومشروعة للحصول على Perplexity Pro مجانًا أو بتكلفة أقل، مع خطوات تنفيذ واضحة. وفي النهاية، سنعرض طريقة عملية لاستخدام Apidog MCP Server لربط مواصفات OpenAPI ببيئة التطوير المدعومة بالذكاء الاصطناعي.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  1. عرض Samsung Galaxy: سنة مجانية من Perplexity Pro
&lt;/h2&gt;

&lt;p&gt;إذا كنت تملك جهاز Samsung Galaxy داخل الولايات المتحدة، فقد تكون مؤهلًا للحصول على اشتراك مجاني لمدة عام في Perplexity Pro عبر Galaxy Store.&lt;/p&gt;

&lt;h3&gt;
  
  
  خطوات الاسترداد
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;احذف أي نسخة مثبتة مسبقًا من تطبيق Perplexity.&lt;/li&gt;
&lt;li&gt;افتح Galaxy Store.&lt;/li&gt;
&lt;li&gt;حمّل أحدث إصدار من تطبيق Perplexity.&lt;/li&gt;
&lt;li&gt;افتح التطبيق وسجّل الدخول أو أنشئ حسابًا جديدًا.&lt;/li&gt;
&lt;li&gt;تحقق من ترقية الحساب تلقائيًا إلى Perplexity Pro لمدة 12 شهرًا.&lt;/li&gt;
&lt;li&gt;راقب بريدك الإلكتروني بحثًا عن رسالة تأكيد مثل:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;"لقد تمت ترقيتك إلى Perplexity Pro عبر Samsung Galaxy."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ملاحظة:&lt;/strong&gt; العرض مخصص لمستخدمي Galaxy في الولايات المتحدة وقد يكون محدودًا بوقت.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. مكافآت Xfinity: سنة مجانية لأعضاء Xfinity Rewards
&lt;/h2&gt;

&lt;p&gt;إذا كنت عميلًا لدى Xfinity، فقد تتمكن من الحصول على سنة كاملة من Perplexity Pro عبر برنامج المكافآت. يتيح لك ذلك الوصول إلى مزايا مثل النماذج المتقدمة، تحليل الملفات، الإمكانيات متعددة الأنماط، وتوليد الصور.&lt;/p&gt;

&lt;h3&gt;
  
  
  خطوات المطالبة
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;سجّل الدخول إلى حسابك في &lt;a href="https://www.xfinity.com/rewards" rel="noopener noreferrer"&gt;Xfinity Rewards&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;ابحث عن عرض Perplexity Pro داخل صفحة المكافآت.&lt;/li&gt;
&lt;li&gt;انسخ الرمز الترويجي الخاص بك.&lt;/li&gt;
&lt;li&gt;انتقل إلى موقع Perplexity وسجّل قبل 29 أغسطس 2025.&lt;/li&gt;
&lt;li&gt;أدخل الرمز لتفعيل الاشتراك المجاني لمدة عام.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  الأهلية
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;يجب أن تكون عضوًا نشطًا في Xfinity Rewards.&lt;/li&gt;
&lt;li&gt;مستخدمو Perplexity Pro الحاليون غير مؤهلين لهذا العرض.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. برنامج إحالة الطلاب: حتى 24 شهرًا مجانًا
&lt;/h2&gt;

&lt;p&gt;يمكن للطلاب استخدام برنامج إحالة Perplexity للحصول على أشهر مجانية من Pro. كل إحالة ناجحة تمنحك شهرًا مجانيًا، بحد أقصى 24 شهرًا.&lt;/p&gt;

&lt;h3&gt;
  
  
  خطوات التنفيذ
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;سجّل باستخدام بريدك الإلكتروني الجامعي الرسمي.&lt;/li&gt;
&lt;li&gt;افتح صفحة الإحالات: &lt;a href="https://www.perplexity.ai/referrals" rel="noopener noreferrer"&gt;perplexity.ai/referrals&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;انسخ رابط الإحالة الخاص بك.&lt;/li&gt;
&lt;li&gt;شاركه مع زملائك الذين يملكون بريدًا جامعيًا صالحًا.&lt;/li&gt;
&lt;li&gt;عند تسجيل كل طالب مؤهل عبر رابطك، يحصل كل منكما على شهر مجاني.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  الأهلية
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;مطلوب بريد طلابي صالح مثل &lt;code&gt;.edu&lt;/code&gt; أو ما يعادله.&lt;/li&gt;
&lt;li&gt;البرنامج متاح لجامعات مختارة حول العالم.&lt;/li&gt;
&lt;li&gt;رصيد الإحالة غير قابل للتحويل ومرتبط بحالة الطالب الحالية.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. برنامج الإحالة للمشتركين الحاليين في Pro
&lt;/h2&gt;

&lt;p&gt;إذا كنت مشتركًا بالفعل في Perplexity Pro، يمكنك تقليل تكلفة الاشتراك عبر الإحالات.&lt;/p&gt;

&lt;h3&gt;
  
  
  كيف يعمل؟
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;افتح صفحة الإحالات: &lt;a href="https://www.perplexity.ai/referrals" rel="noopener noreferrer"&gt;perplexity.ai/referrals&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;انسخ رابط الإحالة.&lt;/li&gt;
&lt;li&gt;شاركه مع زملائك أو أصدقائك.&lt;/li&gt;
&lt;li&gt;عندما يشترك مستخدم جديد عبر رابطك:

&lt;ul&gt;
&lt;li&gt;يحصل هو على خصم 10 دولارات.&lt;/li&gt;
&lt;li&gt;تحصل أنت على خصم 10 دولارات على فاتورتك التالية.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  نقاط يجب الانتباه لها
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;يجب أن تكون مشتركًا نشطًا في Pro.&lt;/li&gt;
&lt;li&gt;يتم تطبيق خصم واحد فقط في كل دورة فوترة.&lt;/li&gt;
&lt;li&gt;إذا ألغيت الاشتراك، قد تفقد الخصومات غير المستخدمة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Enterprise Pro: تجربة مجانية لمدة 30 يومًا للفرق
&lt;/h2&gt;

&lt;p&gt;إذا كنت تعمل ضمن فريق تقني أو مؤسسة، يمكن تجربة Perplexity Enterprise Pro لمدة 30 يومًا. هذا الخيار مناسب للفرق التي تحتاج إلى استخدام الذكاء الاصطناعي في البحث، التوثيق، تحليل الملفات، أو دعم سير عمل API.&lt;/p&gt;

&lt;h3&gt;
  
  
  خطوات البدء
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;سجّل فريقك في خطة Enterprise Pro.&lt;/li&gt;
&lt;li&gt;أضف أعضاء الفريق، حتى 250 عضوًا.&lt;/li&gt;
&lt;li&gt;يحصل كل مقعد جديد على تجربة مجانية لمدة 30 يومًا.&lt;/li&gt;
&lt;li&gt;بعد انتهاء التجربة، تكون الأسعار:

&lt;ul&gt;
&lt;li&gt;40 دولارًا شهريًا لكل مقعد.&lt;/li&gt;
&lt;li&gt;أو 400 دولار سنويًا لكل مقعد.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;للمؤسسات الكبيرة، يمكن طلب تسعير مخصص.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  سياسة الاسترداد
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;الاتحاد الأوروبي، المملكة المتحدة، تركيا: فترة استرداد 14 يومًا.&lt;/li&gt;
&lt;li&gt;المناطق الأخرى:

&lt;ul&gt;
&lt;li&gt;24 ساعة للخطط الشهرية.&lt;/li&gt;
&lt;li&gt;72 ساعة للخطط السنوية.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. عروض الطلاب الجامعيين المؤهلين
&lt;/h2&gt;

&lt;p&gt;تطلق Perplexity أحيانًا حملات موجهة للطلاب والجامعات. في بعض الحملات السابقة، كانت الجامعات التي تحقق 500 تسجيل طلابي أو أكثر تحصل على Pro مجانًا للجامعة بالكامل.&lt;/p&gt;

&lt;h3&gt;
  
  
  كيف تتحقق من الأهلية؟
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;سجّل باستخدام بريدك الإلكتروني الجامعي.&lt;/li&gt;
&lt;li&gt;تحقق مما إذا كانت جامعتك ضمن الحملة الحالية.&lt;/li&gt;
&lt;li&gt;إذا كنت طالبًا جديدًا، تحقق من إمكانية الحصول على شهر مجاني أو خطة مخفضة.&lt;/li&gt;
&lt;li&gt;تابع حملات Perplexity الجامعية، لأن العروض قد تكون محدودة زمنيًا.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;نصيحة:&lt;/strong&gt; إذا أُطلقت حملة لجامعتك، شارك الرابط بسرعة مع زملائك لزيادة فرصة فتح العرض على مستوى الحرم الجامعي.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  7. الرموز الترويجية والعروض الخاصة
&lt;/h2&gt;

&lt;p&gt;تتعاون Perplexity أحيانًا مع شركات أو شركاء لتوفير رموز ترويجية مجانية أو مخفضة.&lt;/p&gt;

&lt;h3&gt;
  
  
  خطوات الاسترداد
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;سجّل الدخول إلى &lt;a href="https://www.perplexity.ai" rel="noopener noreferrer"&gt;perplexity.ai&lt;/a&gt; أو أنشئ حسابًا جديدًا.&lt;/li&gt;
&lt;li&gt;افتح رابط العرض الترويجي من البريد الإلكتروني أو صفحة الشريك.&lt;/li&gt;
&lt;li&gt;أدخل الرمز عند الدفع إذا طُلب منك ذلك.&lt;/li&gt;
&lt;li&gt;استخدم الويب للاسترداد، لأن بعض الرموز لا تعمل داخل تطبيقات الجوال.&lt;/li&gt;
&lt;li&gt;إذا كنت مشتركًا عبر Apple أو Google، انتظر انتهاء الاشتراك الحالي أولًا قبل استخدام الرمز.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;تحقق دائمًا من العروض عبر قنوات Perplexity الرسمية أو الشركاء الموثوقين لتجنب الروابط غير الموثوقة.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  مكافأة للمطورين: ربط OpenAPI ببيئة التطوير باستخدام Apidog MCP Server
&lt;/h2&gt;

&lt;p&gt;إذا كنت تعمل على واجهات برمجة التطبيقات، فالمشكلة ليست فقط في الوصول إلى نموذج ذكاء اصطناعي قوي، بل في جعل النموذج يفهم مواصفات API الخاصة بمشروعك. هنا يفيد Apidog MCP Server لأنه يسمح بربط مواصفات OpenAPI مع بيئات تطوير تدعم MCP مثل Cursor أو VS Code.&lt;/p&gt;

&lt;p&gt;بدل نسخ الوثائق يدويًا إلى المحادثة، يمكنك جعل الـ IDE يقرأ مواصفات API مباشرة ويستخدمها في توليد الأكواد أو فهم نقاط النهاية.&lt;/p&gt;

&lt;h3&gt;
  
  
  ما الذي يقدمه Apidog MCP Server؟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;استخدام مواصفات API كمصدر سياق لمساعدات الذكاء الاصطناعي.&lt;/li&gt;
&lt;li&gt;ربط ملفات Swagger/OpenAPI أو وثائق عامة أو مشاريع Apidog.&lt;/li&gt;
&lt;li&gt;تحسين توليد الأكواد بناءً على تعريفات endpoints والـ schemas.&lt;/li&gt;
&lt;li&gt;تقليل الحاجة إلى نسخ ولصق وثائق API داخل المحادثات.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  إعداد Apidog MCP Server مع Cursor
&lt;/h2&gt;

&lt;p&gt;قبل البدء، تأكد من توفر التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js مثبت على جهازك، ويفضل الإصدار v18 أو أحدث.&lt;/li&gt;
&lt;li&gt;Cursor أو أي IDE يدعم MCP.&lt;/li&gt;
&lt;li&gt;ملف OpenAPI بصيغة JSON أو YAML.&lt;/li&gt;
&lt;li&gt;رابط عام أو مسار محلي لملف المواصفات.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  الخطوة 1: جهّز مصدر OpenAPI
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام رابط مباشر مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://petstore.swagger.io/v2/swagger.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو ملف محلي مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/projects/api-docs/openapi.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;الصيغ المدعومة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.json
.yaml
.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يفضل استخدام OpenAPI 3.x عند الإمكان.&lt;/p&gt;

&lt;h3&gt;
  
  
  الخطوة 2: أضف إعدادات MCP إلى Cursor
&lt;/h3&gt;

&lt;p&gt;افتح ملف إعدادات MCP في Cursor، ثم أضف الإعداد المناسب لنظام التشغيل لديك.&lt;/p&gt;

&lt;h4&gt;
  
  
  macOS / Linux
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"مواصفات API"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"apidog-mcp-server@latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--oas=https://petstore.swagger.io/v2/swagger.json"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Windows
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"مواصفات API"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"apidog-mcp-server@latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--oas=https://petstore.swagger.io/v2/swagger.json"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استبدل الرابط التالي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://petstore.swagger.io/v2/swagger.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;برابط أو مسار ملف OpenAPI الخاص بمشروعك.&lt;/p&gt;

&lt;h3&gt;
  
  
  الخطوة 3: اختبر الاتصال داخل Cursor
&lt;/h3&gt;

&lt;p&gt;بعد حفظ الإعدادات، افتح وضع الوكيل في الـ IDE واكتب طلبًا مثل:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;الرجاء جلب وثائق API عبر MCP وإخباري بعدد نقاط النهاية الموجودة في المشروع.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;إذا كان الإعداد صحيحًا، ستحصل على رد منظم يحتوي على معلومات عن endpoints الموجودة في ملف OpenAPI.&lt;/p&gt;

&lt;p&gt;إذا لم يعمل الاتصال، تحقق من التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل Node.js مثبت ويعمل؟&lt;/li&gt;
&lt;li&gt;هل الأمر &lt;code&gt;npx&lt;/code&gt; متاح في الطرفية؟&lt;/li&gt;
&lt;li&gt;هل رابط OpenAPI يمكن الوصول إليه؟&lt;/li&gt;
&lt;li&gt;هل مسار الملف المحلي صحيح؟&lt;/li&gt;
&lt;li&gt;هل صيغة JSON أو YAML صالحة؟&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  مثال استخدام عملي داخل الـ IDE
&lt;/h3&gt;

&lt;p&gt;بعد ربط المواصفات، يمكنك طلب مهام مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;أنشئ دالة TypeScript لاستدعاء endpoint تسجيل الدخول بناءً على مواصفات API.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;استخرج جميع endpoints التي تستخدم method POST، ثم اقترح اختبارات لها.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;أنشئ mock response للـ endpoint المسؤول عن إنشاء مستخدم جديد.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بهذه الطريقة يصبح ملف OpenAPI جزءًا مباشرًا من سياق التطوير، بدل الاعتماد على وصف يدوي قد يكون ناقصًا.&lt;/p&gt;

&lt;h2&gt;
  
  
  مسار إضافي: عرض PayPal
&lt;/h2&gt;

&lt;p&gt;أحد العروض التي تستحق المتابعة هو عرض PayPal الترويجي. يمكنك قراءة شرح مستقل حول &lt;a href="https://apidog.com/ar/blog/paypal-free-perplexity-pro-comet/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;المطالبة بـ Perplexity Pro مجانًا عبر PayPal&lt;/a&gt;، بما في ذلك زاوية متصفح Comet.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخلاصة
&lt;/h2&gt;

&lt;p&gt;يمكن الحصول على Perplexity Pro مجانًا أو بتكلفة أقل عبر عدة مسارات: عروض الأجهزة، برامج المكافآت، إحالات الطلاب، إحالات المشتركين، التجارب المؤسسية، العروض الجامعية، والرموز الترويجية.&lt;/p&gt;

&lt;p&gt;إذا كنت مطورًا، لا تتوقف عند الوصول إلى أداة الذكاء الاصطناعي فقط. اربطها بسير عملك الفعلي عبر مواصفات API. باستخدام Apidog MCP Server، يمكنك جعل بيئة التطوير تفهم OpenAPI وتساعدك في كتابة الأكواد، إنشاء الاختبارات، أو مراجعة endpoints بشكل أسرع.&lt;/p&gt;

&lt;p&gt;ابدأ بالخطوات المناسبة لك:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تحقق من أهليتك لعروض Perplexity Pro المجانية.&lt;/li&gt;
&lt;li&gt;جهّز ملف OpenAPI الخاص بمشروعك.&lt;/li&gt;
&lt;li&gt;اربطه مع Cursor عبر Apidog MCP Server.&lt;/li&gt;
&lt;li&gt;استخدم الذكاء الاصطناعي داخل الـ IDE بسياق API حقيقي.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>تصحيح الأخطاء بالذكاء الاصطناعي باستخدام Cursor Bugbot: تبسيط مراجعات الكود وتعزيز جودة الـ API</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:03:09 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/tshyh-lkht-bldhk-lstny-bstkhdm-cursor-bugbot-tbsyt-mrjt-lkwd-wtzyz-jwd-l-api-3imn</link>
      <guid>https://dev.to/yusuf_khalidd/tshyh-lkht-bldhk-lstny-bstkhdm-cursor-bugbot-tbsyt-mrjt-lkwd-wtzyz-jwd-l-api-3imn</guid>
      <description>&lt;p&gt;يُعد تصحيح الأخطاء جزءًا أساسيًا من أي مشروع برمجي. الأخطاء غير المعالجة قد تؤدي إلى تعطل الأنظمة، ثغرات أمنية، وواجهات برمجة تطبيقات غير موثوقة. ومع قواعد الأكواد الكبيرة وسرعة فرق التطوير، لم يعد الاعتماد على التصحيح اليدوي وحده كافيًا.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;تساعد أدوات تصحيح الأخطاء المدعومة بالذكاء الاصطناعي، مثل Cursor Bugbot، على اكتشاف المشكلات مبكرًا داخل طلبات السحب. وعند استخدامها مع منصة متخصصة في واجهات برمجة التطبيقات مثل &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;، يمكنك تحسين جودة الكود واختبار الـ APIs قبل وصولها إلى الإنتاج.&lt;/p&gt;




&lt;h2&gt;
  
  
  ما هو Cursor Bugbot؟ شرح مراجعة الأكواد المدعومة بالذكاء الاصطناعي
&lt;/h2&gt;

&lt;p&gt;Cursor Bugbot هو مساعد آلي لمراجعة الأكواد من Cursor. يقوم بتحليل طلبات السحب Pull Requests لاكتشاف الأخطاء، الثغرات الأمنية، ومشكلات جودة الكود قبل الدمج أو النشر.&lt;/p&gt;

&lt;p&gt;بدلًا من الاكتفاء بفحص ثابت بسيط، يحاول Bugbot فهم سياق التغيير داخل قاعدة الكود، ثم يضيف ملاحظات قابلة للتنفيذ مباشرة داخل الـ PR.&lt;/p&gt;

&lt;h3&gt;
  
  
  كيف يعمل Cursor Bugbot
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;تحليل الفروقات Diff Analysis&lt;/strong&gt;: يفحص التغييرات بين الفرع الحالي والفرع الهدف، ويبحث عن أخطاء منطقية أو أنماط قد تسبب مشاكل.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تعليقات سياقية Contextual Comments&lt;/strong&gt;: يضيف تعليقات داخل طلب السحب مع شرح المشكلة واقتراحات للإصلاح.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مراقبة مستمرة Continuous Monitoring&lt;/strong&gt;: عند دفع commits جديدة، يعيد Bugbot تحليل التغييرات للتأكد من أن المشكلات عولجت أو لا تزال قائمة.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  البدء مع Cursor Bugbot: إعداد خطوة بخطوة
&lt;/h2&gt;

&lt;p&gt;لإدخال Cursor Bugbot في سير العمل اليومي، ابدأ بإعداده على المستودعات التي تستقبل Pull Requests بشكل مستمر.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. تثبيت وتكوين Cursor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1myldg95qnxkhe18ce7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1myldg95qnxkhe18ce7f.png" alt="صورة" width="799" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;اتبع الخطوات التالية:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;أنشئ حسابًا في Cursor.&lt;/li&gt;
&lt;li&gt;ثبّت تطبيق سطح المكتب Cursor.&lt;/li&gt;
&lt;li&gt;اربط مستودع GitHub أو GitLab الخاص بك.&lt;/li&gt;
&lt;li&gt;امنح Cursor الصلاحيات المطلوبة لتحليل طلبات السحب.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;نصيحة عملية: ابدأ بمستودع واحد متوسط الحجم بدلًا من تفعيل الأداة على كل المستودعات مرة واحدة. هذا يسهل تقييم جودة التعليقات وتقليل الضوضاء في البداية.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. تفعيل Bugbot على مستودعاتك
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdg9wb3aa0tri1nu4dh23.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdg9wb3aa0tri1nu4dh23.gif" alt="صورة" width="720" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;لتفعيل Bugbot:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح لوحة تحكم Cursor.&lt;/li&gt;
&lt;li&gt;اختر المستودع المطلوب.&lt;/li&gt;
&lt;li&gt;فعّل خيار Bugbot لهذا المستودع.&lt;/li&gt;
&lt;li&gt;افتح Pull Request تجريبيًا يحتوي على تغيير محدود.&lt;/li&gt;
&lt;li&gt;راقب التعليقات التي يضيفها Bugbot وتحقق من دقتها.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;يبدأ المستخدمون الجدد بتجربة مجانية لمدة 14 يومًا، ما يسمح بتقييم الأداة داخل سير العمل الحقيقي للفريق.&lt;/p&gt;




&lt;h2&gt;
  
  
  تصحيح الأخطاء قيد التنفيذ: استخدام Cursor Bugbot للمراجعات الفعالة
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qso350fz53xdhtdt69w.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qso350fz53xdhtdt69w.gif" alt="صورة" width="599" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;بعد تفعيل Bugbot، اجعله جزءًا من دورة مراجعة الكود بدلًا من استخدامه كفحص منفصل.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. افتح طلب سحب Pull Request
&lt;/h3&gt;

&lt;p&gt;ادفع تغييراتك وافتح PR كالمعتاد:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; fix/user-validation
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Fix user validation flow"&lt;/span&gt;
git push origin fix/user-validation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعد فتح الـ PR، يبدأ Bugbot بتحليل الفروقات وإضافة التعليقات عند اكتشاف مشكلات محتملة.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. راجع تعليقات Bugbot
&lt;/h3&gt;

&lt;p&gt;تعامل مع كل تعليق كإشارة تحتاج إلى تحقق، وليس كحكم نهائي. اسأل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل المشكلة قابلة للتكرار؟&lt;/li&gt;
&lt;li&gt;هل تؤثر على الإنتاج؟&lt;/li&gt;
&lt;li&gt;هل هناك اختبار يغطي هذا السلوك؟&lt;/li&gt;
&lt;li&gt;هل الإصلاح المقترح آمن أم يحتاج تعديلًا؟&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال على تعليق قد يظهر في PR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Potential null reference when user.profile is undefined.
Consider checking user.profile before accessing user.profile.email.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إصلاح محتمل في JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User profile is required&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو باستخدام optional chaining عندما يكون السلوك مناسبًا:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. تطبيق الإصلاحات المقترحة في Cursor
&lt;/h3&gt;

&lt;p&gt;إذا كان التعليق يحتوي على رابط &lt;strong&gt;Fix in Cursor&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح الرابط من تعليق Bugbot.&lt;/li&gt;
&lt;li&gt;راجع الملف والسطر المقترح.&lt;/li&gt;
&lt;li&gt;اقرأ التغيير المقترح قبل تطبيقه.&lt;/li&gt;
&lt;li&gt;أضف اختبارًا إن كانت المشكلة مرتبطة بسلوك قابل للكسر.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;مثال لاختبار بسيط باستخدام Jest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;returns null when user profile email is missing&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getUserEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBeNull&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. التكرار والتحقق
&lt;/h3&gt;

&lt;p&gt;بعد تنفيذ الإصلاح:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Handle missing user profile safely"&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;سيعيد Bugbot فحص الـ PR. لا تعتمد فقط على اختفاء التعليق؛ شغّل اختباراتك المحلية أو CI أيضًا.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test
&lt;/span&gt;npm run lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  الميزات المتقدمة: ما يميز Cursor Bugbot
&lt;/h2&gt;

&lt;p&gt;Cursor Bugbot ليس مجرد أداة تنبيه عامة. قيمته تظهر عندما يتم دمجه مع عملية مراجعة كود واضحة.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. تقليل الإيجابيات الكاذبة
&lt;/h3&gt;

&lt;p&gt;تم تحسين Bugbot لاكتشاف الأخطاء المنطقية الدقيقة مع تقليل التنبيهات غير المفيدة. عمليًا، هذا يعني أن الفريق يمكنه التركيز على المشكلات التي تستحق المراجعة بدلًا من تجاهل قائمة طويلة من التحذيرات.&lt;/p&gt;

&lt;p&gt;للاستفادة من ذلك:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;لا تقبل كل تعليق تلقائيًا.&lt;/li&gt;
&lt;li&gt;صنّف التعليقات إلى: خطأ حقيقي، تحسين اختياري، أو إنذار غير دقيق.&lt;/li&gt;
&lt;li&gt;شارك أمثلة التعليقات المفيدة مع الفريق لتوحيد طريقة التعامل معها.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. تكامل وثيق مع Cursor
&lt;/h3&gt;

&lt;p&gt;عندما يكتشف Bugbot مشكلة، يمكنك الانتقال مباشرة إلى Cursor لتعديل الكود. هذا يقلل التبديل بين أدوات متعددة أثناء المراجعة.&lt;/p&gt;

&lt;p&gt;سير عمل عملي:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح تعليق Bugbot داخل GitHub أو GitLab.&lt;/li&gt;
&lt;li&gt;اضغط &lt;strong&gt;Fix in Cursor&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;راجع السياق المحيط بالكود.&lt;/li&gt;
&lt;li&gt;طبّق الإصلاح.&lt;/li&gt;
&lt;li&gt;أضف اختبارًا إن كان مناسبًا.&lt;/li&gt;
&lt;li&gt;ادفع التغييرات وانتظر إعادة الفحص.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3. قابلية التوسع للفرق الكبيرة
&lt;/h3&gt;

&lt;p&gt;بعد مراجعة أكثر من مليون طلب سحب، ثبت أن Bugbot قادر على التعامل مع قواعد أكواد كبيرة ومعقدة. هذا يجعله مناسبًا للفرق التي تملك عددًا كبيرًا من المستودعات أو Pull Requests يومية.&lt;/p&gt;

&lt;p&gt;لكن للحصول على أفضل نتيجة في الفرق الكبيرة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;فعّل Bugbot تدريجيًا.&lt;/li&gt;
&lt;li&gt;ابدأ بالمستودعات الأكثر نشاطًا.&lt;/li&gt;
&lt;li&gt;حدد سياسة واضحة: ما التعليقات التي تمنع الدمج؟ وما التعليقات التي تُعد تحسينات اختيارية؟&lt;/li&gt;
&lt;li&gt;لا تستبدل مراجعة المطورين بالكامل؛ استخدم Bugbot كطبقة فحص إضافية.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Cursor Bugbot مقابل أدوات تصحيح الأخطاء وواجهات برمجة التطبيقات الأخرى
&lt;/h2&gt;

&lt;p&gt;يتفوق Cursor Bugbot في مراجعة الكود العام، لكن فرق الـ API تحتاج غالبًا إلى أدوات متخصصة لتصميم الواجهات، تشغيل الطلبات، اختبار الاستجابات، وتوثيق الخدمات. هنا تظهر فائدة منصات مثل &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  مقارنة Cursor Bugbot و Apidog
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cursor Bugbot&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;يحلل قواعد أكواد مختلفة: Backend، Frontend، Scripts، وغيرها.&lt;/li&gt;
&lt;li&gt;يراجع Pull Requests باستخدام الذكاء الاصطناعي.&lt;/li&gt;
&lt;li&gt;يكتشف مشكلات منطقية أو أمنية محتملة داخل الكود.&lt;/li&gt;
&lt;li&gt;يعمل ضمن سير مراجعة الكود العام.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Apidog&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;مخصص لتطوير واجهات برمجة التطبيقات واختبارها وتوثيقها.&lt;/li&gt;
&lt;li&gt;يساعد في تصحيح أخطاء طلبات API والاستجابات.&lt;/li&gt;
&lt;li&gt;يدعم المحاكاة Mocking وأتمتة اختبارات API.&lt;/li&gt;
&lt;li&gt;مناسب للتعاون بين فرق Backend وFrontend وQA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzlxmj8volxgm17bq10yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzlxmj8volxgm17bq10yr.png" alt="صورة" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  متى تستخدم كل أداة؟
&lt;/h3&gt;

&lt;p&gt;استخدم &lt;strong&gt;Cursor Bugbot&lt;/strong&gt; عندما تريد:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;مراجعة Pull Requests تلقائيًا.&lt;/li&gt;
&lt;li&gt;اكتشاف أخطاء منطقية قبل الدمج.&lt;/li&gt;
&lt;li&gt;إضافة طبقة فحص إضافية بجانب Code Review اليدوي.&lt;/li&gt;
&lt;li&gt;تحسين جودة الكود عبر المستودعات.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;استخدم &lt;strong&gt;Apidog&lt;/strong&gt; عندما تريد:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تصميم RESTful APIs أو GraphQL APIs.&lt;/li&gt;
&lt;li&gt;اختبار Endpoints يدويًا أو تلقائيًا.&lt;/li&gt;
&lt;li&gt;توثيق الواجهات للفريق.&lt;/li&gt;
&lt;li&gt;محاكاة API قبل اكتمال تنفيذ Backend.&lt;/li&gt;
&lt;li&gt;التحقق من الاستجابات، الـ headers، والـ payloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  مثال عملي: استخدام الأداتين معًا
&lt;/h3&gt;

&lt;p&gt;لنفترض أنك عدّلت endpoint لتحديث بيانات المستخدم:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;PATCH /api/users/:id
Content-Type: application/json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ali"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ali@example.com"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يمكن أن يعمل سير العمل كالتالي:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;تكتب التغيير في الكود.&lt;/li&gt;
&lt;li&gt;تفتح Pull Request.&lt;/li&gt;
&lt;li&gt;يراجع Cursor Bugbot المنطق، التحقق من القيم، ومعالجة الأخطاء.&lt;/li&gt;
&lt;li&gt;تستخدم Apidog لإرسال طلبات فعلية إلى endpoint.&lt;/li&gt;
&lt;li&gt;تتحقق من حالات مثل:

&lt;ul&gt;
&lt;li&gt;مستخدم موجود.&lt;/li&gt;
&lt;li&gt;مستخدم غير موجود.&lt;/li&gt;
&lt;li&gt;بريد إلكتروني غير صالح.&lt;/li&gt;
&lt;li&gt;جسم طلب ناقص.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;تضيف اختبارات API تلقائية عند الحاجة.&lt;/li&gt;
&lt;li&gt;تدمج الكود بعد نجاح المراجعة والاختبارات.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  أفضل الممارسات لتصحيح الأخطاء الفعال باستخدام الذكاء الاصطناعي
&lt;/h2&gt;

&lt;p&gt;للحصول على نتائج أفضل من أدوات مثل Cursor Bugbot، اتبع هذه الممارسات:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;راجع ملاحظات Bugbot دائمًا&lt;/strong&gt;: حتى التعليقات الصغيرة قد تكشف مشكلة أمنية أو خطأ في حالة طرفية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;لا تطبق الإصلاحات دون فهمها&lt;/strong&gt;: اقرأ الكود والسياق قبل قبول أي اقتراح.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استخدم Fix in Cursor لتسريع التعديل&lt;/strong&gt;: لكن اجعل الاختبارات هي معيار التأكد.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;اجمع بين الذكاء الاصطناعي والمراجعة اليدوية&lt;/strong&gt;: الذكاء الاصطناعي يساعد في الاكتشاف، والمطورون يملكون فهم المنتج والسياق.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;أضف اختبارات عند إصلاح الأخطاء&lt;/strong&gt;: إصلاح بدون اختبار قد يعود للكسر لاحقًا.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;راقب التعليقات المتكررة&lt;/strong&gt;: إذا ظهر نفس النوع من الأخطاء كثيرًا، أضف قاعدة lint أو اختبارًا أو نمطًا موحدًا في الفريق.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استخدم Apidog لاختبار سلوك الـ API فعليًا&lt;/strong&gt;: مراجعة الكود وحدها لا تكفي للتحقق من العقود بين الخدمات والعملاء.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال على قائمة تحقق قبل دمج PR يحتوي على API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; [ ] تمت مراجعة تعليقات Bugbot
&lt;span class="p"&gt;-&lt;/span&gt; [ ] تم تشغيل الاختبارات المحلية
&lt;span class="p"&gt;-&lt;/span&gt; [ ] تم اختبار endpoint في Apidog
&lt;span class="p"&gt;-&lt;/span&gt; [ ] تم التحقق من حالات الخطأ
&lt;span class="p"&gt;-&lt;/span&gt; [ ] تم تحديث التوثيق إذا تغير العقد
&lt;span class="p"&gt;-&lt;/span&gt; [ ] لا توجد أسرار أو مفاتيح API داخل الكود
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  مستقبل الذكاء الاصطناعي في تصحيح الأخطاء
&lt;/h2&gt;

&lt;p&gt;يتطور استخدام الذكاء الاصطناعي في تصحيح الأخطاء بسرعة. من الاتجاهات المتوقعة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;تصحيح تنبؤي للأخطاء&lt;/strong&gt;: اكتشاف الأنماط التي قد تسبب أخطاء قبل الدمج بناءً على تاريخ المستودع.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استعلامات باللغة الطبيعية&lt;/strong&gt;: مثل طلب: "اعرض المخاطر الأمنية المحتملة في هذا الـ PR".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تكامل أعمق بين الأدوات&lt;/strong&gt;: قد تصبح أدوات مثل Cursor Bugbot و Apidog أكثر ترابطًا لتوفير سير عمل موحد من كتابة الكود إلى اختبار الـ API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بالنسبة للمطورين، الأهم ليس استبدال الخبرة البشرية، بل تقليل الوقت الضائع في اكتشاف الأخطاء المتكررة والتركيز على التصميم، الأداء، والأمان.&lt;/p&gt;




&lt;h2&gt;
  
  
  الخاتمة: بناء واجهات برمجة تطبيقات وأكواد أفضل باستخدام تصحيح الأخطاء بالذكاء الاصطناعي
&lt;/h2&gt;

&lt;p&gt;تساعد أدوات مثل Cursor Bugbot على اكتشاف الأخطاء مبكرًا داخل Pull Requests، وتحسين جودة الكود، وتسريع مراجعات الفريق. وبالنسبة للفرق التي تبني APIs، فإن الجمع بين مراجعة الكود بالذكاء الاصطناعي واستخدام منصة مثل &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; يضيف طبقة عملية لاختبار الواجهات وتصحيحها وتوثيقها.&lt;/p&gt;

&lt;p&gt;ابدأ بسير عمل بسيط: فعّل Bugbot على مستودع واحد، راجع جودة التعليقات، ثم استخدم Apidog لاختبار الـ endpoints الحرجة قبل النشر. بهذه الطريقة تقلل الأخطاء في الإنتاج وتبني واجهات برمجة تطبيقات أكثر موثوقية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbnk81nqvt28btu9gqsgb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbnk81nqvt28btu9gqsgb.png" alt="صورة" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيف تستخدم ChatGPT Team مقابل 1 دولار</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:02:52 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyf-tstkhdm-chatgpt-team-mqbl-1-dwlr-36a</link>
      <guid>https://dev.to/yusuf_khalidd/kyf-tstkhdm-chatgpt-team-mqbl-1-dwlr-36a</guid>
      <description>&lt;p&gt;إتاحة أدوات الذكاء الاصطناعي القوية لا يتطلب ميزانية كبيرة. حاليًا يمكن للمطورين الوصول إلى ChatGPT Team—الذي يكلف عادةً 150 دولارًا شهريًا لخمسة مقاعد—مقابل دولار واحد فقط لفترة محدودة. هذا مفيد خصوصًا لفرق تطوير واجهات برمجة التطبيقات (API) والـ backend التي تريد استخدام نماذج GPT المتقدمة داخل سير عملها اليومي.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;في هذا الدليل العملي، ستتعلم كيفية تفعيل عرض ChatGPT Team بقيمة 1 دولار، وما الذي تستفيد منه الفرق الهندسية، وكيفية ربط ذلك مع خادم MCP المجاني من Apidog لاستخدام مواصفات الـ API مباشرة داخل أدوات مثل Cursor و VS Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا يهم ChatGPT Team الفرق الهندسية؟
&lt;/h2&gt;

&lt;p&gt;ChatGPT Team ليس مجرد واجهة دردشة للفريق. بالنسبة للمطورين، هو مساحة عمل يمكن استخدامها في مهام مثل مراجعة الكود، كتابة الوثائق، توليد أمثلة API، وتحليل الأخطاء.&lt;/p&gt;

&lt;p&gt;أهم ما يهم فرق التطوير:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;حدود استخدام أعلى:&lt;/strong&gt; سقف رسائل أكبر مقارنةً بـ ChatGPT Plus، خصوصًا عند استخدام GPT-4o والنماذج المتقدمة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;وصول مبكر لبعض الميزات:&lt;/strong&gt; طرح أسرع لبعض النماذج والقدرات الجديدة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;إدارة مركزية للفريق:&lt;/strong&gt; فواتير موحدة، إدارة المقاعد، وإضافة أعضاء الفريق بسهولة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;الخلاصة:&lt;/strong&gt; إذا كان فريقك يستخدم الذكاء الاصطناعي يوميًا في كتابة الكود أو التوثيق أو تصميم الـ API، فهذا العرض يقلل تكلفة التجربة بشكل كبير.&lt;/p&gt;

&lt;h2&gt;
  
  
  كيفية المطالبة بعرض ChatGPT Team بقيمة 1 دولار
&lt;/h2&gt;

&lt;p&gt;العرض قد لا يكون متاحًا دائمًا، لذلك نفّذ الخطوات التالية مباشرة إذا ظهر لك.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. افتح رابط العرض
&lt;/h3&gt;

&lt;p&gt;استخدم أحد الخيارين:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;افتح &lt;a href="https://openai.com/chatgpt/team/" rel="noopener noreferrer"&gt;صفحة ChatGPT Team الترويجية&lt;/a&gt; وانتظر إعادة التوجيه إلى صفحة العرض.&lt;/li&gt;
&lt;li&gt;أو أضف هذا الجزء إلى رابط صفحة ChatGPT الرئيسية:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;?promo_campaign=team1dollar#team-pricing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. اشترك في خطة الفريق
&lt;/h3&gt;

&lt;p&gt;عند ظهور العرض:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;تأكد أن السعر المعروض هو &lt;strong&gt;1 دولار شهريًا لما يصل إلى 5 مقاعد&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;أكمل عملية الدفع.&lt;/li&gt;
&lt;li&gt;ادعُ حتى 4 أعضاء إضافيين من فريقك.&lt;/li&gt;
&lt;li&gt;وزّع المقاعد على المطورين أو مسؤولي الـ QA أو أعضاء المنتج حسب الحاجة.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23x8k9nrjl64imgedu6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23x8k9nrjl64imgedu6p.png" alt="تفعيل ChatGPT Team مقابل دولار واحد" width="609" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. عطّل التجديد التلقائي
&lt;/h3&gt;

&lt;p&gt;لتجنب دفع السعر الكامل في الشهر التالي:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح إعدادات الحساب.&lt;/li&gt;
&lt;li&gt;انتقل إلى &lt;strong&gt;إدارة الاشتراك&lt;/strong&gt; أو &lt;strong&gt;إدارة الخطة&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;اختر &lt;strong&gt;خطة الفريق&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;اضغط &lt;strong&gt;إلغاء الخطة&lt;/strong&gt; أو &lt;strong&gt;إلغاء الاشتراك&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;بهذا تستفيد من فترة العرض دون أن يتم تحصيل 30 دولارًا لكل مقعد تلقائيًا في الشهر التالي.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;نصائح سريعة:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;فعّل العرض بسرعة لأنه قد ينتهي دون إشعار مسبق.&lt;/li&gt;
&lt;li&gt;أضف أعضاء الفريق الذين سيستخدمونه فعليًا في مهام التطوير.&lt;/li&gt;
&lt;li&gt;استخدمه في مهام محددة: توثيق endpoints، مراجعة DTOs، كتابة اختبارات، أو تلخيص أخطاء API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ارتقِ بسير عملك البرمجي باستخدام خادم Apidog MCP
&lt;/h2&gt;

&lt;p&gt;بعد تفعيل ChatGPT Team، يمكنك تحسين سير عمل تطوير الـ API أكثر عبر ربط مواصفات API بأدوات التطوير المدعومة بالذكاء الاصطناعي باستخدام خادم MCP من Apidog.&lt;/p&gt;

&lt;h3&gt;
  
  
  ما هو خادم Apidog MCP؟
&lt;/h3&gt;

&lt;p&gt;خادم Apidog MCP يربط مواصفات واجهة برمجة التطبيقات الخاصة بك مباشرة ببيئات التطوير المتكاملة التي تدعم MCP، مثل Cursor و VS Code.&lt;/p&gt;

&lt;p&gt;بدلًا من نسخ ولصق أجزاء من ملف OpenAPI داخل المحادثة، يستطيع مساعد الذكاء الاصطناعي قراءة مواصفات الـ API والاعتماد عليها عند توليد الكود أو الوثائق.&lt;/p&gt;

&lt;p&gt;يمكنك استخدامه في مهام مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;قراءة endpoints المتاحة من ملف OpenAPI.&lt;/li&gt;
&lt;li&gt;توليد DTOs من schemas.&lt;/li&gt;
&lt;li&gt;إنشاء أمثلة request/response.&lt;/li&gt;
&lt;li&gt;كتابة كود client أو controller بناءً على مواصفات API.&lt;/li&gt;
&lt;li&gt;تحسين التوثيق بناءً على تعريفات OpenAPI الحالية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;يدعم خادم MCP مصادر متعددة، مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;مشاريع Apidog.&lt;/li&gt;
&lt;li&gt;ملفات OpenAPI/Swagger.&lt;/li&gt;
&lt;li&gt;روابط توثيق عامة.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  كيفية دمج خادم Apidog MCP مع بيئة التطوير الخاصة بك
&lt;/h2&gt;

&lt;p&gt;فيما يلي إعداد عملي لاستخدام خادم MCP مع Cursor. ينطبق المفهوم نفسه على أي IDE يدعم MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  المتطلبات الأساسية
&lt;/h3&gt;

&lt;p&gt;تأكد من توفر التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تثبيت &lt;strong&gt;Node.js&lt;/strong&gt;، ويفضل الإصدار 18 أو أحدث.&lt;/li&gt;
&lt;li&gt;بيئة تطوير تدعم MCP مثل &lt;strong&gt;Cursor&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;ملف OpenAPI بصيغة JSON أو YAML.&lt;/li&gt;
&lt;li&gt;رابط عام أو مسار محلي لملف مواصفات API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  الخطوة 1: جهّز ملف OpenAPI
&lt;/h3&gt;

&lt;p&gt;يمكنك استخدام أحد الخيارات التالية:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://petstore.swagger.io/v2/swagger.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;أو ملف محلي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/projects/api-docs/openapi.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;الصيغ المدعومة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.json
.yaml
.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ويُفضل استخدام OpenAPI 3.x إذا كان ذلك متاحًا في مشروعك.&lt;/p&gt;

&lt;h3&gt;
  
  
  الخطوة 2: أضف إعدادات MCP إلى Cursor
&lt;/h3&gt;

&lt;p&gt;افتح إعدادات MCP في Cursor، ثم أضف إعداد خادم Apidog MCP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61w0sg4iakjyxuqk7p2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61w0sg4iakjyxuqk7p2i.png" alt="تكوين خادم MCP في Cursor" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;إعداد عام:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"API specification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"apidog-mcp-server@latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--oas=https://petstore.swagger.io/v2/swagger.json"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  مثال على macOS/Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"API specification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"apidog-mcp-server@latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--oas=https://petstore.swagger.io/v2/swagger.json"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  مثال على Windows
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"API specification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"apidog-mcp-server@latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--oas=https://petstore.swagger.io/v2/swagger.json"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استبدل الرابط التالي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://petstore.swagger.io/v2/swagger.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;برابط ملف OpenAPI الخاص بمشروعك أو مساره المحلي.&lt;/p&gt;

&lt;h3&gt;
  
  
  الخطوة 3: اختبر الاتصال
&lt;/h3&gt;

&lt;p&gt;افتح Agent mode داخل الـ IDE، ثم جرّب هذا الطلب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Please fetch API documentation via MCP and tell me how many endpoints exist in the project.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا كان الإعداد صحيحًا، سيقرأ المساعد مواصفات الـ API ويعيد لك ملخصًا بعدد endpoints أو تفاصيلها.&lt;/p&gt;

&lt;p&gt;إذا لم يعمل الاتصال، تحقق من التالي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل رابط OpenAPI يعمل من المتصفح؟&lt;/li&gt;
&lt;li&gt;هل الملف المحلي موجود في المسار الصحيح؟&lt;/li&gt;
&lt;li&gt;هل Node.js مثبت؟&lt;/li&gt;
&lt;li&gt;هل يستطيع &lt;code&gt;npx&lt;/code&gt; تشغيل الحزمة؟&lt;/li&gt;
&lt;li&gt;هل أعدت تشغيل Cursor بعد تعديل إعدادات MCP؟&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  أمثلة عملية لاستخدام MCP في تطوير الـ API
&lt;/h2&gt;

&lt;p&gt;بعد نجاح الاتصال، يمكنك استخدام أوامر مباشرة داخل الـ IDE.&lt;/p&gt;

&lt;h3&gt;
  
  
  توليد DTOs من مواصفات API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read the API schema via MCP and generate TypeScript DTOs for all request and response bodies.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  إنشاء client بسيط
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use the API specification from MCP and generate a TypeScript API client for the user endpoints.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  كتابة اختبارات
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Based on the API documentation available through MCP, generate integration test cases for the authentication endpoints.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  تحسين التوثيق
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Review the API documentation from MCP and suggest clearer descriptions for each endpoint.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بهذه الطريقة يصبح ملف OpenAPI مصدر الحقيقة داخل بيئة التطوير، بدلًا من الاعتماد على نسخ يدوية أو توثيق قديم.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا تجمع بين ChatGPT Team و Apidog؟
&lt;/h2&gt;

&lt;p&gt;الجمع بين ChatGPT Team وخادم Apidog MCP يعطي الفريق سير عمل أكثر مباشرة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استخدم &lt;strong&gt;نماذج GPT المتقدمة&lt;/strong&gt; لمراجعة الكود، التوثيق، وتحليل الأخطاء.&lt;/li&gt;
&lt;li&gt;اجعل مساعد الـ IDE يقرأ &lt;strong&gt;مواصفات API الحية&lt;/strong&gt; بدلًا من إدخالها يدويًا.&lt;/li&gt;
&lt;li&gt;ولّد DTOs، أمثلة requests، واختبارات بناءً على OpenAPI.&lt;/li&gt;
&lt;li&gt;قلّل التبديل بين المتصفح، أدوات التوثيق، وبيئة التطوير.&lt;/li&gt;
&lt;li&gt;حسّن التعاون بين فرق backend وQA والمنتج لأن الجميع يعمل انطلاقًا من نفس مواصفات الـ API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  اتخذ الإجراء: فعّل سير عمل API مدعومًا بالذكاء الاصطناعي
&lt;/h2&gt;

&lt;p&gt;إذا كان عرض ChatGPT Team بقيمة 1 دولار ظاهرًا لك، فعّله ثم عطّل التجديد التلقائي لتجنب الرسوم الشهرية الكاملة.&lt;/p&gt;

&lt;p&gt;بعد ذلك، اربط خادم Apidog MCP ببيئة التطوير الخاصة بك، وابدأ باستخدام مواصفات OpenAPI مباشرة داخل Cursor أو أي IDE يدعم MCP. بهذه الخطوات، يمكنك تحويل الذكاء الاصطناعي من أداة محادثة منفصلة إلى جزء عملي من سير تطوير واجهات برمجة التطبيقات.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>كيفية تشغيل جوجل جيما 3 270M محليًا: ذكاء اصطناعي سريع وخاص للمطورين</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 03:47:01 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/kyfy-tshgyl-jwjl-jym-3-270m-mhlyan-dhk-stny-sry-wkhs-llmtwryn-44kb</link>
      <guid>https://dev.to/yusuf_khalidd/kyfy-tshgyl-jwjl-jym-3-270m-mhlyan-dhk-stny-sry-wkhs-llmtwryn-44kb</guid>
      <description>&lt;p&gt;هل تريد تشغيل نموذج لغوي صغير وعملي على جهازك المحلي بدون الاعتماد على السحابة؟ يوفر &lt;strong&gt;Google Gemma 3 270M&lt;/strong&gt; نموذجًا مدمجًا بـ 270 مليون معامل ضمن سلسلة Gemma، مناسبًا لتطبيقات الذكاء الاصطناعي منخفضة زمن الوصول مثل توليد النصوص، الأسئلة والأجوبة، التلخيص، واستخراج المعلومات، مع استهلاك موارد أقل من النماذج الأكبر.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;نصيحة عملية:&lt;/strong&gt; إذا كنت تبني واجهة API حول نموذج محلي مثل Gemma 3 270M، يمكنك استخدام &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; لتصميم نقاط النهاية، اختبارها، محاكاتها، وتوثيقها أثناء التطوير.&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا تستخدم Gemma 3 270M محليًا؟
&lt;/h2&gt;

&lt;p&gt;استخدم Gemma 3 270M عندما تحتاج إلى:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;خصوصية على الجهاز:&lt;/strong&gt; لا تحتاج البيانات إلى مغادرة الجهاز.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;زمن وصول منخفض:&lt;/strong&gt; مناسب للواجهات التفاعلية وروبوتات الدردشة المحلية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;استهلاك موارد منخفض:&lt;/strong&gt; يمكن تشغيله على أجهزة مكتبية، حواسيب محمولة، وبعض الأجهزة المحمولة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;نشر أبسط:&lt;/strong&gt; لا تحتاج دائمًا إلى بنية سحابية أو مفاتيح API خارجية.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;يدعم النموذج نافذة سياق تصل إلى &lt;strong&gt;32,000 رمز&lt;/strong&gt;، كما يدعم خيارات تكميم مثل &lt;strong&gt;Q4_0 QAT&lt;/strong&gt;. في وضع INT4 يمكن الوصول إلى نتائج قريبة من الدقة الكاملة مع استخدام أقل من 200 ميجابايت من الذاكرة، ما يجعله مناسبًا للتطبيقات الطرفية والمحمولة.&lt;/p&gt;

&lt;h2&gt;
  
  
  هندسة Gemma 3 270M باختصار
&lt;/h2&gt;

&lt;p&gt;يعتمد Gemma 3 270M على بنية محولات، ويتضمن:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;170 مليون معامل للتضمينات&lt;/strong&gt; لدعم مفردات بحجم 256,000 رمز.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100 مليون معامل لكتل المحولات&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;دعمًا متعدد اللغات&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تكميم INT4&lt;/strong&gt; لتقليل استهلاك الذاكرة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotary Position Embeddings&lt;/strong&gt; لتحسين تمثيل الموضع.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group Query Attention&lt;/strong&gt; لتحسين الكفاءة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;يناسب النموذج مهام مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;اتباع التعليمات.&lt;/li&gt;
&lt;li&gt;استخراج البيانات.&lt;/li&gt;
&lt;li&gt;التلخيص.&lt;/li&gt;
&lt;li&gt;فحوصات الامتثال.&lt;/li&gt;
&lt;li&gt;التصنيف النصي.&lt;/li&gt;
&lt;li&gt;الردود القصيرة داخل تطبيقات الدردشة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;كما تشير المعايير إلى أن Gemma 3 270M يحقق درجات F1 عالية في IFEval، ما يجعله خيارًا عمليًا عندما تكون الذاكرة والبطارية من القيود الأساسية.&lt;/p&gt;

&lt;h2&gt;
  
  
  فوائد تشغيل Gemma 3 270M على جهازك
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;خصوصية أفضل:&lt;/strong&gt; المعالجة تتم محليًا.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;زمن استجابة منخفض:&lt;/strong&gt; مناسب لتجارب المستخدم الفورية.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;بدون رسوم استدعاء سحابية متكررة:&lt;/strong&gt; لا تعتمد على مزود API خارجي لكل طلب.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;كفاءة طاقة:&lt;/strong&gt; يستخدم 0.75% فقط من بطارية Pixel 9 Pro لإجراء 25 محادثة مكممة بـ INT4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;قابلية الضبط الدقيق:&lt;/strong&gt; يمكن تكييفه مع بياناتك باستخدام LoRA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;مناسب للفرق الصغيرة:&lt;/strong&gt; يمكن بناء النماذج الأولية والتجربة محليًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  متطلبات النظام
&lt;/h2&gt;

&lt;p&gt;يمكن تشغيل Gemma 3 270M على إعدادات بسيطة نسبيًا:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;الاستخدام&lt;/th&gt;
&lt;th&gt;المتطلبات المقترحة&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU فقط&lt;/td&gt;
&lt;td&gt;4 جيجابايت RAM ومعالج حديث مثل Intel Core i5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;2 جيجابايت VRAM على بطاقات NVIDIA للنماذج المكممة&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Silicon&lt;/td&gt;
&lt;td&gt;أداء جيد عبر MLX-LM، مع أكثر من 650 رمزًا/ثانية على M4 Max&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;الضبط الدقيق&lt;/td&gt;
&lt;td&gt;8 جيجابايت RAM و4 جيجابايت VRAM لمجموعات البيانات الصغيرة&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;نظام التشغيل&lt;/td&gt;
&lt;td&gt;Windows أو macOS أو Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;Python 3.10+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;التخزين&lt;/td&gt;
&lt;td&gt;حوالي 1 جيجابايت لملفات النموذج&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  اختيار أداة التشغيل المحلية
&lt;/h2&gt;

&lt;p&gt;يمكنك تشغيل Gemma 3 270M بعدة طرق. اختر الأداة حسب مستوى التحكم الذي تحتاجه:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;الأداة&lt;/th&gt;
&lt;th&gt;الأفضل لـ&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hugging Face Transformers&lt;/td&gt;
&lt;td&gt;التطوير ببايثون، التكامل مع التطبيقات، والمرونة&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LM Studio&lt;/td&gt;
&lt;td&gt;تجربة مرئية بدون كود وإدارة النماذج محليًا&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;llama.cpp&lt;/td&gt;
&lt;td&gt;أداء مرتفع وتحكم منخفض المستوى&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MLX&lt;/td&gt;
&lt;td&gt;أجهزة Apple M-series&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;اقتراح سريع:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;إذا كنت تريد تجربة سريعة: استخدم &lt;strong&gt;LM Studio&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;إذا كنت تبني تطبيقًا أو API: استخدم &lt;strong&gt;Transformers&lt;/strong&gt; أو &lt;strong&gt;llama.cpp&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;إذا كنت على Apple Silicon: جرّب &lt;strong&gt;MLX&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  تشغيل Gemma 3 270M باستخدام Hugging Face Transformers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. ثبّت المكتبات
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;transformers torch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;إذا كنت ستستخدم نماذج مقيدة أو تحتاج إلى تسجيل الدخول إلى Hugging Face:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;huggingface_hub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. حمّل النموذج
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="n"&gt;model_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-3-270m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. نفّذ استدلالًا بسيطًا
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;input_text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain quantum computing in simple terms.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. استخدم التكميم لتقليل الذاكرة
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BitsAndBytesConfig&lt;/span&gt;

&lt;span class="n"&gt;quant_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BitsAndBytesConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;load_in_4bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;quantization_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;quant_config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. سجّل الدخول إذا كان الوصول يتطلب رمزًا
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;huggingface_hub&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;login&lt;/span&gt;

&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_hf_token&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;احصل على الرمز من إعدادات حسابك في Hugging Face.&lt;/p&gt;

&lt;h2&gt;
  
  
  تشغيل Gemma 3 270M باستخدام LM Studio
&lt;/h2&gt;

&lt;p&gt;يوفر LM Studio واجهة رسومية مناسبة للتجربة السريعة بدون كتابة كود.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. نزّل LM Studio
&lt;/h3&gt;

&lt;p&gt;حمّله من &lt;a href="https://lmstudio.ai" rel="noopener noreferrer"&gt;lmstudio.ai&lt;/a&gt; وثبّته على جهازك.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4mg9ockzsnwf3gy43mn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4mg9ockzsnwf3gy43mn5.png" alt="صورة" width="799" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. ابحث عن النموذج
&lt;/h3&gt;

&lt;p&gt;ابحث عن:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gemma-3-270m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;في مركز النماذج داخل LM Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwgap3929eg53qrh1f08h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwgap3929eg53qrh1f08h.png" alt="صورة" width="799" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. اختر نسخة مكممة
&lt;/h3&gt;

&lt;p&gt;ابدأ بنسخة مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Q4_0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا الخيار مناسب إذا كنت تريد تقليل استهلاك الذاكرة.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. اضبط الإعدادات
&lt;/h3&gt;

&lt;p&gt;استخدم إعدادات بداية مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;context: 32k
temperature: 1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم اختبر النموذج بمطالبات قصيرة قبل استخدامه في تطبيقك.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. فعّل GPU Offload
&lt;/h3&gt;

&lt;p&gt;إذا كان جهازك يدعم ذلك، فعّل تفريغ بعض الطبقات إلى GPU لتحسين السرعة.&lt;/p&gt;

&lt;p&gt;LM Studio مناسب للنماذج الأولية السريعة، ومفيد للفرق التي تريد اختبار النموذج قبل دمجه برمجيًا.&lt;/p&gt;

&lt;h2&gt;
  
  
  تشغيل Gemma 3 270M باستخدام llama.cpp
&lt;/h2&gt;

&lt;p&gt;استخدم &lt;code&gt;llama.cpp&lt;/code&gt; إذا كنت تريد أداءً عاليًا وتحكمًا أكبر في التشغيل، خصوصًا على الأجهزة محدودة الموارد.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. استنسخ المشروع وابنه
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ggerganov/llama.cpp
&lt;span class="nb"&gt;cd &lt;/span&gt;llama.cpp
make &lt;span class="nt"&gt;-j&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. نزّل ملفات GGUF
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;huggingface-cli download unsloth/gemma-3-270m-it-GGUF &lt;span class="nt"&gt;--include&lt;/span&gt; &lt;span class="s2"&gt;"*.gguf"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. شغّل النموذج
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./llama-cli &lt;span class="nt"&gt;-m&lt;/span&gt; gemma-3-270m-it-Q4_K_M.gguf &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Build a simple AI app."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. فعّل CUDA اختياريًا
&lt;/h3&gt;

&lt;p&gt;إذا كنت تستخدم بطاقة NVIDIA:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;make &lt;span class="nv"&gt;GGML_CUDA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم يمكنك ضبط استخدام GPU مثلًا عبر:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./llama-cli &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-m&lt;/span&gt; gemma-3-270m-it-Q4_K_M.gguf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Build a simple AI app."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--n-gpu-layers&lt;/span&gt; 999
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  بناء API محلية حول Gemma 3 270M
&lt;/h2&gt;

&lt;p&gt;للاستخدام داخل تطبيق ويب أو خدمة خلفية، يمكنك تغليف النموذج داخل API بسيطة.&lt;/p&gt;

&lt;p&gt;مثال باستخدام FastAPI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fastapi uvicorn transformers torch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pydantic&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BaseModel&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;model_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-3-270m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GenerateRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseModel&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;

&lt;span class="nd"&gt;@app.post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;GenerateRequest&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max_new_tokens&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;شغّل الخادم:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvicorn main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;اختبر الطلب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://127.0.0.1:8000/generate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"prompt": "Summarize what local AI means.", "max_new_tokens": 120}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعد ذلك يمكنك توثيق نقطة النهاية واختبارها ومحاكاتها عبر &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  أمثلة عملية لاستخدام Gemma 3 270M داخل API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. تحليل المشاعر
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Classify the sentiment as Positive, Neutral, or Negative: This product is amazing!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;مخرج متوقع:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Positive
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. التلخيص
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Long article here...
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize the following text in 3 bullet points:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;summary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. الإجابة على الأسئلة
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ما الذي يسبب تغير المناخ؟&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;أجب بإيجاز وبالعربية:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا النمط مناسب لروبوتات الدردشة أو واجهات قواعد المعرفة الداخلية.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. استخراج كيانات من نصوص صحية
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;clinical_note&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Patient reports chest pain and shortness of breath. Current medication includes aspirin.
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Extract medical entities from the following note.
Return JSON with symptoms and medications.

Note:
&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;clinical_note&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;يمكن تشغيل هذا النوع من المعالجة محليًا لتقليل خروج البيانات الحساسة من الجهاز أو الشبكة الداخلية.&lt;/p&gt;

&lt;h2&gt;
  
  
  الضبط الدقيق لـ Gemma 3 270M باستخدام LoRA
&lt;/h2&gt;

&lt;p&gt;إذا كنت تحتاج إلى تكييف النموذج مع مجال محدد، استخدم LoRA لتقليل تكلفة التدريب.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. ثبّت PEFT
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;peft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. أضف إعدادات LoRA
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;peft&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_peft_model&lt;/span&gt;

&lt;span class="n"&gt;lora_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;lora_alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;target_modules&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;v_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_peft_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lora_config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. شغّل التدريب
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Trainer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TrainingArguments&lt;/span&gt;

&lt;span class="n"&gt;training_args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TrainingArguments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;output_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;trainer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Trainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;training_args&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;trainer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;train&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استخدم هذا الأسلوب عندما تريد:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;تدريب النموذج على مجموعة بيانات صغيرة.&lt;/li&gt;
&lt;li&gt;حفظ محولات LoRA وإعادة استخدامها.&lt;/li&gt;
&lt;li&gt;التبديل بين مهام متعددة دون إعادة تدريب النموذج الكامل.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;راقب دائمًا:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;قيمة الخسارة أثناء التدريب.&lt;/li&gt;
&lt;li&gt;دقة التحقق.&lt;/li&gt;
&lt;li&gt;علامات الإفراط في التخصيص.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  تحسين الأداء
&lt;/h2&gt;

&lt;p&gt;طبّق هذه الخطوات قبل نقل النموذج إلى استخدام فعلي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استخدم &lt;strong&gt;4-bit أو 8-bit quantization&lt;/strong&gt; لتقليل الذاكرة.&lt;/li&gt;
&lt;li&gt;اجمع الطلبات عندما يكون ذلك ممكنًا لتحسين الإنتاجية.&lt;/li&gt;
&lt;li&gt;اضبط معاملات التوليد:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;temperature = 1.0
top_k = 64
top_p = 0.95
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;فعّل الدقة المختلطة على وحدات GPU المتوافقة.&lt;/li&gt;
&lt;li&gt;راقب استهلاك VRAM:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;حدّث المكتبات بانتظام:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; transformers torch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;تجنب إدخال رمزي BOS مكررين داخل المطالبات.&lt;/li&gt;
&lt;li&gt;راقب طول السياق لتجنب اقتطاع المدخلات.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  بنية مقترحة لتطبيق محلي
&lt;/h2&gt;

&lt;p&gt;يمكنك استخدام البنية التالية لتطبيق إنتاجي بسيط:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend
   |
   v
Backend API / FastAPI
   |
   v
Gemma 3 270M local inference
   |
   v
Structured response / JSON
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;مثال لنقطة نهاية:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /generate
Content-Type: application/json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;جسم الطلب:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Summarize this text..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_new_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;الاستجابة:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"response"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;استخدم أداة API لتوثيق هذه العقود مبكرًا، واختبر الحالات مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;مطالبة فارغة.&lt;/li&gt;
&lt;li&gt;نص طويل جدًا.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;max_new_tokens&lt;/code&gt; غير صالح.&lt;/li&gt;
&lt;li&gt;استجابة بطيئة.&lt;/li&gt;
&lt;li&gt;فشل تحميل النموذج.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  الخلاصة
&lt;/h2&gt;

&lt;p&gt;يوفر Gemma 3 270M طريقة عملية لتشغيل ميزات ذكاء اصطناعي محليًا مع زمن وصول منخفض وخصوصية أعلى واستهلاك موارد محدود. يمكنك استخدامه للتلخيص، التصنيف، الإجابة على الأسئلة، استخراج البيانات، وبناء واجهات API محلية حول النموذج.&lt;/p&gt;

&lt;p&gt;إذا كنت تبني تطبيقًا يعتمد على API، فابدأ بنقطة نهاية بسيطة حول النموذج، ثم وثّقها واختبرها مبكرًا باستخدام &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; قبل دمجها في الواجهة الأمامية أو الخدمات الداخلية.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>تبسيط توثيق المنتج لفرق التطوير باستخدام Apidog</title>
      <dc:creator>Yusuf Khalidd</dc:creator>
      <pubDate>Tue, 23 Jun 2026 03:44:45 +0000</pubDate>
      <link>https://dev.to/yusuf_khalidd/tbsyt-twthyq-lmntj-lfrq-lttwyr-bstkhdm-apidog-2h6g</link>
      <guid>https://dev.to/yusuf_khalidd/tbsyt-twthyq-lmntj-lfrq-lttwyr-bstkhdm-apidog-2h6g</guid>
      <description>&lt;p&gt;تعد وثائق المنتج الدقيقة جزءًا أساسيًا من تجربة مطوري واجهات برمجة التطبيقات (API) وفرق المنتج والعمليات. بدل الاعتماد على أدوات متفرقة أو سير عمل يتطلب تدخلًا هندسيًا في كل تعديل، يمكنك استخدام Apidog لإدارة إنشاء الوثائق ومراجعتها ونشرها من مكان واحد، مع الحفاظ على التحكم بالإصدارات والتعاون بين الفرق.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;جرّب Apidog اليوم&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  لماذا لا تزال وثائق المنتج مهمة
&lt;/h2&gt;

&lt;p&gt;حتى إذا كان المنتج مصممًا جيدًا، يحتاج المستخدمون وأعضاء الفريق إلى وثائق واضحة لفهم:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;الميزات الجديدة&lt;/li&gt;
&lt;li&gt;خطوات الاستخدام&lt;/li&gt;
&lt;li&gt;سلوك واجهات API&lt;/li&gt;
&lt;li&gt;الحالات الهامشية&lt;/li&gt;
&lt;li&gt;التغييرات بين الإصدارات&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;إضافة شروحات طويلة داخل التطبيق تجعل الواجهة مزدحمة، بينما إهمال التوثيق يزيد من طلبات الدعم وسوء الفهم.&lt;/p&gt;

&lt;h3&gt;
  
  
  المشاكل الشائعة في أدوات التوثيق التقليدية
&lt;/h3&gt;

&lt;p&gt;أدوات مثل Notion وConfluence وDocusaurus وGitBook مفيدة، لكنها قد تصبح عائقًا عند إدارة وثائق منتج أو API بشكل مستمر:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;التأليف المعتمد على الكود&lt;/strong&gt;: يحتاج إلى معرفة تقنية أو تدخل مطورين.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;تعارض الإصدارات&lt;/strong&gt;: قد تحدث تعديلات متضاربة أو تحديثات مفقودة عند العمل الجماعي.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;نشر غير مرن&lt;/strong&gt;: إما نشر بسيط بدون مراجعة كافية، أو سير عمل معقد يحتاج إلى وقت هندسي.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;في Apidog، كان الفريق يستخدم Docusaurus سابقًا، ثم انتقل إلى إدارة الوثائق داخل Apidog لتقليل الاعتماد على الهندسة وتوحيد الكتابة والمراجعة والنشر.&lt;/p&gt;

&lt;p&gt;للاطلاع على مثال عملي، راجع &lt;a href="https://docs.apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;وثائق مساعدة Apidog&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  التعاون الفريقي: سير عمل التوثيق لدينا
&lt;/h2&gt;

&lt;p&gt;في Apidog، لا تُدار الوثائق كمهمة فردية أو هندسية فقط. يشارك مديرو المنتجات وفريق العمليات في دورة واضحة:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" alt="سير عمل توثيق المنتج في Apidog" width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;مديرو المنتجات&lt;/strong&gt;: يكتبون أو يحدّثون الوثائق بناءً على الميزات الجديدة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;فريق العمليات&lt;/strong&gt;: يراجع المحتوى، يتحقق من الدقة، ويحسّن تجربة القراءة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;الفرع الرئيسي محمي&lt;/strong&gt;: لا يتم تعديل الوثائق المنشورة مباشرة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;النتيجة: سير عمل قريب من Git، لكن مهيأ للفرق غير الهندسية أيضًا.&lt;/p&gt;

&lt;h2&gt;
  
  
  بناء وثائق المنتج في Apidog: خطوة بخطوة
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. تنظيم المحتوى باستخدام فروع Sprint
&lt;/h3&gt;

&lt;p&gt;عند بدء Sprint جديد، ينشئ فريق العمليات فرعًا مخصصًا داخل Apidog لهذا الإصدار.&lt;/p&gt;

&lt;p&gt;الفكرة بسيطة:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;أنشئ فرعًا جديدًا لكل Sprint.&lt;/li&gt;
&lt;li&gt;اجمع تغييرات التوثيق الخاصة بالميزات الجديدة أو المعدلة.&lt;/li&gt;
&lt;li&gt;راجع المحتوى داخل الفرع.&lt;/li&gt;
&lt;li&gt;ادمج الفرع في الرئيسي عند اكتمال المراجعة.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-239.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-239.png" alt="صورة" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;استخدم هذا الفرع من أجل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استيراد وثائق الميزات الموجودة.&lt;/li&gt;
&lt;li&gt;إنشاء مسودات للميزات الجديدة.&lt;/li&gt;
&lt;li&gt;اختبار التغييرات بدون التأثير على الوثائق المنشورة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-427.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-427.png" alt="صورة" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;هذا الأسلوب يجعل التوثيق قابلًا للتتبع، ويقلل خطر نشر تغييرات غير مكتملة.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. الكتابة باستخدام محرر Markdown متقدم
&lt;/h3&gt;

&lt;p&gt;يوفر Apidog محرر Markdown يسمح بكتابة الوثائق بسرعة مع دعم عناصر مرئية غنية.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-428.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-428.png" alt="صورة" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;يمكنك كتابة محتوى مثل:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## إنشاء مفتاح API&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; افتح إعدادات المشروع.
&lt;span class="p"&gt;2.&lt;/span&gt; انتقل إلى تبويب API Keys.
&lt;span class="p"&gt;3.&lt;/span&gt; اضغط Create API Key.
&lt;span class="p"&gt;4.&lt;/span&gt; انسخ المفتاح واحفظه في مكان آمن.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ثم أضف عناصر مساعدة مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;روابط إلى Endpoints ذات صلة.&lt;/li&gt;
&lt;li&gt;ملاحظات وتحذيرات.&lt;/li&gt;
&lt;li&gt;جداول مقارنة.&lt;/li&gt;
&lt;li&gt;خطوات إرشادية.&lt;/li&gt;
&lt;li&gt;رسوم Mermaid.&lt;/li&gt;
&lt;li&gt;فيديوهات توضيحية.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ربط الوثائق بنقاط نهاية API
&lt;/h4&gt;

&lt;p&gt;استخدم الروابط المرجعية لربط صفحة شرح مباشرة مع Endpoint معين أو وثيقة مرتبطة.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-429.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-429.png" alt="صورة" width="724" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;مثال عملي داخل الوثائق:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;لإنشاء مستخدم جديد، راجع Endpoint الخاص بـ &lt;span class="sb"&gt;`POST /users`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بدل ترك القارئ يبحث يدويًا، يمكنك ربط النص مباشرة بالـ Endpoint داخل Apidog.&lt;/p&gt;

&lt;h4&gt;
  
  
  إضافة كتل محتوى غنية
&lt;/h4&gt;

&lt;p&gt;عند الحاجة إلى شرح أو تحذير، أضف كتلة معلومات بدل نص طويل غير منظم.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-430.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fimage-430.png" alt="صورة" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;مثال:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gt"&gt;&amp;gt; ملاحظة: لا تشارك مفتاح API في مستودعات عامة أو ملفات عميل Frontend.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا يساعد الفرق غير التقنية على إنتاج وثائق واضحة دون حفظ كل تفاصيل الصياغة.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. التعاون والمراجعة في الوقت الفعلي
&lt;/h3&gt;

&lt;p&gt;بعد كتابة المسودة، يبدأ فريق العمليات المراجعة داخل فرع Sprint.&lt;/p&gt;

&lt;p&gt;ركّز في المراجعة على:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;هل الخطوات قابلة للتنفيذ؟&lt;/li&gt;
&lt;li&gt;هل أسماء الأزرار والقوائم صحيحة؟&lt;/li&gt;
&lt;li&gt;هل لقطات الشاشة تعكس الواجهة الحالية؟&lt;/li&gt;
&lt;li&gt;هل توجد حالات خطأ أو قيود يجب توضيحها؟&lt;/li&gt;
&lt;li&gt;هل الروابط بين الوثائق وEndpoints صحيحة؟&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;يساعد Apidog في تقليل مشاكل المراجعة من خلال:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;إشعارات التعديل الفوري&lt;/strong&gt;: معرفة من عدّل ماذا ومتى.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;سجل الإصدارات&lt;/strong&gt;: مقارنة التغييرات والرجوع عند الحاجة.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;دورات مراجعة سريعة&lt;/strong&gt;: تكرار بين المنتج والعمليات حتى تصبح الوثائق جاهزة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بدل تبادل ملفات أو تعليقات متفرقة، يتم العمل داخل نفس السياق.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. الاختبار والمراجعة قبل النشر
&lt;/h3&gt;

&lt;p&gt;قبل دمج الوثائق ونشرها، تحقق من المحتوى كما تتحقق من ميزة جديدة.&lt;/p&gt;

&lt;p&gt;نفّذ الخطوات التالية:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;افتح النسخة الحالية من المنتج.&lt;/li&gt;
&lt;li&gt;اتبع كل خطوة مكتوبة في الوثيقة.&lt;/li&gt;
&lt;li&gt;التقط لقطات شاشة جديدة من الواجهة الفعلية.&lt;/li&gt;
&lt;li&gt;تحقق من أن أسماء الحقول والأزرار مطابقة.&lt;/li&gt;
&lt;li&gt;اختبر الحالات الأساسية والقيود المهمة.&lt;/li&gt;
&lt;li&gt;حدّث أي نص أو صورة غير دقيقة.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2F3b30b1770696634670423288091a9eff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2F3b30b1770696634670423288091a9eff.png" alt="صورة" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  قائمة تحقق قبل النشر
&lt;/h3&gt;

&lt;p&gt;استخدم هذه القائمة قبل دمج الفرع:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] تمت مراجعة جميع صفحات Sprint.&lt;/li&gt;
&lt;li&gt;[ ] تم اختبار الخطوات على المنتج الفعلي.&lt;/li&gt;
&lt;li&gt;[ ] تم تحديث لقطات الشاشة.&lt;/li&gt;
&lt;li&gt;[ ] تم ربط الوثائق بالـ Endpoints أو الصفحات ذات الصلة.&lt;/li&gt;
&lt;li&gt;[ ] تمت مراجعة العناوين والوصف والـ slugs.&lt;/li&gt;
&lt;li&gt;[ ] تم إرسال طلب دمج MR.&lt;/li&gt;
&lt;li&gt;[ ] تمت موافقة المسؤول.&lt;/li&gt;
&lt;li&gt;[ ] تم نشر التغييرات بعد الدمج.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بهذا الشكل، تصبح الوثائق المنشورة نتيجة عملية مراجعة واضحة، وليست تعديلًا مباشرًا على الإنتاج.&lt;/p&gt;

&lt;h2&gt;
  
  
  المزيد من الطرق التي يحسن بها Apidog مواقع التوثيق
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. العلامة التجارية والتخطيط المخصص
&lt;/h3&gt;

&lt;p&gt;يمكنك تخصيص موقع الوثائق ليتوافق مع هوية شركتك.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-242.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-242.png" alt="صورة" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;أمثلة على ما يمكنك ضبطه:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;الشعار&lt;/li&gt;
&lt;li&gt;ألوان وهوية الموقع&lt;/li&gt;
&lt;li&gt;روابط الموارد&lt;/li&gt;
&lt;li&gt;روابط وثائق API المفتوحة&lt;/li&gt;
&lt;li&gt;بنية التنقل&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-243.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F08%2Fimage-243.png" alt="صورة" width="799" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;هذا مهم عندما تريد أن تبدو الوثائق كجزء من المنتج، لا كموقع منفصل تمامًا.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. نشر بنقرة واحدة، بدون صيانة
&lt;/h3&gt;

&lt;p&gt;بعد اكتمال المراجعة، يمكن نشر الوثائق مباشرة من Apidog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" alt="سير عمل توثيق المنتج في Apidog" width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;سير العمل المقترح:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;جهّز المحتوى داخل فرع Sprint.&lt;/li&gt;
&lt;li&gt;راجع التغييرات.&lt;/li&gt;
&lt;li&gt;أرسل طلب الدمج.&lt;/li&gt;
&lt;li&gt;احصل على الموافقة.&lt;/li&gt;
&lt;li&gt;انشر الوثائق.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;إذا احتجت إلى تحكم إضافي، يمكنك إعداد:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;نطاق مخصص&lt;/li&gt;
&lt;li&gt;بحث الموقع&lt;/li&gt;
&lt;li&gt;Algolia&lt;/li&gt;
&lt;li&gt;Google Analytics&lt;/li&gt;
&lt;li&gt;إعادة التوجيهات&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;كل ذلك يقلل الحاجة إلى طلبات متكررة من فريق الهندسة لإدارة موقع الوثائق.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. مُحسّن لمحركات البحث SEO جاهز للاستخدام
&lt;/h3&gt;

&lt;p&gt;يساعد Apidog على جعل الوثائق أسهل في الاكتشاف والمشاركة.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2025%2F09%2Fdocumentation-workflow.png" alt="سير عمل توثيق المنتج في Apidog" width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;راجع إعدادات SEO لكل صفحة:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;استخدم عنوانًا واضحًا.&lt;/li&gt;
&lt;li&gt;اجعل الـ slug قصيرًا ومفهومًا.&lt;/li&gt;
&lt;li&gt;أضف وصفًا يعكس محتوى الصفحة.&lt;/li&gt;
&lt;li&gt;تجنب عناوين عامة مثل &lt;code&gt;new-page&lt;/code&gt; أو &lt;code&gt;feature-doc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;استخدم كلمات يبحث عنها المطورون أو المستخدمون فعليًا.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;مثال:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Slug جيد:
api-authentication

Slug ضعيف:
page-123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا يجعل الوثائق أسهل في الفهرسة والربط والمشاركة داخل الفريق أو مع العملاء.&lt;/p&gt;

&lt;h2&gt;
  
  
  الخاتمة
&lt;/h2&gt;

&lt;p&gt;استخدام Apidog لتوثيق المنتج وواجهات API يساعد على توحيد الكتابة والمراجعة والنشر في سير عمل واحد. بدل الاعتماد على تعديلات مباشرة أو تدخل هندسي مستمر، يمكن للمنتج والعمليات العمل عبر فروع Sprint، مراجعة التغييرات، اختبارها، ثم نشرها بأمان.&lt;/p&gt;

&lt;p&gt;إذا كان فريقك يدير وثائق API أو أدلة منتج تتغير باستمرار، فابدأ بسير عمل بسيط: فرع لكل Sprint، مراجعة واضحة، طلب دمج، ثم نشر. هذا وحده يقلل الأخطاء ويحافظ على الوثائق محدثة وقابلة للتنفيذ.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
