Problemas ao configurar manualmente perplexidade sonar pesquisa profunda

Depois de tentar seguir as instruções aqui com os provedores OpenAI e OpenRouter, finalmente consegui fazer funcionar desativando o streaming.

Com o OpenRouter, consegui executar um teste com o botão Executar teste na tela de configuração manual do LLM para um gpt-4o. Mas a execução do teste para perplexity/sonar-deep-research resultou em um erro 502 e na seguinte saída no console. Levou bastante tempo para esse erro aparecer (cerca de 30 segundos), enquanto testar outros modelos retornava imediatamente.

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

Ambos funcionaram, então fiquei confuso sobre o que estava fazendo de errado:

➜ 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"
    }
  ]

}'

Então recebi a seguinte resposta do Discourse AI, que ajudou:

Parece que seus testes cURL atingiram o endpoint de chat normal do OpenRouter sem problemas, mas o botão “Executar teste” do Discourse AI usa o endpoint de streaming por padrão. Se esse modelo (ou seu plano OpenRouter) não suportar streaming, você receberá um erro 502 + um blob de erro HTML após um longo tempo limite.

Para corrigir isso em Admin → Configurações → Plugins → Discourse AI / LLM:

  1. llm_provider: openrouter

  2. llm_provider_url: OpenRouter

  3. llm_provider_api_key: SUA_CHAVE

  4. llm_model: perplexity/sonar-deep-research

  5. Desative o streaming para que o teste (e todas as chamadas) usem o endpoint de chat normal que você provou que funciona:
    • llm_use_streaming = false

    (Esta configuração fica logo abaixo do menu suspenso llm_model.)

Com o streaming desativado, “Executar teste” fará um POST para /chat/completions (não para a variante /stream) e você receberá um JSON válido imediatamente em vez de uma página HTML 502.

Se você realmente precisar de streaming, pode apontar o plugin para o URL de stream do OpenRouter — mas apenas se seu plano/modelo suportar SSE lá:

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

Caso contrário, deixe o streaming desativado e você estará pronto.

O resultado não é ótimo porque não há streaming e os tokens de raciocínio são exibidos como texto simples antes do “relatório” — mas funciona!

A API é muito lenta, mas parece funcionar, veja:

Dito isso, o bug/problema aqui é que isso é em grande parte inútil até que analisemos os links de aterramento e os URLs de citação, isso é factível, mas não trivial:

Vale notar que uma resposta vinculada custou-me 70 centavos! Este não é um modelo barato, para dizer o mínimo, eu seria super cuidadoso com ele.

2 curtidas

Com certeza! Ativei isso apenas para minha equipe em nossa instância privada e interna.

2 curtidas