search_provider على "exa" وستنفّذ Venice البحث عبر Exa مع عدم الاحتفاظ بالبيانات. تتم المصادقة باستخدام مفتاح Venice API الخاص بك، وتتولى Venice فوترة البحث، ولا تحتاج إلى حساب Exa.
تُعاد النتائج بالبنية نفسها لكل مزوّد، لذا يندمج Exa في أي شيء بنيته على بحث Brave الافتراضي في Venice، ويقتصر تبديل المزوّد على تغيير حقل واحد. يغطي هذا الدليل استدعاء نقطة النهاية، ومنح نموذج Venice إمكانية البحث عبر Exa كأداة، وتأسيس المطالبة على نتائج Exa بنفسك، ومتى يُفضَّل استدعاء واجهة Exa API مباشرة.
المتطلبات الأساسية
- مفتاح Venice API
- Python 3.10 أو أحدث، أو Node.js 22 أو أحدث
- لمثال الوكيل، نموذج Venice يدعم استدعاء الدوال. تستخدم الأمثلة
z-ai-glm-5-3-flash.
الإعداد
ثبّت OpenAI SDK، بالإضافة إلىrequests في Python. يتضمن Node.js الدالة fetch بشكل مدمج:
البحث باستخدام Exa
أرسل استعلامًا إلى/augment/search مع ضبط search_provider على "exa":
limit هي 10 ويقبل من 1 إلى 20، ويقبل query من 1 إلى 400 حرف. القيم خارج هذه النطاقات تُعيد 400 بدلًا من تقليصها إلى الحدود. تعامل مع date على أنه اختياري، لأن كثيرًا من الصفحات لا تنشر تاريخًا.
منح نموذج Venice إمكانية البحث عبر Exa
للسماح للنموذج بتحديد متى يبحث وعمّا يبحث، صِف دالةweb_search في مصفوفة tools ضمن طلب الدردشة، ونفّذ البحث بنفسك كلما استدعاها النموذج. يغلّف هذا البرنامج الطلب السابق في دالة مساعدة للبحث، ويُعيد النتائج إلى النموذج كرسالة tool، ويكرر ذلك حتى يجيب النموذج نصيًا:
- اقتطع الاستعلامات التي يكتبها النموذج. ترفض نقطة النهاية الاستعلامات التي تتجاوز 400 حرف بدلًا من تقصيرها، والنماذج تكتب أحيانًا استعلامات طويلة.
- أعِد الأخطاء كنتائج أداة. يتحول البحث الفاشل إلى رسالة أداة تبدأ بـ
Error:، فيتمكن النموذج من تجربة استعلام مختلف أو شرح سبب الفشل بدلًا من توقف الحلقة. - أضف رسالة المساعد قبل نتائج أدواتها. يجب أن تأتي كل رسالة
toolبعد دور المساعد الذي طلبها. كما أن إضافة كائن الرسالة نفسه يحافظ علىreasoning_contentالذي تُعيده نماذج الاستدلال مثل GLM 5.3 Flash، فيحتفظ النموذج باستدلاله عبر الجولات.
content في كل نتيجة على نص الصفحة، بما يصل إلى نحو 10,000 حرف، لذا يستطيع النموذج عادةً الإجابة من نتائج البحث وحدها. وعندما يحتاج إلى صفحة كاملة، أضف أداة ثانية تستدعي /augment/scrape، التي تُعيد الصفحة بصيغة Markdown.
البحث ثم التوليد
يتيح استدعاء الدوال للنموذج أن يقرر متى يبحث وعمّا يبحث. أما عندما يعرف الكود الخاص بك مسبقًا ما يجب البحث عنه، فيمكنك تجاوز حلقة الأدوات: نفّذ بحثًا واحدًا عبر Exa، ورقّم النتائج، واطلب من Venice الإجابة استنادًا إليها. يعمل هذا مع أي نموذج نصي في Venice، ولأنك تحتفظ بقائمة المصادر التي دخلت في المطالبة، فإن كل استشهاد في الإجابة يرتبط بعنوان URL. باستخدام دالة البحث المساعدة والعميل والنموذج من المثال السابق:"exa" لتشغيلها على Exa.
استخدام Exa API مباشرة
تأخذ نقطة نهاية البحث في Venice استعلامًا وعدد النتائج. أما واجهة Exa API نفسها فتوفر عناصر تحكم أكثر: فئات للأخبار والأوراق البحثية والشركات والأشخاص والتقارير المالية، وفلاتر للنطاقات والتواريخ، ومقتطفات مركّزة على الاستعلام ونص الصفحة الكامل، وبحثًا عميقًا متعدد الخطوات. لاستخدامها، استدعِ Exa مباشرة بمفتاح API من لوحة تحكم Exa. تنتقل هذه الطلبات من تطبيقك إلى Exa مباشرة، وتخضع لشروط Exa بدلًا من شروط Venice، وتُفوتَر على حسابك في Exa. يوفر Exa عدم الاحتفاظ بالبيانات في خطط Enterprise. تتضمن حزم Exa SDK، أيexa-py وexa-js الإصدار 2.24.0 أو أحدث، أدوات بتنسيق Chat Completions يمكن إدراجها مباشرة في الحلقة السابقة. استبدل قائمة الأدوات بأدوات Exa:
messages += exa.openai.handle_tool_calls(message) في Python، أو messages.push(...(await exa.openai.handleToolCalls(message))) في Node.js. ينفّذ ذلك كل استدعاء لـ Exa ويُعيد رسائل tool المطابقة، مع الإبلاغ عن حالات الفشل كنتائج Error:. أبقِ على الحد الأقصى لنص الصفحة، لأن exa-js يُعيد الصفحات كاملة دون حد. تُمرَّر الوسائط المسمّاة مثل category وinclude_domains وstart_published_date إلى بحث Exa. راجع دليل استدعاء الأدوات من Exa للاطلاع على جميع الخيارات.
النماذج الموصى بها
تتغير معرّفات النماذج بمرور الوقت. حدّد النموذج الافتراضي الحالي لاستدعاء الدوال وقت التشغيل باستخدام
GET /models/traits، أو تصفّح النماذج النصية للعثور على نماذج أخرى تدعم استدعاء الدوال.
الخصوصية
معsearch_provider: "exa"، يتواصل تطبيقك مع Venice فقط، وتنفّذ Venice كل عملية بحث عبر Exa مع عدم الاحتفاظ بالبيانات. لا تخزّن Venice محتوى المطالبات أو الاستجابات، ويحدد مستوى الخصوصية الخاص بالنموذج ما يحدث في طبقة الاستدلال. تعمل النماذج الخاصة على بنية تحتية لا تحتفظ بالبيانات.
الجانب الذي يسهل إغفاله هو أن النموذج يكتب استعلامات البحث انطلاقًا من المحادثة، لذا قد تنتهي تفاصيل من المطالبة داخل استعلام يُرسَل إلى Exa. إذا كانت المطالبات قد تحتوي على معلومات شخصية أو سرية، فاطلب من النموذج في مطالبة النظام إبقاء تلك التفاصيل خارج عمليات البحث، أو استخدم نمط البحث أولًا بحيث يكتب الكود الخاص بك كل استعلام.
إذا استدعيت Exa API مباشرة، فإن تلك الطلبات تذهب إلى Exa وتخضع لشروط Exa بدلًا من ذلك.
التكاليف
تكلّف كل عملية بحث $0.01، أي $10 لكل 1,000 عملية، وهو السعر نفسه لبحث Brave أو Google. تُفوتِر Venice ذلك على حسابك في Venice إلى جانب الرموز التي تستخدمها طلبات الدردشة، فلا توجد فاتورة منفصلة من Exa. لا تُحتسب عمليات البحث التي تفشل بخطأ، لكن البحث الذي يعود فارغًا يُحتسب. تعود نتائج البحث إلى النموذج كمدخلات في الجولة التالية، ولأنها تحمل نص الصفحات، فإن بحثًا بخمس نتائج يضيف غالبًا ما بين 5,000 و10,000 رمز إدخال. بعض العادات تساعد على خفض الأمرين:- خفّض
limitعندما تكفي مصادر قليلة. تكلفة البحث واحدة مهما كانت قيمةlimit، لكن النتائج الأقل تعني رموز إدخال أقل في الجولة التالية. - أبقِ
max_roundsمنخفضًا. كل جولة إضافية قد تضيف عمليات بحث ورموزًا. - استخدم نمط البحث أولًا عندما يعرف الكود الخاص بك ما يجب البحث عنه. فهو ينفّذ بحثًا واحدًا وطلب دردشة واحدًا بالضبط.
استكشاف الأخطاء وإصلاحها
خطأ 400 من نقطة نهاية البحث
خطأ 400 من نقطة نهاية البحث
يجب أن يكون
query من 1 إلى 400 حرف، وlimit من 1 إلى 20، ويجب أن تكون قيمة search_provider هي brave أو google أو exa. تُرفض القيم خارج هذه النطاقات بدلًا من تقليصها إلى الحدود. في حلقة الأدوات، يصل البحث المرفوض إلى النموذج كنتيجة أداة Error: بدلًا من إطلاق استثناء.402 Payment Required
402 Payment Required
رصيدك في Venice لا يغطي الطلب. الطلبات المُرسَلة بمفتاح API تُعيد
INSUFFICIENT_BALANCE، لذا اشحن رصيدك في Venice. أما الطلبات المُرسَلة بمصادقة محفظة x402 فتُعيد تعليمات الشحن في الاستجابة.خطأ 400 من Venice بعد جولة أدوات
خطأ 400 من Venice بعد جولة أدوات
بعض النماذج، ومنها نماذج Claude وGPT، تُعيد
400 عندما لا يتبع استدعاءَ الأداة رسالةُ tool تحمل tool_call_id الخاص به. تقبل نماذج GLM المحادثة على أي حال، لذا قد يظهر هذا لأول مرة عند تبديل النماذج. تجيب الحلقة على كل استدعاء مباشرة بعد رسالة المساعد التي أنشأته، فحافظ على هذه البنية إذا أضفت أدوات.النموذج يجيب دون أن يبحث
النموذج يجيب دون أن يبحث
تحقق من أن النموذج يدعم استدعاء الدوال، وحدّد في مطالبة النظام متى يجب البحث. غالبًا ما تتجاوز النماذج الأداة عندما تعتقد أنها تستطيع الإجابة من ذاكرتها، ما لم تطلب منها البحث عن الحقائق الحديثة أو المحددة.
الموارد
Web Search API
المعاملات، ومزوّدو البحث، ومخطط الاستجابة
الإجابات المدعومة بالاستشهادات
خط أنابيب كامل للبحث والاستخراج والاستشهاد على Venice
استدعاء الدوال
كيف تعمل استدعاءات الأدوات على Venice
وثائق Exa
واجهة Exa API نفسها، وحزم SDK، وخيارات البحث