数か月前にいくつかの素晴らしい ChatGPT の偉業を取り上げたにもかかわらず、Github の AI コーディング サポート ツールである Copilot を試すための次の論理的なステップを踏むことはありませんでした。しかし、先週、私の同僚が AI によって生成されたテスト スイートのスクリーンショットを共有したことで、私の関心が高まりました。
プロンプトはかなりシンプルで、生成されたテスト ケースは関連性がありました。 GC の無料トライアルに登録して、シンギュラリティ イベントの到来に貢献したいと思わせるには十分です。
Copilot ができることとできないことを詳しく説明することは避けます。私にとって興味深いのは、この新しいテクノロジーをどのように理解できるかということです。
この投稿では、Github Copilot をベンチマークとして使用して、今日の「コーディング用 AI」で何ができるかを推測します。これは、この分野の最先端を表していると思います。
ソフトウェア領域で AI について考えるとき、多くの自然な疑問が頭に浮かびます。
それは役に立ちますか?それは危険ですか?それは私たちの仕事を奪いますか?最も重要なことは、制限的な考え方に自分自身を追い詰めたり、ネオルド主義者やユートピア的テクノ愛好家として、AI に関する奇妙な物語を感情に任せたりしないことです。
代わりに、他のタイプの質問の方が興味深く、答えやすいと思います。これらの質問は、「はい」または「いいえ」の回答を意味するものではなく、通常、「何」、「いつ」、「どこで」で始まります。
たとえば、 Copilot を日常業務に統合するにはどうすればよいですか?どのようなタスクを促進し、どのような個人スキルが必要ですか?
私たちの仕事における AI の価値は、ソフトウェア エンジニアにとってほとんど明らかです。それでも、特に多くのコンテンツ作成者やジャーナリストが壊滅的なシナリオを示唆する (または、ソフトウェアの構築に誰でもアクセスできるようになると約束する) ことで注目を集めることを好むため、他の分野の人々が可能性を大きく誤解する可能性があることは理解しています。
はい、GPT-3 に基づくツール (および最近の GPT-4) がコードを記述できるのは事実です。生成されたコードは多くの場合、コンパイルされ、期待どおりの動作をします。
しかし、コードを書くことはソフトウェア エンジニアが実際に行うことではないため、これは必ずしも私の仕事の安全を脅かすものではありません。もっと詳しく説明しましょう。
私たちの仕事は、テキスト エディターにコードを入力することではありません。私たちは速記者ではありません。仕事は、何をコーディングするかを決定することです。実際、ソフトウェアを設計していて、最終的に IDE に何かを入力し始めるときはいつでも、次のコード スニペットがどのようなものになるかをすでに頭に入れています。
この時点で、AI は点と点をつなぎ合わせて、私が意図したメソッドまたはデータ構造を即座に生成し、不本意なタイプミスやその他の明らかなミスを差し引いています。
AI が一部のコード ベースの 80% 以上に貢献できたとしても、適切なプロンプト (最初の 20%) を提供することが不可欠です。これは、 GC が正しく動作するために必要な膨大な情報が含まれているためです。そして、キーボードの背後にいるエンジニアがいなければ、最初のプロンプトは表示されません。
飛行機のオートパイロットとの比較は良いと思います。 AFCS (自動飛行制御システム) は、飛行経路の調整、空港への接近、さらには着陸など、さまざまな飛行操作を完璧に実行できます。
人間の監督なしで民間の飛行機に飛び乗るなんて、今でも夢にも思わない。
コンピューターが飛行機を制御できるという事実は、パイロットが飛行甲板で遊んでいるという意味ではありません。
やるべきことはまだたくさんあります。天気予報のチェック、航空管制とのコミュニケーション、代替ルートの計画、そして最も重要なこととして、自動操縦を監督し、必要に応じて手綱を握ることです。
したがって、飛行機を操縦しているのは依然としてパイロットであることがわかります。
同様に、 AI はソフトウェアを開発するのではなく、エンジニアが開発します。 AIはツールです。エンジニアは、自動化を使用してワークフローを合理化するように訓練されていますが、ツールの動作を常に監視します。意図したとおりに動作しない場合は、エンジニアが介入して状況を修正します。
これが私が Copilot を使用するときの心構えです。単純な作業は喜んで任せますが、その間、Copilot がどのような出力を生成するかについては注意を払います。
ご存知かもしれませんが、Copilot の基礎となる ML アルゴリズムは GPT-3 と呼ばれ、生成される可能性が最も高いトークンのシーケンスを予測します。通常、生成されたコードは構文的に正しいですが、ツールは仕様が何であるか、および生成されたコードが有効かどうかを認識しません。
考えられる対策は、迅速なエンジニアリングで GC を支援することです。たとえば、次のスニペットが何をするかを説明するコメントを書くことは、AI を支援する強力な手法です。
さらに良いことに、最初の数単語を入力すると、コメントが自動生成されることもあります。
ただし、最も理想的な条件下であっても、Copilot が常に役立つ提案を提供するとは限らないこと、またはそのような場合にまったく提案を提供しないことを言わなければなりません。 GC は非常に優れていますが、コーディング ツールとしてはまだ非常に不完全だと思います。
今のところ、自分のツールセットに Copilot を完全に組み込むかどうかは決めていません。
いずれにせよ、ぜひ一度試してみることをお勧めします。シンタックス ハイライターやお気に入りの IDE のオートコンプリート機能のようなユーティリティ ツールと考えてください。
Github Copilot についてどう思いますか?それを日常の仕事に取り入れましたか、それとも難しいパスでしたか?恥ずかしがらずに、コメントで教えてください!