FessのAIチャット利用回数とLLMトークンを分析する

Fessの検索ログ分析に「AIチャット」タブが追加されました。検索の利用回数とは別に、チャットの利用回数、応答時間、エラー率、LLMのトークン使用量を確認できます。文書を指定して質問するチャットも対象です。

チャット単位で利用状況を記録する

新しいfess_log.chat_logインデックスに、チャットクライアントへ到達したリクエストごとに1件記録します。質問と回答の本文はこの利用ログに保存しません。一方、ユーザー、ロール、セッション識別子、モデル、意図、応答時間、成功・エラー・キャンセル、LLM呼び出し数などは記録します。

通常の検索ログには、チャット1回で複数回の検索が記録されたり、文書チャットでは検索がなかったりします。専用ログにより、チャット回数として集計できるようになります。本文形式の不正、レート制限、未知の文書など、チャットクライアントへ到達する前の拒否は対象外です。

初期値と保管方法

fess_config.propertiesの初期値は次のとおりです。

rag.chat.log.enabled=true
logging.chat.max.queue.size=10000

チャットログの記録は初期状態で有効です。無効にする場合はrag.chat.log.enabled=falseにします。RAGチャット自体の初期値rag.chat.enabled=falseとは別の設定です。

ログはキューへ入れ、既存の毎分のログ保存処理で書き込みます。そのため直後に集計へ反映されるとは限りません。保持期間は検索ログと同じpurge.searchlog.dayを使い、バックアップの対象にも追加しています。本文は記録しませんが利用者のメタデータは残るため、管理権限と保持期間を運用に合わせて確認してください。

集計で確認できること

リクエスト数、ユーザー数、トークン合計、平均応答時間、エラー率を前期間と比較できます。推移やユーザー別・意図別・モデル別の表はCSVで出力できます。ストリームの切断はキャンセルとして扱い、エラー率には含めません。

トークン数はLLMプラグインが報告した場合だけ記録します。このPR時点では、ストリーミングのトークン通知はプラグイン側の後続対応が必要です。通知のない呼び出しは回数だけ計上するため、表示されたトークン数を実際の全使用量や請求額と同一視しないでください。ユーザー情報の記録が無効な場合、ユーザー数は0となります。

標準の使用量収集経路を通らずLLMを直接呼ぶ独自プラグインも集計対象外になる場合があります。利用回数の把握と、プロバイダーの利用明細を照合する入口として使えます。

利用できるバージョン

Fess 15.9.0に含まれる予定の機能になります。現時点では、まだ、リリースしていないので、今後のテストで変更される可能性もあります。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です