ホームへ戻る

GitHub Repo

Difyコミュニティ、音声ツールの使用量分類に不具合を報告 ジェネレーターの遅延実行でソース情報が失われる

10月29日のDifyコミュニティの報告によると、組み込みの音声認識・音声合成ツールで、モデル使用量がaudioではなくUNKNOWNに分類される可能性がある。Pythonのジェネレーターと使用量追跡のライフサイクルに関わる問題で、確認時点では課題は未解決のまま。実際の課金への影響は未確認。

The original uploader was Ggia at Greek Wikipedia. · CC BY-SA 2.5 · Image source
zh-Hant

Difyコミュニティは10月29日、使用量追跡の不具合を報告した。組み込みの音声認識(ASR)と音声合成(TTS)ツールはジェネレーター関数を使うが、使用量のソースを記録するデコレーターのスコープが、ツールの実行前に終了する可能性があるという。報告の対象は同日のメインブランチのコミット e5acabc3d。翌日には「1.18.0 Bugs」ラベルが付けられ、確認時点で課題は未解決だった。課題と再現手順

鍵となるのは、「ジェネレーターの取得」と「ジェネレーターの実行」が別のタイミングで起きることだ。Pythonの公式ドキュメントによると、ジェネレーター関数を呼び出しても返されるのはイテレーターであり、関数本体は next() などの操作を行うまで実行されない。そのため、デコレーターが with ブロック内で関数を呼び出してすぐに戻るだけなら、ブロックは先に終了し、その後の反復処理では設定済みのコンテキストを利用できなくなる。Pythonのジェネレーターの仕様

報告者が提示したASRのテスト出力では、モデルマネージャーが取得した使用量メタデータは None だった。反復処理の間もコンテキストを維持するよう変更すると、ソースとして audio が取得できたという。報告によると、このスナップショットの差により、使用量のソースが UNKNOWN になる。公開されている根拠は主に投稿者によるコード分析とテスト出力で、独立した再現例はまだなく、請求額に誤りが生じたことも証明されていない。報告の詳細

運用担当者にとって注目すべきなのは、音声関連コストの追跡可能性だ。ソース分類が誤ると、機能別の使用量分析で音声の割合が実際より低く見積もられる可能性がある。これは報告された仕組みから導かれるリスクであり、実際の影響範囲はデプロイ済みのバージョンと使用量記録を照合して確認する必要がある。エンジニアリング上の検証では、イテレーターを実際に消費しなければならない。ジェネレーターオブジェクトを作成するだけでは、モデル呼び出しまで到達しない。

投稿者は、デコレーターが反復処理全体をカバーするようにするか、2つのツールの実行本体へコンテキストを移すことを提案している。今後の修正では、正常終了、例外、途中終了の各ケースでコンテキストが正しく復元されるかを確認する必要がある。Pythonでジェネレーターを閉じる際には、保留中の finally ブロックが実行されるため、クリーンアップ経路も検証が必要だ。修正案、Pythonの終了動作

出典

  1. Dify issue #45085:generator-based ASR/TTS tools lose credit usage context
  2. Python 語言參考:Yield expressions