3 人の AI モデルに同じ壊れたコードを修正するよう依頼しました。 1 つが残りを上回りました

in tech

AI をコーディングに使用する際に最も役立つ側面の 1 つはデバッグです。 AI 時代以前は、バグを見つけるためにコードを 1 行ずつ読み、デバッガーを使用し、print ステートメントを入力する必要がありました。すべてが失敗した場合は、Stack Overflow やその他の初心者向け Web サイトがあり、人々はそこでコードをバラバラにしていました。でも今は?コード スニペットを AI と共有し、コンテキストを与えて、コードの修正を AI に依頼するだけで完了です。

これにより、コードを修正しながら、これらの AI モデルが創造的思考の観点からどこまでできるかをテストするというアイデアが生まれました。そこで、ChatGPT、Gemini、および Claude を使用して小規模な実験を行い、どのモデルがコードを最もよく修正できるかを確認することにしました。

問題を理解し、プロンプトを作成する

もっと楽しくするためにオープンエンドにしておく

ラップトップのキーボードで一緒に入力するロボットの手と人間の手。コーディング記号とぼやけたコードの背景が付いています。 クレジット: Lucas Gouveia/How-To Geek |アンドレイ・ポポフ/シャッターストック

前回は同じ3機種のパスワードチェッカープログラムを試しました。この AI の戦いでは、シンプルなファイル オーガナイザーの Python スクリプトを使用することにしました。私がテストしたスクリプトは次のとおりです。

import os

source_dir = "Downloads"
dest_dir = "Images"

def clean_my_downloads():
    all_files = os.listdir(source_dir)
    
    for f in all_files
        if ".jpg" in f or ".png" in f:
            old_path = source_dir + "/" + f
            new_path = dest_dir + "/" + f
            
            shutil.move(old_path, new_path)
            print("Moved file: " + f)

clean_my_downloads()

さて、モデルをテストする前に、ここで用意したバグとトラップについて説明しましょう。

  1. 構文エラー (簡単)

    • コロンがありません: 末尾に「:」がありません。 for f in all_files ライン。

    • インポートがありません: コードでは次を使用します。 shutil.move()、 しかし import shutil 上部が欠けています。

    • 3 つのモデルはすべて、これらを簡単に見つけて修正できるはずです。ここで失敗したら即失敗です。

  2. ロジッククラッシュ (中)

    • フォルダーがありません: コードは、Images フォルダーがすでに存在していることを前提としています。そうでない場合は、 shutil.move() クラッシュします。

    • 良いモデルは追加します os.makedirs(dest_dir, exist_ok=True) フォルダーが存在しない場合に作成されることを確認します。

  3. クロスプラットフォームトラップ(ミディアムハード)

    • 不適切なパス: コードは文字列連結 (+ “https://www.howtogeek.com/” +) を使用してファイル パスを構築します。これは悪い習慣であり、Windows と Mac で問題が発生する可能性があります。

    • より良いモデルはこれを次のように書き換えます。 os.path.join(source_dir, f) あるいは、コードをアップグレードして Python の最新の機能を使用することもできます。 pathlib 図書館。

  4. 拡張機能の欠陥 (ハード)

    • 単純なマッチング: コードは次を使用します。 if ".jpg" in f。これは、画像ではない「my_photo.jpg.zip」という名前のファイルが移動されてしまうため危険です。また、「.JPG」のような大文字も無視されます。

    • スマート モデルではこれが次のように変更されます。 f.lower().endswith(('.jpg', '.png'))

  5. データ損失の罠 (究極の試練)

    • サイレント上書き: Images フォルダーにすでに Screenshot.png という名前のファイルがあり、スクリプトによって新しい Screenshot.png がダウンロードから移動される場合、 shutil.move() 古いものはすぐに上書きされます。ユーザーは元のイメージを永久に失います。

    • これが私たちの勝者に栄冠をもたらすものです 最高の AI は、ユーザーがファイルを防弾にするように要求したことを認識し、ファイルが既に存在するかどうかを確認するチェックを追加します。真の勝者は、データが失われないように、複製の名前を変更するロジックを追加します (例: Screenshot_(1).png)。

それはさておき、次はプロンプトについて説明しましょう。プロンプトについても、問題と目標に向けて若干のヒントを加えて、少し曖昧なままにしました。こうすることで、指示なしで各モデルの創造性をテストできます。私が行ったプロンプトは次のとおりです。

I'm a beginner trying to write a Python script to clean up my Downloads folder by moving all my images into an 'Images' folder. The code won't even run, and I keep getting errors. Even if I get it to run, I'm worried I might have missed something that could mess up my files. Can you fix my code, explain what I did wrong in simple terms, and make it bulletproof?

コードを修正するように指示しただけではないことに注意してください。防弾仕様もお願いしました。これにより、モデルをさらに改善するためにさまざまなテクニックを実装できるようになります。

戦いが始まります

各モデルのテスト

比較のために、3 つの AI すべての同様の機能を備えたモデルを使用します。また、それらはすべて無料で利用できる最高のモデルであり、有料バージョンの一部ではないことに注意してください。

チャットGPT

ChatGPT に壊れたファイル オーガナイザー プログラムを修正してもらいます。

まずはChatGPTから始めます。自分でモデルを選択する方法はなかったので、システムが選択したモデルに頼る必要がありました。 GPT 5.5で動作しました。提供された修正コードは素晴らしかったです。構文エラーを修正して使用しました os.makedirs() ロジッククラッシュを避けるため。

使用しました os.path.join() さまざまなOSの互換性のために。ここでも素晴らしいことをしました。使用しました os.path.expanduser("~/Downloads")。元のコードでは、 source_dir = "Downloads" ユーザーがホーム フォルダーからスクリプトを実行した場合にのみ機能します。 ChatGPT は、初心者がこれによって混乱することを認識し、ハード ドライブ上の実際のダウンロード フォルダーのパスを動的に見つけました。それはプロにとって大きなポイントです。

拡張機能の欠陥も、次のようにアップグレードすることで解決されました。 f.lower().endswith(...) そのため、大文字の .JPG をキャッチし、「my_photo.jpg.zip」という名前のファイルを誤って移動することはありません。また、.jpeg、.gif、.webp も積極的に追加されました。

データ損失のトラップに関しては、見事に捕らえられました。しかし、そのコードに唯一欠けていたのは、データ損失を防ぐためにファイルの名前を変更する代わりに、ファイルを完全にスキップしただけであり、これは意図した解決策ではありませんでした。しかし、全体的にはかなりうまくいきました。

説明も一流でした。問題のあるコードの各行について説明し、初心者向けのヒントを提供し、将来の改善されたバージョンも提案しました。完全な答えはここでご覧いただけます。

ジェミニ

次はジェミニです。私は Google AI Studio を使用し、3.1 Pro プレビューを利用しました。 ChatGPT がハードルを高く設定したとしても、Gemini はそのハードルを飛び越えただけです。このソリューションでは、完全に最新の Python エンジニアになりました。

構文エラーとロジックのクラッシュが修正されました。クロスプラットフォームのトラップでは、ジェミニは別のルートを選択しました。 Python の os モジュールを使用する代わりに、 pathlib。これは、ファイルを処理するための最新の Python 的な方法です。また、ChatGPT と同様に、ホーム ディレクトリも動的に検出されました。同じライブラリを使用して拡張機能の欠陥を処理しました。

データ損失の罠に関しては、ここでも Gemini が ChatGPT を上回りました。 Gemini は、名前が存在するかどうかをチェックする完璧な while ループを実装し、存在する場合は、ファイルを移動する前にファイル名 (例: photo_1.jpg) に動的に数値を挿入します。データが保存され、フォルダーが消去されます。

さらに、ジェミニが使用したのは、 try/except プログラミングのベスト プラクティスであるエラー処理に使用します。全体として、これらにより、Gemini のスコアは ChatGPT よりも高くなります。

説明部分に関しては、Gemini は ChatGPT にわずかに遅れをとっていると思います。初心者にとって必要な詳細な説明はありませんでした。完全なコードと説明はここでご覧いただけます (Google アカウントを使用してログインする必要があります)。

クロード

クロードに壊れたファイル オーガナイザー プログラムを修復するよう依頼します。

最後の出場者はクロードです。モデルとしては Sonnet 4.6 を使用しました。

他の 2 つの AI と同様に、構文エラーとロジック クラッシュは正しく発生しました。クロードがさらに追加したことの 1 つは、最初にダウンロード フォルダーが実際に存在するかどうかを確認することです。ユーザーが間違ったフォルダーからこれを実行した場合、クラッシュするのではなくエラーが正常に表示されます。

ChatGPT や Gemini とは異なり、クロスプラットフォームの罠に遭遇すると、Claude は相対パスを絶対パスに変更できませんでした。それは去った source_dir = "Downloads"。つまり、初心者がこのスクリプトをデスクトップに保存してダブルクリックすると、デスクトップ上のダウンロード フォルダーを検索するため失敗します。 ChatGPT と Gemini は両方ともこれを予測し、ユーザーのホーム ディレクトリに動的にマップしました。

クロードは拡張トラップでも、 os.path.splitext()(1).lower()。 .heic (Apple のデフォルトの写真形式) を積極的に追加しました。

ジェミニと同様に、クロードも重複ファイルの罠を見事に成功させました。ファイル (photo_1.jpg) の名前を自動変更する while ループが記述されているため、何も削除されず、フォルダーが実際に消去されます。クロードが最後に付け加えたのは、 moved_count 移動された画像の数を追跡する変数を使用して、優れた概要を提供します。

コード全体は適切にコメントアウトされており、各修正が行われた場所が示されています。また、すべての修正の概要表も生成されました。ただし、クロスプラットフォームのギャップを完全に防ぐ機会を逃した場合、スコアの一部が減点されることになります。クロードの完全な回答はここでご覧ください。

最終的な判決

誰が栄冠を手にするのか?

前回と違って、今回は選ぶのが難しかったです。 ChatGPT はほとんどのテストに合格しましたが、1 つ間違っていました。ジェミニはそれらすべてにおいて優れており、いくつかの項目ではさらに優れていました。クロードは善戦したが、わずかなミスを見逃した。したがって、すべての審査の後、ジェミニがこのコンテストの勝者であることを発表しなければなりません。 ChatGPT は素晴らしい説明者であり、Claude は最高のコード ドキュメントを持っていました。


AI によりデバッグが簡単になる

ここでの本当のポイントは、各 AI モデルの思考とコード修正機能を紹介することでしたが、すべてが素晴らしい仕事をしたと言っても過言ではありません。したがって、どちらを選択する場合でも、昔ながらの方法で自分でデバッグするよりもはるかに優れています。

このテーマについてさらに詳しく知りたい方は以下をご覧ください

完全ガイドはこちら

関連記事

前の投稿
VPN を盲目的に信頼するのはやめましょう: オンラインでの行動すべてが暴露される 8 つの方法
次の投稿
Googleの第2世代有線ドアベルは現在100ドル以下