パープレキシティソナーの手動設定に関する問題と深い研究

指示に従って、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 エラー ブロブが表示されます。

Admin → Settings → Plugins → Discourse AI / LLM で修正するには:

  1. llm_provider: openrouter

  2. llm_provider_url: OpenRouter

  3. llm_provider_api_key: YOUR_KEY

  4. llm_model: perplexity/sonar-deep-research

  5. ストリーミングをオフにして、テスト(およびすべての呼び出し)が通常のチャットエンドポイントを使用するようにします。
    • llm_use_streaming = false

    (この設定は llm_model ドロップダウンのすぐ下にあります。)

    ストリーミングをオフにすると、「テストを実行」は /chat/completions/stream バリアントではない)に POST し、502 HTML ページではなく有効な JSON がすぐに返されます。

ストリーミングが必要な場合は、プラグインを OpenRouter のストリーム URL にポイントできます。ただし、プラン/モデルがそこで SSE をサポートしている場合に限ります。

• llm_stream_url: {provider_url}/chat/completions/stream
• llm_use_streaming: true

それ以外の場合は、ストリーミングをオフのままにしておけば完了です。

結果はあまり良くありません。ストリーミングがなく、推論トークンが「レポート」の前にプレーンテキストとして出力されるためですが、機能します!

APIは非常に遅いですが、機能しているようです。以下を参照してください。

とはいえ、ここでのバグ/問題は、グラウンディングリンクと引用URLを解析するまで、ほとんど役に立たないということです。これは実現可能ですが、簡単ではありません。

なお、リンクされた返信の1つは70セントかかりました!少なくとも安価なモデルではありません。これには非常に注意してください。

「いいね!」 2

確かに!これは、プライベートな内部インスタンスでのみ、チームのために有効にしました。

「いいね!」 2