Je me demande quelle est la bonne approche pour utiliser des points de terminaison d’API IA internes (comme LiteLLM) sur des instances Discourse auto-hébergées.
J’ai essayé d’activer le pont Docker, les adresses IP des conteneurs et des points de terminaison terminés par SSL (vers la même adresse IP publique où Discourse est hébergé), mais rien ne fonctionne. J’ai autorisé les hôtes internes, mais j’obtiens une erreur 500 lors du test sur l’interface utilisateur LLM-AI de Discourse.
C’est probablement lié à ma propre configuration, et je sais que j’ai probablement fait quelques erreurs. J’espère donc résoudre ce problème avec l’aide de la communauté
Notre cas d’utilisation principal est d’essayer les points de terminaison Vertex AI (OpenAI) qui ne fonctionnaient pas nativement sur Discourse car ils ne sont pas pris en charge. Mais nous voulons aussi la couche que LiteLLM ajoute à notre flux de travail.
Logs :
FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: toutes les IP résolues étaient interdites)
Je l’ai fait via l’interface utilisateur comme je l’ai vu dans un post similaire précédent. J’ai également essayé avec la variable dans mon fichier app.yml, mais l’erreur persiste.
Qu’est-ce qui peut ne pas aller si mes identifiants sont corrects et que je peux utiliser le point de terminaison de l’API sur l’hôte ? Puis-je faire plus de débogage ?
Bon, j’ai testé le point de terminaison avec SSL dans Discourse (conteneur de l’application) et cela fonctionne, mais pas depuis le test de l’interface utilisateur de Discourse AI.
/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'
C’est étrange, et j’essaie de résoudre le problème depuis des semaines.
J’ai déjà essayé ceci :
MODIFICATION 1 :DISCOURSE_ALLOWED_INTERNAL_HOSTS: 172.16.X.X(Adresse IP du conteneur LiteLLM, 127.0.0.1 et l’hôte du domaine LLM avec terminaison SSL, je comprends qu’il n’est pas nécessaire de l’ajouter ici)
MODIFICATION 2 : Et je vois la même erreur 500 lorsque j’essaie d’accéder à la configuration de mon serveur MCP (configuration de l’onglet discourse-ai du serveur MCP).
Je l’ai déjà fait comme je l’ai écrit précédemment, rien ne fonctionne et je vous demande gentiment comment déboguer davantage car il s’agit de quelque chose d’étrange.
Ce point de terminaison fonctionne dans l’application conteneurisée Discourse, mais pas dans l’interface utilisateur de Discourse.