webappsの挙動について

お世話になっております。
※テキストベースでの質問とさせてください。
現在、Pluginでwebappsを作成しています。
body.html, app.js, backend.pyで定義してアプリケーションを動かしています。
backend.pyでLangGraphでワークフローを構築し、その中でAIエージェントを呼び出し、処理を行っています。
プロンプトを送信して回答を生成し、結果を返すという仕組みです。
そこで三点質問させてください。
プロンプトを送信したのは、一回にもかかわらず何度もbackend.pyにリクエストが送られています。
これはwebappsの挙動として正しいでしょうか。
一度、リクエストをbackend.pyに送った後は回答が返ってくるまで、重複してリクエストを送らないようにしたいのですが可能でしょうか。
また、webapps上のフロント画面のデバッグを行いたいのですが、ブラウザの開発者ツールのようなリクエストの詳細なログをトレースできるき機能はございますでしょうか。
Answers
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 266 Dataiker
以下、コメントさせていただきます。
プロンプトを送信したのは、一回にもかかわらず何度もbackend.pyにリクエストが送られています。
これはwebappsの挙動として正しいでしょうか。→ (Webappの実装内容に応じて、正しい挙動は変わるものと考えられますが)通常は想定に反して何度もbackend.pyにリクエストが送信されることはないと考えられます。
一度、リクエストをbackend.pyに送った後は回答が返ってくるまで、重複してリクエストを送らないようにしたいのですが可能でしょうか。
→ まずは実装内容の確認が必要ですが、例えば、重複してリクエストを送信しないようにJavaScriptの実装を改善するなどの対応は可能と考えられます。
また、webapps上のフロント画面のデバッグを行いたいのですが、ブラウザの開発者ツールのようなリクエストの詳細なログをトレースできるき機能はございますでしょうか。
→ Dataiku側では、Webappsフロント画面のデバッグ機能は特に提供しておりませんが、DataikuのWebappsはWebブラウザ上で開発・プレビュー可能です。このため、ご記載のように、Google Chrome等Webブラウザの開発者ツールを利用したデバッグが可能と考えられます。
-
ご返信いただきありがとうございます。
ご指摘いただいた内容も含めて再度コードを確認してみます。
お忙しい中、アドバイスいただきありがとうございます。 -
河原崎様
先日はご返信いただき、誠にありがとうございます。
重ねてで恐縮ですが、もう一点ご確認させてください。webappsにおいてプロンプトを受け取ってから、裏で処理を進める際のタイムアウト値のデフォルト設定などはございますでしょうか。
Dataikuがマネージドしている範囲で、タイムアウト値の設定等がればご教示いただきたいです。 -
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 266 Dataiker
@長戸 さん、お世話になっております。以下、回答させていただきます。
以下コメントに記載のように、Webappがバックエンド処理を呼び出す場合のタイムアウト値は、デフォルトで60秒が設定されているようです。(この値の変更は不可となります。)
https://community.dataiku.com/discussion/26764/timeout-in-a-plugin-converted-from-webappそこで、Webappから長時間処理が必要な処理を呼び出したい場合、(Webappの実装内容、利用するプログラミング言語によって対応方法は変わりますが)以下コメントに記載のように、プログラム側で非同期処理を実装する必要があると考えられます。
https://community.dataiku.com/discussion/31476/timeout-with-dash-webapp-as-model-view-in-plugin -
河原崎様
ご返信ありがとうございます。
内容について確認いたします。 -
お世話になっております。
app.jsからbackend.pyを呼び出す際に、非同期処理をはさむことで問題を解決することができました。
フロント側で処理が終了するのを待機するのではなく、制御をフロント側に返して、フロント側からPollingする形でバックエンドの処理を受け取る形にしました。ご協力いただきありがとうございました。