Wie verwendet man interne KI-Endpunkte?

Ich frage mich, welcher der richtige Ansatz ist, um interne KI-API-Endpunkte (wie LiteLLM) auf selbst gehosteten Discourse-Instanzen zu nutzen.

Ich habe versucht, Docker-Bridge, Container-IPs und ordnungsgemäß SSL-terminierte Endpunkte (zur gleichen öffentlichen IP, auf der Discourse gehostet wird) zu aktivieren, aber nichts funktioniert. Ich habe interne Hosts erlaubt, erhalte aber beim Testen in der LLM-AI-Benutzeroberfläche innerhalb von Discourse einen 500-Fehler.

Es hängt wahrscheinlich mit meiner eigenen Konfiguration zusammen, und ich weiß, dass ich wahrscheinlich einige Fehler gemacht habe. Ich hoffe also, dies mit Hilfe der Community zu lösen :slight_smile:

Unser Hauptanwendungsfall ist es, Vertex AI (OpenAI)-Endpunkte auszuprobieren, die auf Discourse nicht sofort funktioniert haben, weil sie nicht unterstützt werden. Aber wir möchten auch die Schicht, die LiteLLM zu unserem Workflow hinzufügt.

Logs:

FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: alle aufgelösten IPs waren nicht erlaubt)

Wenn Sie es auf demselben Server ausführen, müssen Sie es über die Umgebungsvariable DISCOURSE_ALLOWED_INTERNAL_HOSTS erlauben.

Ich habe es in der UI so gemacht, wie ich es in einem vorherigen ähnlichen Beitrag gesehen habe. Ich habe es auch mit der Variable in meiner app.yml-Datei versucht, aber der Fehler tritt weiterhin auf.

Was könnte falsch sein, wenn meine Zugangsdaten in Ordnung sind und ich den API-Endpunkt auf dem Host verwenden kann? Kann ich noch mehr debuggen?

Wie genau hast du es in die app.yml eingefügt? Sie erwartet entweder eine IP-Adresse oder einen Hostnamen.

Nun, ich habe den Endpunkt mit SSL innerhalb von Discourse (App-Container) getestet, und er funktioniert, aber nicht im Test der Discourse AI-Benutzeroberfläche.

Ich verwende den Anbieter ‘OpenAI’ mit der URL ‘https://llm.mydomain.tld/v1/chat/completions’. Die Anmeldeinformationen sind korrekt:

/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' 

Es ist seltsam, und ich versuche seit Wochen, das Problem zu lösen.