以前の記事では、ChatGPTのLibraryに溜まった画像やファイルを整理・削除するツールについて、
8,000件を超えるファイルの走査テストや、チャットタイトル単位での削除機能などを紹介しました。
その後も実際のLibraryを使った検証を続けていましたが、今回はその中で
走査対象の取りこぼしにつながる欠陥を発見し、走査方式そのものを見直しました。
さらに、チャットを削除したあとにもLibrary側に残っている可能性がある
「残骸ファイル」のチェック・削除機能まで追加しています。
前回の記事はこちらです。
ChatGPT Library整理・削除ツール、8,000件超の走査やタイトル単位削除をテスト中
今回、走査の欠陥を発見しました
検証を続けている中で、ひとつ気になる点がありました。
ツールが走査したLibraryの総容量と、ChatGPT側で確認できるストレージ使用量に差があったのです。
調べていくと、従来の走査ではLibrary取得時に
video / audio / pdf / text / other
といったカテゴリを指定していました。
ところが、この指定にはimage(画像)が含まれていませんでした。
従来の走査方法では、Library内の画像ファイルが走査対象から漏れる場合があり、
ツール上の取得件数・総容量が実際のLibrary全体より少なくなる可能性がありました。
単純に「imageを追加する」方法も考えられましたが、
今後ChatGPT側で新しい種類やカテゴリが追加された場合、同じような取りこぼしが起きる可能性があります。
そこで今回は、特定カテゴリを固定して指定する方式をやめ、
ChatGPT Libraryの「すべて」を基準に、Library側から返されるファイルを走査する方式へ変更しました。
この変更後に改めて実機で確認したところ、
これまで漏れていた画像も走査対象に入り、
ツール側で確認できる総容量とChatGPT側のストレージ使用量がほぼ一致する状態まで確認できました。
走査方式も整理しました
現在の走査は、通常時にページごとの定期的な待機を入れず、
1ページの取得が終わったら次のページへ進む方式に整理しています。
一方で、429などの一時的なエラーが発生した場合の待機・再試行処理は残しています。
1回の走査では最大10,000ファイルまでを対象にしています。
走査中は取得ページ数、取得ファイル数、総容量、エラー件数、経過時間などを確認できます。
「4 残骸ファイル」を追加しました
全Libraryを改めて取得できるようになったことで、
次に気になったのが「チャットを削除したあともLibrary側に残っているファイル」です。
現在のツールでは、Libraryファイルが持つ元チャットの識別情報と、
現在取得できる通常チャット・アーカイブ済みチャットを照合し、
おおまかに次のように分類しています。
- 現存チャット所属:現在存在するチャットとの紐づきを確認できたもの
- 残骸候補:元チャットの情報はあるが、現在のチャット一覧と一致しないもの
- 所属不明:元チャットを判断する情報がないもの
- ID不足:削除処理に必要な識別情報が不足しているもの
ここでいう「残骸ファイル」は、必ずしも100%不要なファイルだと断定するものではありません。
そのため、ツール上でも「残骸候補」として判定し、
最終的な削除判断は利用者が行う形にしています。
残骸ファイルの削除にも対応
残骸チェックだけでなく、現在はそのまま削除処理まで行えるようにしています。
基本の残骸候補に加えて、
「所属不明ファイルも削除対象に含める」
「ID不足ファイルも削除を試行する」
という選択肢も用意しています。
ただし、削除前には
「削除は自己責任であること」と、
「選択したファイルがすべて削除できることを保証するものではないこと」
を確認する仕様にしています。
アップロード日で削除範囲を指定
残骸ファイルを大量にまとめて消すのではなく、
アップロード日を使って開始日~終了日を指定できるようにしました。
同じ日を開始日・終了日に指定して、その日だけを対象にすることもできます。
「所属不明」や「ID不足」を追加したことで対象期間が変わった場合は、
「対象期間を再計算」ボタンで、その時点の対象ファイルから最古日~最新日を取り直せます。
削除中の時間目安も表示
大量削除はどうしても時間がかかるため、
削除開始時刻、1件あたりの平均処理時間、終了予定時刻を1行で表示する機能も追加しました。
表示例:
最初の10件程度で処理速度を測定し、その後は処理が進むたびに平均時間と終了予定を更新します。
あくまで目安ですが、数百件単位の削除では「あとどのくらいかかりそうか」を確認しやすくなりました。
実機での検証結果(一例)
ここからは、現在のテスト環境で実際に行った検証結果の一例です。
PC環境、ネットワーク状況、ChatGPT側の応答状況などによって処理時間は変わるため、
速度を保証する数値ではありません。
全Library走査:5,787件 / 11.2GB
今回の走査例では、以下の結果になりました。
- 取得ページ:290ページ
- 取得ファイル:5,787件
- 総容量:11.2GB
- エラー:0件
- 所要時間:約7分25秒
残骸削除:835件を処理したときの途中経過
残骸ファイル835件を対象にした削除テストでは、
403件まで処理した時点で平均約7.9秒/件、
終了予定時刻も画面上に表示されていました。
残骸削除:188件のテスト
別のテストでは188件を対象に削除を実行しました。
途中の119件処理時点でも、平均処理時間と終了予定時刻を確認できています。
この188件のテストは最終的に、
188件処理 / 188件成功 / 失敗0件 / 試行不可0件で完了しました。
開始は12:04:55、終了は12:29:57だったため、
所要時間は約25分、1件あたりでは約8秒前後という結果でした。
削除時間はどのくらいかかる?
今回の実測結果では、残骸ファイルの削除は
1ファイルあたりおよそ8秒前後を目安として考えています。
単純に1ファイル=約8秒として計算すると、目安は次のようになります。
- 100件:800秒 = 約13分20秒
- 200件:1,600秒 = 約26分40秒
- 300件:2,400秒 = 約40分
- 1,000件:8,000秒 = 約2時間13分20秒
- 2,000件:16,000秒 = 約4時間26分40秒
このため、数百件であれば数十分程度ですが、
1,000件・2,000件と増えていくと数時間単位の処理になります。
さらに数千件規模になれば、環境やChatGPT側の応答状況によっては
半日~1日近い長時間処理になる可能性もあります。
もちろん、上記は今回の実測値を基準にした予想時間です。
通信状況、PC環境、ChatGPT側の応答時間などによって実際の処理時間は前後します。
ただし、必ず一度にすべて削除する必要はありません。
削除処理は途中で停止し、後日あらためて続けることも可能です。
ある程度削除が進んだ場合は、古い走査結果をそのまま使い続けるより、
もう一度「1 走査」を実行して現在のLibrary状態を取り直し、
最新の状態を基準に次の削除へ進む方が確実です。
特に削除を途中で停止した場合は、再度「1 走査」で最新状態を取得してから続ける運用を基本にしています。
ツール本体はほぼ完成段階へ
ここまでの改良で、Library全体の走査、タイトル単位の照合・削除、
残骸ファイルの判定・期間指定削除、長時間処理の時間目安表示など、
ツール本体の主要機能はほぼ完成段階まで来ました。
ただし、販売開始を急ぐのではなく、
今後2週間~1か月程度を目安に、実際のLibraryを使った継続テストを行う予定です。
特に、大量ファイル環境での長時間走査・削除、
途中停止後の再走査、エラー発生時の挙動などを引き続き確認していきます。
これからは販売準備・販促も進めます
ツール本体の開発と並行して、これからは正式販売に向けた準備も進めます。
- 商品ページの作成・調整
- 操作マニュアル・注意事項の整備
- 紹介用スクリーンショットや説明素材の作成
- ブログやSNSなどでの販促
- 購入・ライセンス認証を含めた最終確認
大きな問題が見つからなければ、継続テストと販売準備を進めたうえで正式販売へ移行する予定です。
まだ細かな調整は続きますが、
以前の「大量走査をテストしている段階」から、
実際に整理・削除を行うツールとしてかなり完成形に近づいてきました。
また進展があれば、開発状況を報告していきます。
