- البحث في الويب الحيّ عبر
/augment/search - اتخاذ قرار بأيّ من تلك النتائج تستحق القراءة
- تحويل الصفحات المختارة إلى Markdown عبر
/augment/scrape - مطالبة نموذج دردشة بكتابة الموجز مع الاستشهاد بالمصادر برقمها
- ربط المراحل الأربع في سكربت واحد
venice_parameters.enable_web_search على إكمال الدردشة بدلًا من ذلك. يقارن دليل البحث في الويب واستخراج الصفحات بين الأسلوبين.
الإعداد
تحتاج إلى Python 3.9 أو أحدث، وحزمةrequests، ومفتاح Venice API. راجع توليد مفتاح API إن لم يكن لديك مفتاح.
research.py وابدأ بالاستيرادات وكتلة ترويسة مشتركة يعيد كل نداء استخدامها:
1. البحث في الويب
تأخذ/augment/search استعلامًا وتُعيد ما يصل إلى 20 نتيجة مرتّبة. Brave هو المزوّد الافتراضي ويطبّق سياسة عدم الاحتفاظ بالبيانات. Google متاح أيضًا ويتم توجيهه عبر Venice، بحيث لا يُربط الاستعلام بك أبدًا.
content وفيه HTML، لأن المزوّد يغلّف المصطلحات المطابقة بوسوم <strong>. عملية استبدال HTML_TAG أعلاه تُزيلها بحيث يصل المقتطف إلى النموذج نصًا صرفًا.
كثيرًا ما يكون حقل date سلسلة فارغة. كثير من الصفحات لا تنشر تاريخًا قابلًا للقراءة آليًا، لذا عامِل date كتلميح يمكنك استخدامه عند توفّره لا كحقل يمكنك الفرز أو التصفية به.
2. اختيار المصادر التي ستقرأها
استخراج جميع النتائج العشر سيكون بطيئًا ومكلفًا ومكرّرًا إلى حدٍّ بعيد. تُعيد محرّكات البحث عدة صفحات من الموقع نفسه، ومواقع التوثيق خاصة تُعيد الصفحة نفسها بعدة لغات، لذا قد يظهر المحتوى ذاته ثلاث أو أربع مرات تحت عناوين URL مختلفة. الاحتفاظ فقط بأعلى نتيجة ترتيبًا لكل نطاق يُزيل معظم هذا التكرار في بضعة أسطر:date حديثًا. كل مُصفٍّ تطبّقه هنا هو قرار لم يعد للنموذج فرصة أن يُخطئ فيه.
3. استخراج الصفحات المختارة
تجلب/augment/scrape عنوان URL عامًا وتُعيده بصيغة Markdown. تطلب أولاً من الموقع تمثيلًا أصليًا بصيغة Markdown، وتعود إلى الاستخراج المعتمد على المتصفح إن لم يكن متاحًا.
بعض الصفحات ستفشل، وأداة البحث ينبغي أن تعامل ذلك كأمر روتيني لا قاتل:
200 لكنها تُرجع لافتة كوكيز أو هيكلًا فارغًا بدلًا من مقالة.
تُعيد إخفاقات الاستخراج جسمًا بسيطًا بصيغة
{"error": "..."} مع رسالة قابلة للقراءة، على سبيل المثال X (formerly Twitter) blocks automated access to their content. يُحجب X وReddit كليًا. لإدراج منشورات من X في إجابة، استخدم venice_parameters.enable_x_search على إكمال الدردشة بدلًا من ذلك.4. كتابة الموجز
الآن نُعطي النموذج الصفحاتِ التي جمعناها مرقّمةً، ونطلب استشهادات تُحيل إلى تلك الأرقام. الترقيم داخل المطالبة هو ما يتيح لنا لاحقًا تحويل[2] في المخرجات إلى عنوان URL.
temperature المنخفضة تُبقي الصياغة قريبة من نص المصدر. تعيين enable_web_search إلى off يطابق الإعداد الافتراضي، لكن التصريح به صراحةً يضمن ألا يُدخل النموذج بهدوء مصدرًا غير موجود في قائمة مراجعنا.
5. جمع كل الأجزاء
القطعة الأخيرة تُشغّل المراحل بالترتيب وتُلحق قائمة المراجع التي تحلّ أرقام الاستشهادات:stderr، بحيث يمكنك توجيه الموجز وحده إلى ملف:
ضبط خط الأنابيب
يذهب معظم وقت الساعة الحقيقي إلى إكمال الدردشة الأخير، لأن أربع صفحات مستخرَجة تصل مجتمعةً إلى عشرات الآلاف من الرموز. هذه هي المقابض الأجدر بأن تمدّ يدك إليها أولًا:الخطوات التالية
خط الأنابيب الذي بين يديك الآن أساس لا منتج مكتمل. بعض الاتجاهات التي تستحق الاستكشاف:- تخزين Markdown المستخرَج مؤقتًا حسب عنوان URL بحيث لا تعيد الأسئلة المكرّرة جلب نفس الصفحات.
- خزّن Markdown كمتّجهات باستخدام التضمينات واسترجع مقاطع بدلًا من صفحات كاملة.
- دع النموذج يخطّط لعدة استعلامات قبل البحث، كما يفعل عرض وكيل البحث الخاص.
- اقرأ الموجز بصوت عالٍ بتمريره إلى سرد المقالات باستخدام تحويل النص إلى كلام.
البحث في الويب واستخراج الصفحات
مرجع لنقاط نهاية البحث والاستخراج.
سرد المقالات باستخدام تحويل النص إلى كلام
حوّل النص الذي أنشأته للتو إلى صوت.
التضمينات
فهرس Markdown المستخرَج بدلًا من إعادة جلبه.
وكيل البحث الخاص
وكيل أكبر يخطّط لعمليات البحث بنفسه.