Mi chiedo quale sia l’approccio giusto per utilizzare endpoint API AI interni (come LiteLLM) su istanze self-hosted di Discourse.
Ho provato ad abilitare il bridge Docker, gli IP dei container e endpoint SSL terminati correttamente (verso lo stesso IP pubblico su cui è ospitato Discourse), ma nulla funziona. Ho consentito gli host interni, ma ricevo un errore 500 quando provo a testare l’interfaccia LLM-AI all’interno di Discourse.
Probabilmente è legato alla mia configurazione e so di aver probabilmente commesso alcuni errori. Quindi spero di risolvere la questione con l’aiuto della comunità
Il nostro caso d’uso principale è provare gli endpoint di Vertex AI (OpenAI) che non funzionavano “out of the box” su Discourse perché non supportati. Vogliamo anche mantenere il livello che LiteLLM aggiunge al nostro flusso di lavoro.
Log:
FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: tutti gli IP risolti sono stati considerati non consentiti)
L’ho fatto nell’interfaccia utente come ho visto in un post simile precedente. Ho anche provato con la variabile nel mio file app.yml, ma ricevo ancora l’errore.
Cosa potrebbe non funzionare se le mie credenziali sono corrette e posso utilizzare l’endpoint API sull’host? Posso eseguire ulteriori debug?
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:182:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open_ai_shared.rb:28:in 'DiscourseAi::Completions::Endpoints::OpenAiShared#perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:214:in 'DiscourseAi::Completions::Llm#generate'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:46:in 'Pitchfork::SoftTimeout::Request#interrupt'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:94:in 'block (2 levels) in Pitchfork::SoftTimeout#create_timeout_thread'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:93:in 'Array#each'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:93:in 'block in Pitchfork::SoftTimeout#create_timeout_thread'
È strano e ci sto provando da settimane.
Ho già provato questo:
MODIFICA 1:DISCOURSE_ALLOWED_INTERNAL_HOSTS: 172.16.X.X(IP del contenitore LiteLLM, 127.0.0.1 e l’host del dominio LLM con terminazione SSL, che capisco non debba essere incluso qui)
MODIFICA 2: E vedo lo stesso errore 500 quando provo ad accedere per configurare il mio server MCP (configurazione della scheda discourse-ai di MCP).
L’ho già fatto come ho scritto prima, ma nulla funziona e chiedo gentilmente come eseguire un debug più approfondito, perché si tratta di qualcosa di strano.
Questo endpoint funziona all’interno dell’applicazione del container Discourse, ma non dall’interfaccia utente di Discourse così com’è.