知識ベースのプレビューでは呼び出せるのに、チャット画面を開くとエラーになる

ナレッジベースのプレビューではナレッジベースを呼び出せますが、チャットインターフェースを開くとエラーが発生します。
これはまた何の問題でしょうか、解決策はありますか。ローカルLANに切り替えると発生しますが、パブリックネットワークではテストしていないため、ネットワークアドレスの切り替えが原因かどうかは不明です。

@Dify_Forum_Helper 見てみてください

あなたのスクリーンショットの英語のプロンプトを見ると、おおよそ次のとおりです。

> Conversation Not Exists. You have requested this URL /console-api/installed-apps/…/messages but did you mean /console-api/installed-apps/{installed_app_id}/messages

つまり、フロントエンドがチャットページを開く際に、誤った conversation_id または installed_app_id を含むAPIアドレスをリクエストし、バックエンドが対応するセッションを見つけられずにエラーが発生しています。

「ナレッジベースのプレビューではナレッジベースを呼び出せるが、チャット画面を開くとエラーになる」「ローカルLANに切り替えた後に発生する」というあなたの説明と合わせると、最も疑わしいのは:アクセスアドレスまたはリバースプロキシの設定が変更され、フロントエンドが記憶していた古いURL / セッション情報が無効になったことです。

以下にトラブルシューティングと解決の手順を提示しますので、順番にお試しください。


1. まず最も簡単な検証を行う

  1. ブラウザを変更 / シークレットモードでコンソール → アプリ → チャット画面を再度開く
    • シークレットモードで全てが正常であれば、以前ブラウザにキャッシュされていた conversation_id/URL のいずれかが無効になっている可能性が高いです。
  2. 同じサーバー、同じローカルIP上で、全く新しいアプリケーションを作成し(または元のアプリケーションを複製し)、直接チャットページに入る
    • 新しいアプリケーションが正常であれば、問題は古いセッションまたは古いリンクに集中していることを示しています。

2. ブラウザの状態をクリアする

  • 現在のページを閉じ、以下をクリアします:
    • 現在のサイトの LocalStorage / SessionStorage
    • 現在のサイトの Cookie & キャッシュ
  • その後、新しいアドレス(例:http://ローカルIP:ポート または http://あなたのローカルドメイン)でDifyに再ログインし、
    このナレッジベースアプリケーションの「会話」画面を再度開きます。

多くの場合、パブリックドメインからローカルIPに切り替えた後も、ブラウザには以前のドメインで保存されたセッションIDが残っており、
フロントエンドが引き続き古い会話をリクエストし、バックエンドが見つけられない場合に「Conversation Not Exists」というエラーが発生します。


3. 「外部ドメイン → 内部デプロイ」の切り替えを確認する

もしあなたがこのような状況であれば:

  • 以前はパブリックドメイン(例:https://xxx.com)でアクセスしていた
  • 現在はローカルIPまたは別のドメイン(例:http://192.168.x.x:8080)で直接アクセスしている

ご注意ください:

  1. .env または docker-compose 内の外部アクセスアドレスが一致しているか確認する
    例えば、一部のデプロイでは CONSOLE_API_URLWEB_URLCONSOLE_URL などの環境変数が設定されていますが、
    アクセス方法(ドメイン/IP)を変更しても、これらの変数が古いドメインを指している場合、フロントエンドがAPIアドレスを誤って構築する可能性があります。

  2. Nginx / その他のプロキシを使用している場合:

    • プロキシの パス転送/console-api/installed-apps/* を完全にバックエンドに転送しているか確認する
    • 余分なパスプレフィックスによってパスが不一致になっていないか注意する。例えば:
      • http://192.168.x.x/dify/ でアクセスしているが、リバースプロキシで対応するプレフィックス処理が行われていない場合

4. 「古いリンク」からアクセスしていないか確認する

一部のユーザーは:

  • ブラウザに古い「セッションURL」をブックマークしている
  • または「会話中のURL」を直接コピーして他の人に送ったことがある

ネットワークを切り替えたり、アドレスを変更したりした後、このリンクに含まれるIDがバックエンドに存在しなくなっている可能性があります。
このリンクからアクセスすると、あなたのスクリーンショットのようなエラーが発生します。

推奨事項:

  1. まずDifyのコンソールホームに戻る
  2. 左側のメニューから「アプリケーション」に再度入り、あなたのアプリケーションを見つける
  3. 「会話」または「デバッグ」のエントリをクリックして再度入り、古いブックマークを使用しないこと。

5. バックエンドのログでより具体的な原因がわかる

サーバーログを見る権限がある場合、エラー発生時に以下を確認できます:

  • APIコンテナのログに 404 Conversation Not Exists または類似のメッセージがあるか
  • リクエストパスが以下に類似しているか確認する:
    • /console-api/installed-apps/<何らかのID>/messages/<何らかの会話ID>
      パス内の installed_app_id または conversation_id が明らかに空、null、または全く存在しない場合、フロントエンドが誤ったIDを使用していることを示しています。

6. 上記の方法で解決しない場合、これらの情報を補足してください

このスレッドに以下の項目を補足していただければ、より正確な判断ができます:

  1. あなたのDifyのバージョン番号(コンソール右下または docker-composeimage tag
  2. 現在Difyにアクセスしている完全なURL形式(例:http://192.168.1.100:3000 またはパスプレフィックス付き)
  3. このエラーは:
    • すべてのアプリケーションのチャット画面で発生しますか、それとも
    • このナレッジベースアプリケーションのみで発生しますか?
  4. パブリックドメインでアクセスした場合は問題なく、ローカルIPに切り替えるとエラーが発生しますか、それとも両方でエラーが発生しますか?

まず、1〜3の手順で「ブラウザ変更/シークレットモード + キャッシュクリア + コンソールからアプリケーションに再アクセス」を試してください。
多くの「Conversation Not Exists」は、古いセッション / 古いドメインのキャッシュが原因で発生します。
それでも解決しない場合は、上記の環境情報を貼り付けていただければ、設定とバージョン互換性の方向からさらに調査します。