内部AIエンドポイントの使用方法

セルフホスト型のDiscourseインスタンスで内部AI APIエンドポイント(LiteLLMなど)を適切に利用するための正しいアプローチは何でしょうか?

Dockerブリッジ、コンテナIP、および適切なSSL終端エンドポイント(Discourseがホストされているのと同じ公開IP宛)を有効にしてみましたが、うまくいきませんでした。内部ホストを許可設定にしましたが、Discourse内のLLM-AI UIでテストすると500エラーが発生します。

おそらく私の設定に問題があり、いくつかのミスをしたことは承知しています。そこで、コミュニティの皆様の助けを借りてこの問題を解決したいと思っています :slight_smile:

主なユースケースは、Discourseでデフォルトではサポートされていないためそのままでは使えなかったVertex AI(OpenAI)エンドポイントを試してみることですが、同時にLiteLLMがワークフローに追加するレイヤーも利用したいと考えています。

ログ:

FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: 解決されたすべてのIPが許可されていません)

同じサーバーで実行している場合、DISCOURSE_ALLOWED_INTERNAL_HOSTS 環境変数を使用して許可する必要があります。

UI での設定は、以前の記事 で見かけた方法に倣って行いました。app.yml ファイルの変数でも試してみましたが、まだエラーが発生しています。

認証情報は正しく、ホスト上から API エンドポイントを使用できる場合、何が問題なのでしょうか?さらにデバッグする方法はありますか?

app.yml には具体的にどのように追加しましたか?そこには IP アドレスかホスト名のどちらかが期待されています。

SSL付きのDiscourse(appコンテナ)内でエンドポイントをテストしたところ、正常に動作しましたが、Discourse AIのUIテストでは動作しませんでした。

プロバイダーとして「OpenAI」を使用し、URLには「https://llm.mydomain.tld/v1/chat/completions」を指定しています。認証情報は問題ありません:

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

変なことに、数週間もこの問題に取り組んでいるのですが。