تستحق شهادات LLM الخاصة بك مدخلات أفضل.
القارئ يفعل شيئين:
قراءة : يقوم بتحويل أي عنوان URL إلى مدخلات ملائمة لـ LLM باستخدام https://r.jina.ai/https://your.url
. احصل على مخرجات محسنة لوكيلك وأنظمة RAG دون أي تكلفة.
البحث : يبحث في الويب عن استعلام معين باستخدام https://s.jina.ai/your+query
. يتيح ذلك لحاملي LLM الخاصين بك الوصول إلى أحدث المعرفة العالمية من الويب.
تحقق من العرض المباشر
أو قم فقط بزيارة عناوين URL هذه ( اقرأ ) https://r.jina.ai/https://github.com/jina-ai/reader، ( بحث ) https://s.jina.ai/Who%20will%20win %202024%20US%20presidential%20election%3F وشاهد نفسك.
لا تتردد في استخدام Reader API في الإنتاج. إنه مجاني ومستقر وقابل للتطوير. نحن نحافظ عليه بنشاط باعتباره أحد المنتجات الأساسية لشركة Jina AI. تحقق من الحد الأقصى للسعر
2024-10-08 : تقديم adaptive crawler
. يمكنه الزحف بشكل متكرر إلى موقع الويب واستخراج الصفحات الأكثر صلة بصفحة ويب معينة.
15-07-2024 : لتقييد نتائج s.jina.ai
بمجال/موقع ويب معين، يمكنك تعيين، على سبيل المثال، site=jina.ai
في معلمات الاستعلام، والتي تتيح البحث داخل الموقع. لمزيد من الخيارات، جرب العرض التوضيحي المباشر المحدث.
01-07-2024 : لقد قمنا بحل هجوم DDoS وغيره من انتهاكات حركة المرور منذ 27 يونيو. لقد وجدنا أيضًا خطأً تم تقديمه في 28 يونيو والذي قد يتسبب في زيادة وقت الاستجابة لبعض مواقع الويب. تم حل الهجوم والخطأ. إذا واجهت زمن استجابة عالٍ لـ r.jina.ai في الفترة ما بين 27 و30 يونيو، فمن المفترض أن يعود إلى وضعه الطبيعي الآن.
30-05-2024 : يمكن للقارئ الآن قراءة ملفات PDF العشوائية من أي عنوان URL! تحقق من نتيجة PDF هذه من NASA.gov مقابل النسخة الأصلية.
15-05-2024 : قدمنا نقطة نهاية جديدة s.jina.ai
تقوم بالبحث على الويب وإرجاع أفضل 5 نتائج، كل منها بتنسيق مناسب لـ LLM. اقرأ المزيد عن هذه الميزة الجديدة هنا.
08-05-2024 : يتم إيقاف التعليق على الصورة بشكل افتراضي لتحسين زمن الاستجابة. لتشغيله، قم بتعيين x-with-generated-alt: true
في رأس الطلب.
03-05-2024 : تمكنا أخيرًا من حل هجوم DDoS منذ 29 أبريل. أصبحت واجهة برمجة التطبيقات (API) الخاصة بنا الآن أكثر موثوقية وقابلة للتطوير من أي وقت مضى!
24-04-2024 : لديك الآن المزيد من التحكم الدقيق في Reader API باستخدام الرؤوس، على سبيل المثال، إعادة توجيه ملفات تعريف الارتباط، باستخدام وكيل HTTP.
15-04-2024 : القارئ يدعم الآن قراءة الصور! يقوم بتسمية جميع الصور على عنوان URL المحدد ويضيف Image [idx]: [caption]
كعلامة بديلة (إذا كانت تفتقر إلى واحدة في البداية). وهذا يمكّن طلاب LLM من التفاعل مع الصور في التفكير والتلخيص وما إلى ذلك. انظر المثال هنا.
r.jina.ai
لجلب عنوان URL واحد ما عليك سوى إضافة https://r.jina.ai/
إلى أي عنوان URL. على سبيل المثال، لتحويل عنوان URL https://en.wikipedia.org/wiki/Artificial_intelligence
إلى مدخل متوافق مع LLM، استخدم عنوان URL التالي:
https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
r.jina.ai
لجلب موقع الويب بالكامل (Google Colab)s.jina.ai
للبحث على الويب ما عليك سوى إضافة https://s.jina.ai/
إلى استعلام البحث الخاص بك. لاحظ أنه إذا كنت تستخدم هذا في الكود، فتأكد من تشفير استعلام البحث الخاص بك أولاً، على سبيل المثال، إذا كان استعلامك هو Who will win 2024 US presidential election?
ثم يجب أن يبدو عنوان URL الخاص بك كما يلي:
https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F
خلف الكواليس، يبحث Reader في الويب، ويجلب أفضل 5 نتائج، ويزور كل عنوان URL، ويطبق r.jina.ai
عليه. ويختلف هذا عن العديد من web search function-calling
في أطر عمل الوكيل/RAG، والتي غالبًا ما تُرجع فقط العنوان وعنوان URL والوصف الذي توفره واجهة برمجة تطبيقات محرك البحث. إذا كنت تريد قراءة نتيجة واحدة بشكل أكثر عمقًا، فيجب عليك جلب المحتوى بنفسك من عنوان URL هذا. باستخدام Reader، يقوم http://s.jina.ai
بجلب المحتوى تلقائيًا من أهم 5 عناوين URL لنتائج البحث (بإعادة استخدام الحزمة التقنية الموجودة خلف http://r.jina.ai
). وهذا يعني أنك لست مضطرًا للتعامل مع عرض المتصفح أو حظره أو أي مشكلات تتعلق بـ JavaScript وCSS بنفسك.
s.jina.ai
للبحث داخل الموقع ما عليك سوى تحديد site
في معلمات الاستعلام مثل:
حليقة "https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com"
نوصي بشدة باستخدام أداة إنشاء التعليمات البرمجية لاستكشاف مجموعات مختلفة من المعلمات الخاصة بـ Reader API.
كما رأيت أعلاه، يمكن التحكم في سلوك Reader API باستخدام رؤوس الطلب. فيما يلي قائمة كاملة بالعناوين المدعومة.
يمكنك تمكين ميزة التسمية التوضيحية للصورة عبر x-with-generated-alt: true
header.
يمكنك أن تطلب من Reader API إعادة توجيه إعدادات ملفات تعريف الارتباط عبر رأس x-set-cookie
.
لاحظ أنه لن يتم تخزين الطلبات التي تحتوي على ملفات تعريف الارتباط مؤقتًا.
يمكنك تجاوز تصفية readability
عبر رأس x-respond-with
، على وجه التحديد:
x-respond-with: markdown
تخفيض السعر دون المرور reability
x-respond-with: html
يُرجع documentElement.outerHTML
x-respond-with: text
document.body.innerText
x-respond-with: screenshot
يعرض عنوان URL للقطة شاشة صفحة الويب
يمكنك تحديد خادم وكيل عبر رأس x-proxy-url
.
يمكنك تخصيص تسامح ذاكرة التخزين المؤقت عبر رأس x-cache-tolerance
(عدد صحيح بالثواني).
يمكنك تجاوز الصفحة المخزنة مؤقتًا (مدى الحياة 3600 ثانية) عبر x-no-cache: true
head (أي ما يعادل x-cache-tolerance: 0
).
إذا كنت تعرف بالفعل بنية HTML لصفحتك المستهدفة، فيمكنك تحديد x-target-selector
أو x-wait-for-selector
لتوجيه Reader API للتركيز على جزء معين من الصفحة.
من خلال تعيين رأس x-target-selector
على محدد CSS، تقوم واجهة برمجة تطبيقات القارئ بإرجاع المحتوى داخل العنصر المطابق، بدلاً من HTML الكامل. يعد تعيين هذا الرأس مفيدًا عندما يفشل الاستخراج التلقائي للمحتوى في التقاط المحتوى المطلوب ويمكنك تحديد الهدف الصحيح يدويًا.
من خلال تعيين رأس x-wait-for-selector
على محدد CSS، ستنتظر واجهة Reader API حتى يتم عرض العنصر المطابق قبل إرجاع المحتوى. إذا قمت بالفعل بتحديد x-wait-for-selector
، فيمكن حذف هذا الرأس إذا كنت تخطط لانتظار نفس العنصر.
r.jina.ai
لجلب تطبيق الصفحة الواحدة (SPA).تعتمد العديد من مواقع الويب في الوقت الحاضر على أطر عمل JavaScript والعرض من جانب العميل. يُعرف عادةً باسم تطبيق الصفحة الواحدة (SPA). بفضل محرك الدمى ومتصفح Chrome مقطوع الرأس، يدعم Reader أصلاً جلب مواقع الويب هذه. ومع ذلك، نظرًا لنهج محدد تم تطويره في بعض SPA، فقد تكون هناك بعض الاحتياطات الإضافية التي يجب اتخاذها.
وفقًا لتعريف معايير الويب، لا يتم إرسال المحتوى الذي يأتي بعد #
في عنوان URL إلى الخادم. للتخفيف من هذه المشكلة، استخدم طريقة POST
مع معلمة url
في النص.
حليقة -X POST "https://r.jina.ai/" -d "url=https://example.com/#/route"
قد تعرض بعض منتجعات SPA، أو حتى بعض مواقع الويب التي ليست منتجعات صحية بشكل صارم، محتويات التحميل المسبق قبل تحميل المحتوى الرئيسي ديناميكيًا لاحقًا. في هذه الحالة، قد يقوم Reader بالتقاط محتوى التحميل المسبق بدلاً من المحتوى الرئيسي. وللتخفيف من هذه المشكلة، إليك بعض الحلول الممكنة:
x-timeout
عند تحديد المهلة بشكل صريح، لن يحاول Reader العودة مبكرًا وسينتظر الشبكة في وضع الخمول حتى يتم الوصول إلى المهلة. يكون هذا مفيدًا عندما يصبح موقع الويب المستهدف في النهاية في وضع الخمول.
حليقة "https://example.com/" -H "x-timeout: 30"
x-wait-for-selector
عند تحديد خيار الانتظار بشكل صريح، سينتظر Reader ظهور محدد CSS المحدد حتى انتهاء المهلة. يكون هذا مفيدًا عندما تعرف بالضبط العنصر الذي يجب انتظاره.
حليقة "https://example.com/" -H "x-wait-for-selector: #content"
يكون وضع البث مفيدًا عندما تجد أن الوضع القياسي يوفر نتيجة غير كاملة. وذلك لأن القارئ سينتظر لفترة أطول قليلاً حتى يتم عرض الصفحة بشكل مستقر . استخدم رأس القبول لتبديل وضع البث:
حليقة -H "قبول: نص/دفق الحدث" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
تأتي البيانات في دفق. يحتوي كل جزء لاحق على معلومات أكثر اكتمالا. يجب أن توفر القطعة الأخيرة النتيجة الأكثر اكتمالا والنهائية. إذا كنت قادمًا من حاملي شهادات LLM، فيرجى ملاحظة أن هذا سلوك مختلف عن تدفق إنشاء النصوص الخاص بـ LLM.
على سبيل المثال، قارن هذين الأمرين أدناه. يمكنك أن ترى أن البث المباشر يمنحك معلومات كاملة في النهاية، في حين أن الوضع القياسي لا يفعل ذلك. وذلك لأن تحميل المحتوى على هذا الموقع المحدد يتم تشغيله بواسطة بعض ملفات js بعد تحميل الصفحة بالكامل، ويعيد الوضع القياسي الصفحة "في وقت مبكر جدًا".
حليقة -H 'x-no-cache: صحيح' https://access.redhat.com/security/cve/CVE-2023-45853 حليقة -H "قبول: نص/دفق الحدث" -H 'x-no-cache: صحيح' https://r.jina.ai/https://access.redhat.com/security/cve/CVE-2023 -45853
ملحوظة:
-H 'x-no-cache: true'
يُستخدم فقط لأغراض العرض التوضيحي لتجاوز ذاكرة التخزين المؤقت.
يعد وضع البث مفيدًا أيضًا إذا كان نظام LLM/agent الخاص بك يتطلب تسليمًا فوريًا للمحتوى أو يحتاج إلى معالجة البيانات في أجزاء لتداخل أوقات معالجة الإدخال/الإخراج وLLM. وهذا يسمح بالوصول بشكل أسرع ومعالجة البيانات بشكل أكثر كفاءة:
Reader API: streamContent1 ----> streamContent2 ----> streamContent3 ---> ...
| | |
v | |
Your LLM: LLM(streamContent1) | |
v |
LLM(streamContent2) |
v
LLM(streamContent3)
لاحظ أنه فيما يتعلق بالاكتمال: ... > streamContent3 > streamContent2 > streamContent1
، تحتوي كل قطعة لاحقة على معلومات أكثر اكتمالاً.
لا يزال هذا مبكرًا جدًا والنتيجة ليست في الحقيقة ملف JSON "مفيدًا". يحتوي على ثلاثة حقول url
title
content
فقط. ومع ذلك، يمكنك استخدام Accept-header للتحكم في تنسيق الإخراج:
حليقة -H "قبول: application/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
ربما يكون وضع JSON أكثر فائدة في s.jina.ai
من r.jina.ai
. بالنسبة إلى s.jina.ai
مع وضع JSON، فإنه يُرجع 5 نتائج في قائمة، كل منها في بنية {'title', 'content', 'url'}
.
يمكن تسمية جميع الصور الموجودة في تلك الصفحة التي لا تحتوي على علامة alt
تلقائيًا بواسطة VLM (نموذج لغة الرؤية) وتنسيقها كـ !(Image [idx]: [VLM_caption])[img_URL]
. من المفترض أن يمنح هذا LLM الخاص بالنص فقط تلميحات كافية لتضمين تلك الصور في التفكير والاختيار والتلخيص. استخدم رأس x-with-generated-alt لتبديل وضع البث:
حليقة -H "X-With-Generated-Alt: صحيح" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
ستحتاج إلى الأدوات التالية لتشغيل المشروع:
العقدة v18 (فشل الإنشاء لإصدار العقدة > 18)
Firebase CLI ( npm install -g firebase-tools
)
بالنسبة للواجهة الخلفية، انتقل إلى دليل backend/functions
وقم بتثبيت تبعيات npm.
git clone [email protected]:jina-ai/reader.gitcd الخلفية/الوظائف تثبيت npm
thinapps-shared
؟ قد تلاحظ إشارة إلى الوحدة الفرعية thinapps-shared
، وهي حزمة داخلية نستخدمها لمشاركة التعليمات البرمجية عبر منتجاتنا. على الرغم من أنها ليست مفتوحة المصدر وليست جزءًا لا يتجزأ من وظائف Reader، إلا أنها تساعد بشكل أساسي في الديكورات وتسجيل الدخول وإدارة الأسرار وما إلى ذلك. لا تتردد في تجاهلها في الوقت الحالي.
ومع ذلك، هذه هي قاعدة التعليمات البرمجية الوحيدة وراء https://r.jina.ai
، لذلك في كل مرة نلتزم فيها هنا، سنقوم بنشر الإصدار الجديد على https://r.jina.ai
.
يرجى إثارة مشكلة تتعلق بعنوان URL الذي تواجه مشكلة فيه. سننظر في الأمر ونحاول إصلاحه.
يتم دعم Reader بواسطة Jina AI ومرخص بموجب Apache-2.0.