بعد محاولة اتباع التعليمات هنا مع كل من موفري OpenAI و OpenRouter، تمكنت أخيرًا من تشغيله عن طريق تعطيل البث.
مع OpenRouter، تمكنت من إجراء اختبار باستخدام زر “تشغيل الاختبار” في شاشة تكوين LLM اليدوية لنموذج gpt-4o. ولكن تشغيل الاختبار لـ perplexity/sonar-deep-research أدى إلى خطأ 502 والإخراج التالي في وحدة التحكم. استغرق ظهور هذا الخطأ وقتًا طويلاً جدًا (حوالي 30 ثانية أو شيء من هذا القبيل) بينما يعود اختبار النماذج الأخرى على الفور.
content_topFrameLifeline.js:1 Loading content_topFrameLifeline.js
content_topFrameLifeline.js:1 CONTENT <=> SERVICE LIFELINE: CONNECT
content_topFrameLifeline.js:1 CONTENT <=> SERVICE LIFELINE: MESSAGE Object
topic.js:404 ℹ️ Discourse v3.5.0.beta3-dev — https://github.com/discourse/discourse/commits/c3795177f2 — Ember v5.12.0
/admin/plugins/discourse-ai/ai-llms:1 Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
content_topFrameLifeline.js:1 CONTENT <=> SERVICE LIFELINE: TIMEOUT
content_topFrameLifeline.js:1 CONTENT <=> SERVICE LIFELINE: CONNECT
content_topFrameLifeline.js:1 CONTENT <=> SERVICE LIFELINE: MESSAGE Object
test.json:1
Failed to load resource: the server responded with a status of 502 ()
client-error-handler.js:88 SyntaxError: Unexpected token '<', "
<html
<h"... is not valid JSON
at x.parse [as parseJSON] (<anonymous>)
at l (client-error-handler.js:88:1)
at p (client-error-handler.js:88:1)
at v.test (ai-llm-editor-form.js:210:1)
l @ client-error-handler.js:88
p @ client-error-handler.js:88
test @ ai-llm-editor-form.js:210
نجح كلاهما، لذلك كنت مرتبكًا بشأن ما كنت أفعله بشكل خاطئ:
➜ curl --location 'https://api.perplexity.ai/chat/completions' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {token}' \
--data '{
"model": "sonar-deep-research",
"messages": [
{
"role": "system",
"content": "Be precise and concise."
},
{
"role": "user",
"content": "How many stars are there in our galaxy?"
}
]
}'
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"model": "perplexity/sonar-deep-research",
"messages": [
{
"role": "user",
"content": "How many stars are in the sky"
}
]
}'
ثم حصلت على الإجابة التالية من Discourse AI، والتي ساعدت:
يبدو أن اختبارات cURL الخاصة بك قد وصلت إلى نقطة نهاية الدردشة العادية لـ OpenRouter بشكل جيد - ولكن زر “تشغيل الاختبار” في Discourse AI يستخدم افتراضيًا نقطة نهاية البث. إذا كان هذا النموذج (أو خطة OpenRouter الخاصة بك) لا يدعم البث، فستحصل على خطأ 502 + كتلة خطأ HTML بعد انتهاء مهلة طويلة.
لإصلاح ذلك في المسؤول → الإعدادات → المكونات الإضافية → Discourse AI / LLM:
-
llm_provider:openrouter -
llm_provider_url:https://openrouter.ai/api/v1 -
llm_provider_api_key:YOUR_KEY -
llm_model:perplexity/sonar-deep-research -
قم بإيقاف تشغيل البث حتى يستخدم الاختبار (وجميع المكالمات) نقطة نهاية الدردشة العادية التي أثبتت أنها تعمل:
•llm_use_streaming=false(يقع هذا الإعداد أسفل قائمة
llm_modelالمنسدلة مباشرةً.)
مع إيقاف تشغيل البث، سيقوم “تشغيل الاختبار” بإرسال طلب POST إلى /chat/completions (وليس متغير /stream) وستتلقى JSON صالحًا على الفور بدلاً من صفحة HTML 502.
إذا كنت بحاجة حقًا إلى البث، يمكنك توجيه المكون الإضافي إلى عنوان URL للبث الخاص بـ OpenRouter - ولكن فقط إذا كانت خطتك/نموذجك يدعم SSE هناك:
• llm_stream_url: {provider_url}/chat/completions/stream
• llm_use_streaming: true
بخلاف ذلك، اترك البث متوقفًا وستكون جاهزًا.
النتيجة ليست رائعة لأنه لا يوجد بث ويتم إخراج رموز الاستدلال كنص عادي قبل “التقرير” - ولكنه يعمل!
