🧨

(戒め)生成AIに頼りすぎてはいけないことを実感した出来事

はじめに

こんにちは、D2Cのデータサイエンティスト(MLエンジニア)をやっている須田です。
最近、JupyterLabのJupyterAI機能が気に入っています。開発時のわからないことや知りたいことをよく聞いているのですが、これがきっかけで起きたある出来事を今日は共有していこうと思います。

怪談話生成AIバージョンのようなイメージで読み進めてもらえたら幸いです。(怪談ではないですがw)

先輩も知らない記述方法を書き出した初心者

見出しの時点で違和感ですよね。笑
PySparkを使用したことのない私(初心者)が改修作業を行うことになった時のことです。

具体的な改修部分としてやりたかったことは「ある特定のprefixを除いてデータを読み込むこと」
特に特定のPrefixを取り除く方法は探しても見つからず、JupyterAIに聞いてみました。

すると、以下の書き方ができますよと教えてくれました。


spark.read.option("pathGlobFilter", f"<読み込みたいprefix>/*| <除外したいprefix>/")

早速検証してみると、ジョブの処理が完了し成果物の確認もできました。
この内容でプルリクエストを申請すると、レビュワーの先輩から「この書き方知りませんでした!」とコメントが来ました。

ブログを書くうちにわかったこと

先輩は知らない書き方ということは、世の中で知らない人が多いかもしれないため
ブログの記事にしよう!と思いました。一通り書いて、レビュワーの先輩に見てもらうと

pathGlobFilterの動作について、ちゃんとしたドキュメントが見つけられていないんですよね、、、
どこにあるのだろう

PySparkの公式ドキュメントに先ほどの記述方法が載っておらず、エビデンスがない状態に。
先輩が調べてくださった結果、JupyterAIからの解答の書き方はうまくマッチングされていないのではないか?という仮説が出てきました。

このコード、本当に機能しているの、、?

JupyterAIからの解答の書き方はうまくマッチングされていないのではないか?(うまく機能していないのでは)という疑問が出てきたため、
改修部分のみでうまくデータが読み込まれているか確認をしました。

すると、取得したデータが空だということがわかりました。つまりうまくマッチングされていないのではないか?という仮説があっていました。先ほどの改修ではジョブ全体がきちんと動くか、求めていた出力結果が出るかの確認のみになっていたため、この問題は見逃してしまっていました。

再度改修し、データが取得できるように今はなっています。

気づかないうちに起こっていたコミュニケーションエラー

後日先輩から伺ったのですが、レビュー時の「この書き方知りませんでした!」というのはspark.read.option() から pathGlobFilter のフィルタを渡せるという部分を指していて、JupyterAIの解答にあった、 f"<...>|<...>" の表記については指していなかったとのことです。

また、以下のこともおっしゃっていました。

その時は「Globなのに | は不自然だな?」くらいの感じで引っかかっていました。「ちゃんと動いているからいいかな?」と安直に(レビューを)通してしまったのです

つまり気づかないうちに勘違い&すれ違いが起こっていました。
もしプルリク/ブログの記事のレビュワーをお願いしていなかったら、今回の発見や学びに(お互い)繋がっていなかったかもしれません。

今回得た学び

  1. そもそも記事を書く前に、レビューしてもらう前にエビデンスを自分で調べること
  2. もっと言えば、生成AIを鵜呑みにしすぎず先輩に相談すること
  3. ジョブ全体で検証せずにまずは改修部分のみで検証すること
  4. 初めて知る内容を生成AIから教えてもらうときは人にも相談すること
  5. レビューは双方にとって学び、気づきの場でもある

おわりに

生成AIの回答を鵜呑みにしてはいけません!自分でもそう思っていましたが、使用しているうちに段々信用が高まっていき信頼してしまう・・・ということが起きてしまいました。
(そもそも得た学びの2以外は生成AI関係なく自分の業務の進め方に問題がありますが)

あとは「生成AIは初心者が安易に使用するのではなく、ある程度経験のある人が利用するもの」と同期が言っていたのを思い出しました。本当にその通りだと思います。

ここまでお読みいただきありがとうございました!

D2C m-tech

Discussion