كيفية إعادة إنشاء أبحاث OpenAI العميقة، ولكن كمصدر مفتوح

@apidog

@apidog

17 أكتوبر 2025

كيفية إعادة إنشاء أبحاث OpenAI العميقة، ولكن كمصدر مفتوح

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

البحث العميق في الذكاء الاصطناعي ليس نموذجًا أحاديًا ضخمًا - بل هو عملية، سير عمل تكراري يتضمن البحث، القراءة، والتفكير حتى يتم العثور على إجابة. تستخدم أنظمة OpenAI المملوكة، مثل تلك التي تشغّل ChatGPT أو GPT-4، خطوط أنابيب معقدة تقوم بتكرير الردود باستمرار. الآن تخيل إمكانية بناء نظام مشابه باستخدام أدوات مفتوحة المصدر. هذه المقالة تشرح كيفية إعادة إنشاء نظام البحث العميق باستخدام مشروع jina-ai/node-DeepResearch. سنقوم بتحليل الكود، وتفصيل كل مكون، وسنظهر لك كيفية إعداد النظام وتوسيعه.

زر

1. نظرة عامة وطبيعة الغرض

تم بناء DeepResearch حول فكرة بسيطة لكنها قوية:

استمر في البحث وقراءة صفحات الويب حتى تجد الإجابة (أو تتجاوز ميزانية التوكن).

تأخذ النظام استفسارًا (على سبيل المثال، "من هو الأكبر؟ cohere، jina ai، voyage؟") ويدخل في حلقة. في كل خطوة، يقرر الوكيل (وحدة ذكية) على إجراء. قد يبحث عن كلمات مفتاحية جديدة، يقرأ محتويات عناوين URL، يفكر عن طريق توليد أسئلة متابعة، أو يقدم إجابة إذا كان متأكدًا. تستمر هذه الدورة التكرارية حتى تكون الإجابة نهائية أو تتجاوز ميزانية التوكن (وهي رمز لموارد الحوسبة).

التركيب والإعداد

قبل الغوص في الكود، تحتاج إلى تثبيت التبعيات المطلوبة وضبط مفاتيح API الخاصة بك. يستخدم المشروع Gemini لنمذجة اللغة، وBrave أو DuckDuckGo للبحث على الويب، وJina Reader لجلب محتوى صفحات الويب. إليك كيفية إعداد المشروع:

export GEMINI_API_KEY=...  # لمفتاح API Gemini، اسأل هان
export JINA_API_KEY=jina_...  # مفتاح API Jina المجاني، احصل عليه من https://jina.ai/reader
export BRAVE_API_KEY=...  # اختياري؛ إذا لم يتم تقديمه، فإنه يتم تعيينه على بحث DuckDuckGo

git clone https://github.com/jina-ai/node-DeepResearch.git
cd node-DeepResearch
npm install

يوفر README أمثلة لتشغيل النظام مع استفسارات مختلفة:

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


2. الهيكل والمكونات الرئيسية

دعنا نفصل المكونات الرئيسية للنظام من خلال استكشاف الملفات الأساسية:

2.1 agent.ts – المنطق الأساسي

ملف agent.ts هو قلب النظام. يقوم بتنفيذ المنطق لدورة "البحث العميق": توليد المطالبات، اتخاذ القرارات، والتكرار خلال خطوات البحث، القراءة، التفكير، والإجابة.

العناصر الرئيسية في agent.ts:

الاستيرادات والإعداد:

يبدأ الملف باستيراد أدوات ومكتبات مختلفة:

دالة النوم:

async function sleep(ms: number) {
  const seconds = Math.ceil(ms / 1000);
  console.log(`انتظار ${seconds}s...`);
  return new Promise(resolve => setTimeout(resolve, ms));
}

تستخدم هذه الوظيفة المساعدة لتأخير العمليات - مفيدة لتجنب الحدود القصوى عند استدعاء واجهات برمجة التطبيقات الخارجية.

توليد المخطط:

تعرف دالة getSchema مخطط JSON لاستجابة الوكيل. تبني ديناميكيًا مخططًا يتضمن خصائص لـ:

من خلال فرض مخطط JSON صارم، تظل مخرجات الوكيل متسقة ويمكن قراءتها بواسطة الآلات.

توليد المطالبات:

تقوم دالة getPrompt بإنشاء مطالبة مفصلة يتم إرسالها إلى نموذج اللغة. تجمع بين عدة أقسام:

توجه هذه المطالبة متعددة الطبقات نموذج الذكاء الاصطناعي التوليدي "للتفكير" خطوة بخطوة واختيار إجراء واحد في كل مرة.

الحلقة الرئيسية في getResponse:

تعد دالة getResponse جوهر حلقة الوكيل التكرارية. تقوم بإعداد السياق الأولي:

داخل حلقة بينما، يفعل الوكيل:

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

تخزين السياق:

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

التنفيذ النهائي:

تستخدم دالة main() في نهاية agent.ts معلمة سطر الأوامر (الاستفسار)، تستدعي getResponse، وتطبع الإجابة النهائية إلى جانب ملخص لاستخدام التوكنات.


2.2 config.ts – إعداد البيئة

ملف config.ts هو المكان الذي يتم فيه تعريف بيئة النموذج وتكويناته:

يسهل ملف التكوين هذا تغيير الإعدادات وتكييف النظام مع بيئات أو سلوكيات نموذج مختلفة.


2.3 server.ts – واجهة برمجة تطبيقات خادم الويب

للسماح للمستخدمين بالتفاعل مع DeepResearch عبر طلبات HTTP، يتضمن النظام خادمًا بسيطًا يعتمد على Express في server.ts. يقوم هذا الملف بإعداد نقاط النهاية التي تتعامل مع تقديم الاستفسارات وبث تحديثات التقدم في الوقت الفعلي.

النقاط الرئيسية في server.ts:

إعداد Express:

يستخدم الخادم Express وCORS لدعم الطلبات عبر الأصول. يستمع إلى المنفذ 3000 (أو منفذ محدد في البيئة).

نقطة نهاية الاستفسار (POST /api/v1/query):

نقطة نهاية البث (GET /api/v1/stream/:requestId):

تخزين المهام واسترجاعها:

يكتب الخادم نتائج المهام إلى نظام الملفات (تحت دليل tasks) ويوفر نقطة نهاية (GET /api/v1/task/:requestId) لاسترجاع نتيجة مخزنة.

تجعل هذه المكونة لخادم الويب وكيل البحث متاحًا عبر HTTP، مما يتيح كل من التجارب التفاعلية والتكامل في أنظمة أكبر.


2.4 test-duck.ts – أداة لاختبار البحث

ملف test-duck.ts هو نص مستقل يستخدم Axios لإرسال طلب HTTP GET إلى واجهة برمجة تطبيقات خارجية (في هذه الحالة، jsonplaceholder.typicode.com) كاختبار. على الرغم من أن وظيفته الأساسية هي التحقق من أن طلبات HTTP تعمل بشكل صحيح (بما في ذلك إعداد الرؤوس ومعالجة الأخطاء)، إلا أنه يعمل كأحد الأمثلة على كيفية التعامل مع الطلبات الخارجية داخل النظام. في إعداد أكثر تعقيدًا، تُستخدم أنماط مماثلة عند الاستعلام عن واجهات برمجة تطبيقات البحث مثل DuckDuckGo أو Brave.


2.5 types.ts – تعريف هياكل بيانات متسقة

يحدد ملف types.ts جميع الأنواع المخصصة المستخدمة عبر المشروع:

أنواع الإجراءات:
تشمل هذه الأنواع المختلفة من الإجراءات التي يمكن أن يقوم بها الوكيل:

أنواع الاستجابة:
يحدد الملف استجابات مهيكلة لنتائج البحث، قراءة URLs، التقييم، تحليل الأخطاء، والمزيد. يساعد ذلك في الحفاظ على الاتساق ويضمن أن كل وحدة تفسر البيانات بنفس الطريقة.

أنواع المخطط:
تضمن تعريفات مخطط JSON أن الاستجابات المولدة من النموذج اللغوي تتبع بدقة التنسيق المتوقع. هذا مهم لمعالجة البيانات المستقبلية.

سياق المتعقب:
يتم أيضًا تعريف أنواع مخصصة لمتعقبي التوكن والإجراء، والتي تُستخدم لمراقبة حالة المحادثة وعملية البحث.


3. عملية البحث العميق التكرارية

يتبع النظام العام عملية منهجية وتكرارية mimics كيف يمكن أن يعمل الباحث البشري:

التهيئة:
تبدأ العملية بالسؤال الأصلي، الذي يضاف إلى قائمة "الفجوات" (أي المجهولات التي تحتاج إلى ملء).

توليد المطالبات:
يبني الوكيل مطالبة باستخدام السؤال الحالي، السياق السابق، المعرفة المجمعة، وحتى المحاولات غير الناجحة. ثم تُرسل هذه المطالبة إلى نموذج الذكاء الاصطناعي التوليدي.

اختيار الإجراء:
استنادًا إلى مخرجات النموذج، يختار الوكيل واحدة من عدة إجراءات:

تحديث السياق:
تقوم كل خطوة بتحديث المتعقبات الداخلية (استخدام التوكن وحالة الإجراء) وتؤرخ الحالة الحالية إلى الملفات. يضمن هذا الشفافية ويسمح بتصحيح الأخطاء أو المراجعة لاحقًا.

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

وضع الوحش:
إذا فشلت الخطوات الطبيعية في إنتاج إجابة حاسمة ضمن القيود، يدخل النظام "وضع الوحش". في هذا الوضع، يُجبر الذكاء الاصطناعي التوليدي على إنتاج إجابة بناءً على السياق المتراكم - حتى لو كان ذلك يعني تقديم تخمين مثقف.


4. التقدم والتعليقات في الوقت الحقيقي

تُعتبر ميزة أساسية في نظام DeepResearch هي آلية التعليقات في الوقت الحقيقي. من خلال نقطة نهاية البث الخاصة بالخادم الويب:

على سبيل المثال، قد يبدو حدث التقدم هكذا:

data: {
  "type": "progress",
  "trackers": {
    "tokenUsage": 74950,
    "tokenBreakdown": {
      "agent": 64631,
      "read": 10319
    },
    "actionState": {
      "action": "search",
      "thoughts": "النص يذكر العديد من المستثمرين في Jina AI لكن لا يحدد النسب المئوية للملكية. حاجة البحث المباشر.",
      "URLTargets": [],
      "answer": "",
      "questionsToAnswer": [],
      "references": [],
      "searchQuery": "نسب ملكية المستثمرين في Jina AI"
    },
    "step": 7,
    "badAttempts": 0,
    "gaps": []
  }
}

يسمح هذا التقرير المفصل حول التقدم للمطورين برؤية كيف تتطور تفكير الوكيل بمرور الوقت، مما يوفر رؤى حول كل من النجاحات والمجالات التي تحتاج إلى تحسين.


5. توسيع وتخصيص DeepResearch

تعني الطبيعة المفتوحة المصدر لهذا المشروع أنك تستطيع تكييف النظام لاحتياجاتك. إليك بعض الأفكار لتوسيع DeepResearch:

موفرو بحث مخصصون:
قد تدمج مزودين إضافيين للبحث أو تخصيص عملية إعادة كتابة الاستفسارات لعمليات البحث المحددة للمجال.

وحدات قراءة محسّنة:
إذا كنت بحاجة إلى معالجة نصوص أكثر دقة، يمكنك دمج نماذج NLP بديلة أو تعديل مكون Jina Reader للتعامل مع أنواع محتوى جديدة.

تحسين التقييم:
تتحقق وحدة التقييم حاليًا مما إذا كانت الإجابة حاسمة. يمكنك توسيع ذلك لتضمين مقاييس أكثر دقة، مثل تحليل المشاعر أو خوارزميات التحقق من الحقائق.

واجهة مستخدم:
بينما يستخدم النظام الحالي واجهة سطر الأوامر وخادم ويب بسيط لتدفق الأحداث، يمكنك بناء واجهة ويب أو هاتف محمول كاملة للجلسات البحثية التفاعلية.

تحسينات القابلية للتوسع:
تعمل التهيئة الحالية كخدمة ذات عقدة واحدة. للاستخدام الإنتاجي، ضع في اعتبارك إنشاء حاوية للتطبيق ونشرها باستخدام Kubernetes أو منصة أخرى للتنظيم للتعامل مع الحركة العالية والمعالجة الموزعة.


6. الأمان والأداء وأفضل الممارسات

عند نشر نظام مدفوع بالذكاء الاصطناعي مثل DeepResearch، هناك بعض الاعتبارات الأخرى:

إدارة مفاتيح API:
تأكد من أنه يتم تخزين مفاتيح API الخاصة بك (لـ Gemini وJina وBrave) بشكل آمن ومحددة بشفرة المصدر الخاصة بك. يوصى باستخدام المتغيرات البيئية والخزائن الآمنة.

تحديد المعدلات:
تساعد دالة sleep المدمجة في تجنب تحديد المعدلات عن طريق تأخير الطلبات المتعاقبة. ومع ذلك، ضع في اعتبارك تنفيذ آليات تحديد معدل إضافية على مستوى الخادم أو بوابة واجهة برمجة التطبيقات.

التحقق من البيانات:
تحقق صارم من الاستفسارات المدخلة والاستجابات. يساعد مخطط JSON المحدد في الوكيل، ولكن يجب عليك أيضًا التحقق من طلبات HTTP الواردة لمنع المدخلات الضارة.

التعامل مع الأخطاء:
يعد التعامل القوي مع الأخطاء (كما هو موضح في الشفرة الخادمة وtest-duck.ts) أمرًا بالغ الأهمية. يضمن ذلك أن فشل واجهة برمجة التطبيقات غير المتوقع أو استجابات غير صحيحة لا تؤدي إلى تعطل النظام.

مراقبة الموارد:
تتبع استخدام التوكنات أمر ضروري. توفر فئات TokenTracker وActionTracker رؤى حول استهلاك الموارد. يمكن أن تساعد مراقبة هذه المقاييس في تعديل أداء النظام وتجنب الاستخدام المفرط.


7. الخلاصة

يمثل مشروع DeepResearch من Jina AI كيف يمكن بناء عمليات البحث المعقدة والتكرارية باستخدام أدوات مفتوحة المصدر. من خلال دمج محركات البحث، نماذج الذكاء الاصطناعي التوليدية، وحلقات التفكير الذكي، يقوم النظام بتكرار إجابته باستمرار حتى يتأكد - أو حتى تصل حدود الموارد.

في هذه المقالة، استكشفنا كيفية إعادة إنشاء بحث OpenAI العميق باستخدام نهج مفتوح المصدر:

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

تضمن التصميم التكراري - الذي يجمع بين البحث، القراءة، التفكير، والإجابة في حلقة مستمرة - التعامل مع الاستفسارات الغامضة أو المعقدة مع وجود طبقات متعددة من التدقيق. ومع وجود هيكل تفصيلي يراقب استخدام التوكن ويقدم ردود فعل مباشرة، تحصل على رؤى عميقة حول عملية التفكير وراء كل إجابة.

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


من خلال اتباع هذا التحليل الشامل والتفصيل، يمكنك إعادة إنشاء وتوسيع الأفكار وراء البحث العميق لـ OpenAI بطريقة مفتوحة المصدر بالكامل. سواء كنت تتطلع إلى البناء على قاعدة الكود الحالية أو دمج منهجيات مشابهة في مشاريعك، فإن خارطة الطريق واضحة: ابدأ، قم بتحسين، ودفع حدود البحث الآلي.

زر

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات