ホエールテック株式会社 ホエールテック株式会社

  • ブログ

生成AIが異なる回答を出してきて戸惑った話

はじめまして、囲碁好きエンジニアのつじです。まだ駆け出しですが、知識を深めるべく日々学習に励んでいます!

今回は、研修中に出てきたあるお題について、とても印象に残ったものがありましたので、その時の状況を振り返りたいと思います。

1. Copilot vs ChatGPT どっちが正しいんだ!!

研修中に出てきたあるお題とは、「PHPにおいて、条件式 if(100 == true) の判定はどうなるか」というテーマで、まずはじめに複数の生成AIに確認、その後、必要と感じた調査を行い、最終的な結論をレポートにまとめる というものでした。

そのときに、私が使用した Microsoft Copilot と ChatGPT の各回答をご紹介します。(各生成AIの回答は私の調査時点でのものですので、現在は変わっているかもしれませんので、念のため)

Copilotの回答

「false」になると言っています。

ChatGPTの回答

「true」になると言っています。

どちらも正しそうなことを言っているに、結論が違っている状況です。

2.PHP公式ドキュメントで仕様を確認してみた

一旦、生成AIの回答から離れ、一次情報である PHP公式ドキュメントを確認することにしました。

今回参照したのは、PHP公式ドキュメントにある「型の比較表」です → PHP: 型の比較表 – Manual(記事作成時点の最新版:PHP 8.5.0)

==(穏やかな比較)での動作

この表では、さまざまな型・値を ==(穏やかな比較)で比較した場合の結果が一覧化されています。

trueとの ==(ゆるやかな比較)において、true == 1 および、true == -1 は true となっており、true と0以外の数値との比較は true になることが分かりました。

このルールを 100 == true に適用すると、結果は true となりそうです。

===(厳密な比較)ではどうなるか

ちなみに、同じ比較表のページに、 === を使用した厳密な比較での結果も一覧化されていました。

同様に、このルールを 100 === true に適用すると、結果は false となりそうです。

3.paiza.ioで検証をしてみた

仕様を理解したので、オンラインでコードを実行できる paiza.io を使って、実際の挙動を確認しました。

まず ==(穏やかな比較)を用いた以下のコードを実行します。

if ( 100 == true ) { print "true"; } else { print "false";}

実行結果は 「true」 でした。

続いて、比較演算子を ===(厳密な比較)に変更して同様のコードを実行します。

if ( 100 === true ) { print "true"; } else { print "false";}

こちらの実行結果は 「false」 となりました。

実際の動作でも
・100 == true → true
・100 === true → false
と、PHP公式ドキュメントに記載されていた内容から得られる考察と一致する結果となりました。

4.まとめ

一次情報の重要性

公式ドキュメント(一次情報) は、最も信頼できる情報源であり、難解でも、敬遠せずに目を通して、理解を深めたいと思いました。

AIのハルシネーションのリスクを認識

今回のように、AIはもっともらしい説明を添えて誤った回答を返すことがあるため、そのまま鵜呑みにせず、常に判断する、検証する姿勢が大切だと実感しました。

ちなみに、ハルシネーションというのは、幻覚や作話という意味で、AIが事実に基づかない情報をあたかも事実のように回答する現象を指すようです。

型を意識したコーディングが大切

==(緩い比較)は、型を考慮せず自動的に変換が行われるため、意図しない挙動やバグの原因になりやすく、基本的に ===(厳密な比較)を用いるべき理由 を実感できました。

あとがき

あるとき、今回の研修テーマの目的を先輩に聞いてみたところ、「100 == true なんて、不自然だったよね。ただ、結局のところ、生成AIの回答をジャッジするのはエンジニア。エンジニアの入り口に立ったつじに、その必要性を実感してもらうことがこのテーマの目的なんだ。ちなみに、== は、ホエールテックでは使用禁止。=== を使わないといけないよ。=== というのはね、・・・」とのことでした。ありがとうございます。

さいごに、少し恥ずかしいのですが、当時の私が作成したレポートをご紹介します。レポート作成時にも学ぶことが多かったのですが、今回改めて記事にすることで、より理解が深まったように感じます。アウトプットの大切さにも気づいたつじでございました。

実川想
つじ
子どもの頃ヒカルの碁の影響を受けた囲碁大好き系エンジニア。

毎週日曜は某テレビ囲碁棋戦を観るのが楽しみ。
採用情報
お問い合わせ