1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実録】ChatGPTが勝手に判断して会社の共有ドライブのファイルを消し始めた話

1
Posted at

AIにコードを書かせていたら、指示していないのに共有ドライブのファイルを消し始めた。
実際にやらかした話と、そこから得た教訓をまとめる。

AIにコードを書かせるのって、便利なんですよ。本当に。

でも**「自分が指示してないことを、AIが勝手にやる」**という恐怖を、私は身をもって学びました。

笑えるようになったのはだいぶ後です。当時は笑えませんでした。金曜日だったので。

事件の背景
Google ColabとPythonで、ちょっとしたファイル操作系の処理を書いていました。

内容は省略しますが、要は「うまく動かない → ChatGPTに相談 → コードを修正してもらう」を繰り返していた、よくある開発セッションです。

ここまでは完全に平和。何も問題ない。

ChatGPTが「忖度」し始めた
試行錯誤を重ねるうち、処理がうまくいかないタイミングがありました。

そのときChatGPTが勝手に「容量が足りないのでは?」と判断したのです。

私は一切「ファイルを消して」とは言っていません。

でもChatGPTは良かれと思って、スペースを確保するためのクリーンアップ処理をコードにこっそり忍び込ませていました。

そしてもう一つの問題。

ChatGPTは「マイドライブ」と「共有ドライブ」を区別していませんでした。

実行した
コードを貼って、実行しました。

最初は普通に動いているように見えました。

ただ、なんか処理が長い気がする、と思ったんですよね。

「あれ、いつもより時間かかってる?」

そう思ってログを眺め始めた瞬間、目に飛び込んできたのが:

削除中: ◯◯_会議資料_2023.xlsx
削除中: ××_プロジェクト管理表.xlsx
削除中: △△_顧客リスト.csv
削除中: ...

copy
全部、身に覚えのないファイル名でした。

0.5秒で状況を理解した
マイドライブではなく、共有ドライブのファイルが消えていました。

止めました。即座に。

でも止めた時点で、すでにかなりの数のファイルが消えていました。

金曜日だった
これが致命的でした。

金曜日の夕方、しかも周りはほぼ退勤済み。

青ざめながら、一人でゴミ箱を漁りました。

Googleドライブのゴミ箱から、消えたファイルを一つずつ復元しました。

誰にも気づかれないように。静かに。ひたすらに。

全件復元できたことを確認して、ようやく退勤したのは、かなり遅い時間でした。

月曜日、誰も何も言っていなかったので、おそらくバレていません。たぶん。

何がまずかったのか(教訓パート)
笑い話で終わらせないために、ちゃんと整理します。

① AIは「良かれと思って」動く
今回のミスの本質は、私が「消して」と言ったのではなく、AIが状況を判断して自律的に行動したことです。

ChatGPTは悪意を持っていません。「容量が足りなさそうだからクリーンアップしよう」という、一見まっとうな判断をしただけです。

でもその判断が、とんでもない結果を招きました。

② システムプロンプトに「禁止事項」を明示する
これが今回の最大の教訓です。

ファイル操作系のコードをAIに書かせるときは、最初のプロンプトに必ず入れましょう:

【重要な制約】
・ファイルの削除は絶対に行わないこと
・既存ファイルの上書きも行わないこと
・読み取りと書き込み(新規作成)のみ許可する

copy
AIは「言われてないこと」を勝手に補完します。 禁止事項は「察してくれる」ものではなく、明示して初めて機能します。

③ 共有ドライブを扱うなら、スコープを意識する
Google Drive APIはデフォルトで広いスコープを持ちます。 「マイドライブだけ触りたい」なら、コード側でちゃんと制限を入れる必要があります。

共有ドライブを除外するクエリ例

results = service.files().list(
q="'root' in parents and trashed = false",
includeItemsFromAllDrives=False, # 共有ドライブを除外
supportsAllDrives=False,
fields="files(id, name)"
).execute()

copy
④ 破壊的な操作には必ずドライラン
削除・移動・上書きを伴う処理は、まず「何をするつもりか」だけ表示するドライランを挟む習慣を。

DRY_RUN = True # 本番実行前にFalseに変える

for file in files:
if DRY_RUN:
print(f"[DRY RUN] 削除予定: {file['name']}")
else:
service.files().delete(fileId=file['id']).execute()

copy
まとめ
AIに「やっていいこと」を教えるだけでは足りない。「やってはいけないこと」も明示する。

今回のケースで私が悪かったのは、ファイルを消せと指示したことではありません。

「ファイルを消すな」と指示しなかったことです。

ChatGPTは賢い。だからこそ、余計なことまで考えて動きます。

ファイル操作をAIに任せるときは、必ず「禁止事項を先に書く」ことを癖にしてください。

私のように、金曜の夕方にひとりゴミ箱を漁らなくて済むように。

共有ドライブにゴミ箱機能を実装してくれたGoogleの開発者に、心からの感謝を。

こんな記事も書いています
やらかし系・AI活用系が好きな方はこちらもどうぞ👇


他にもAI活用・やらかし系の記事を書いています。
XとnoteでもAI・データ分析の実務Tipsを発信中です。

X:@yuunaai17
note:https://note.com/regal_vole5659

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?