Devin AI: 世界初のAIソフトウェアエンジニア →ソフトウェア開発の革命
Devin AIとは?
Cognition Labs社が、人間のエンジニアと協力して作業するために設計された、単一のプロンプトを通じてコーディング、ウェブサイトおよびソフトウェアの作成が可能な、世界初のAIソフトウェアエンジニアであるDevinを発表しました。
Devinは、SWE-benchコーディングベンチマークスコアによってその優れたコーディングスキルを示しています。独自のシェル、コードエディター、およびブラウザを備えたユニークな機能により、複雑なタスクをシームレスに実行できます。
Devinの最大の特徴は、過去にGithub CopilotなどのAIコーディングツールは主に補助的な役割を果たしていましたが、Devinはソフトウェアエンジニアリングプロジェクトの複数のステップを自ら処理し、 完了させる事です。
Devin AIの魅力
Devinの特筆すべき点は、先を見越して複雑なタスクを計画する驚異的な能力です。数千の意思決定を行い、過ちから学び、時間とともに向上します。さらに、コードエディターやブラウザなど、人間のエンジニアが必要とするすべてのツールをデジタルの指先で利用できます。
Devinの機能の中心には、多様なソースからのコードの膨大なリポジトリでトレーニングされた高度な機械学習アルゴリズムがLLMとして実装されています。パターン、構文、ベストプラクティスを分析することで、Devinは特定の要件やプログラミング言語に合わせた高品質のコードを生成できます。
特に、Devinのデバッグ能力は優れていて、プログラミング言語、アルゴリズム、ソフトウェアエンジニアリングの基本原則を深く理解しているため、Devin AIは自らのコード内のエラーやバグ、論理的な不一致を巧みに特定します。問題が発生すると、Devin AIは問題の包括的な分析を提供し、潜在的な解決策を提案します。特定のシナリオでは、AIが問題の複雑さや具体的な文脈に応じてコードを自律的に修正することもあります。これにより、トラブルシューティングに必要な時間と労力を大幅に削減します。(これは今までAIコードツールに無かった機能)
コードのデバッグが完了すると、Devinはシームレスに展開プロセスを処理し、既存のシステムやプラットフォームにスムーズに統合する処理も行います。さまざまな展開環境に適応する能力があるため、Devinは異なる業界でのソフトウェア開発チームにとって多目的なツールとして活用できます。
Devinができる事を箇条書きに
Devinは複数行のコードを生成し、デバッグを行い、展開もできます。その他の機能には、先を見越した考え、複雑なタスクの計画、新しいテクノロジーの学習が含まれます。
私たちがChatGPTで行うのと同様に、プロンプトを入力するだけで良いです。プロンプトには、どのようなコードを望むか、どのようなソフトウェアを構築したいかなどを記述できます。
Devinはその入力を受け取り、問題を解決する包括的な段階的戦略を作成します。それは、私たち人間のソフトウェアエンジニアが行うのと同じように、開発者ツールを利用してコードを生成し、問題を解決し、テストを行い、ユーザーが操作する際にすべてを監視できるようにリアルタイムの進捗報告を提供します。
たった1つのプロンプトを取ることで、完全なウェブサイトを作成し、エンドツーエンドのソフトウェアを構築することができます。
Devinは未知のテクノロジーの使用方法を学ぶようにプログラムされています。学習するためには、そのテクノロジーに関するブログ投稿やドキュメントと対話するだけです。
Devinはまた、コードリポジトリ上のさまざまな種類のコーディングエラーを修正する能力を持っています。エラーは一般的なコーディング構文エラーから数学的または推論的なエラーに及ぶことができます。
たとえば、Devinにプロンプトを与えるとします:「バンガロールのすべての中国料理店をマッピングし、ウェブサイトが検索を実行して店舗を見つけ、その住所と連絡先情報を取得するウェブサイトを作成してください。」 Devinはこのプロンプトだけで完全なウェブサイトを作成できます。デバッグ、テスト、ウェブサイトの展開も行えます。さらに、バグが見つかった場合、Devinはそのバグも修正できます。
Devinを開発したCognition Labsという会社について
会社としては創業一年足らずですが、次の理由から大きく注目されています。
Peter ThielのベンチャーキャピタルファンドであるFounders Fund、元TwitterのCEOであるElad Gil、Doordashの共同創業者であるTony Xuなどの投資家により、シリーズAの資金調達で2100万ドルを調達しました。
Devinの脳となるScott Wuは、9歳でプログラミングを始め、後に国際プログラミングオリンピアードで金メダルを獲得した数学の天才です。彼のみならず、Cognition Labsチームは国際プログラミングコンテストでスキルを証明した10人のプログラマで構成されていることも大きな特徴点Eです。
アプリ開発ツールは過去に多く登場してますが、CognitionがYouTubeのビデオでこれを最初のAIソフトウェアエンジニアとして紹介し、その機能の充実性が過去のツールと比較して大きな進歩を遂げている事が評判になってます。
紹介ビデオ
Devin AIの早期アクセス
Devinはまだ早期アクセス期間中です。
cognition-labs.comのウェブサイトまたはe-mailを通じてDevinへの早期アクセスをリクエストすることができます。
Devinが稼働するAIモデル
Devin AIは、Devin Modelと呼ばれる、Cognition Labsが開発した大規模言語モデル(LLM)をベースに作られています。このモデルは、コードリポジトリ、技術文書、業界の議論など、幅広いソフトウェアエンジニアリング資料に対する徹底的なトレーニングの結果であり、複雑なプログラミング言語、概念、およびソフトウェア開発ワークフローの微妙なニュアンスについて類まれな理解を誇っています。Cognition LabsはDevin Modelの技術的な複雑さを秘密にしていますが、コーディングの課題を巧みに乗り越える能力により、コードのアーキテクチャ、構文、およびアルゴリズムの論理を洗練された理解の基盤としています。
開発したソフトウェアはどこでホストされているのか
Devin AIはコードを出発点や構築ブロックとして提供しますが、ホスティングや展開は行いません。これにより、ユーザーはプロジェクトをコントロールし、AWSやGoogle Cloudのようなクラウドサービス、またはオンプレミスのソリューションなど、自分のニーズに最適なホスティングプラットフォームを選択できます。
Devinがサポートする言語
Devin AIは幅広いプログラミング言語に精通しています。Devinがコーディングできる言語には、Python、JavaScript、Java、C++、C#、Swift、Rust、Go、PHP、SQLなどがあります。
これに限らず、Devinの能力はモデルが新しい言語やフレームワークに学習し適応するにつれて常に拡大しています。Devinの複数言語における熟練度は、ソフトウェアエンジニアにとって多様なプロジェクトやプラットフォームに貢献できる多目的なツールとなっています。
Devinを利用した様々な事例:Cognition社のエンジニアが実際に操作して紹介
1. DevinAIを使ってみる
Devin AIには、次の機能があります。
シェル
ブラウザ
エディタ
プランナー
最初に、Devinはプランナーで段階的に何をするかを自動的に計画します。
こちらがDevinのコマンドライン投入のシェル
こちらがDevinのコードエディター
こちらがDevinのブラウザー
その4つのツールが一つの画面に表示されている状態
Devinがエラーに遭遇すると、デバッグ用のプリントステートメントを追加し、コードを再実行してエラーコードを使用してそれを見つけます。
2. Devinがゲームを自動的に作る
Devinは、Game of Lifeを実装するために新しいReactアプリケーションを作成してビデオを開始します。
アプリケーションの最初のバージョンはNetlifyを使用してデプロイされます。
Adionは次の特定の機能を要求しています:
特定の単語での初期化
テキストサイズの増加
フレームレートの向上
画面がフリーズする問題のバグ修正。
Devinは効率的にこれらの要求に対処し、まず画面がフリーズするバグを修正しました。
Devinの進捗状況を示しており、変更の差分も含まれています。
次に、Adhyyanはさらなる機能の向上を求めます:
10秒後にフレームレートを上げること
ウェブサイトをレスポンシブにすること
インタラクティブな要素を追加すること
Devinはこれらの機能を実装し、特定の単語(「Deon」)から始め、マウスクリックを通じて相互作用を追加しました。
ビデオでは、アプリケーションがマウスクリックに応答して新しいブロックを作成する様子が示されています。
Adhyyanは積極的にアプリケーションに取り組み、新機能をテストし、その機能をデモンストレーションしています。
3. Devinが自分自身のAIモデルをトレーニングしてファインチューニングをする例
Cognition AIの従業員が、QLoRaリポジトリをDevinに提供します。
使用したプロンプトは次のとおりです:
”can you finetune a 7B Llama model using “link” There should be instructions in the Readme.”
(「リンク」を使用して7B Llamaモデルを微調整できますか?Readmeには手順が記載されているはずです。)
Devinはリポジトリをクローンし、pipを使用して必要なすべての設定を行うことで、作業を開始します。
オープンソースプロジェクトではよくあることですが、DevinはCUDAの問題に直面します。しかし、Devinにとっては問題ありません。
Nvidia環境を調整し、適切なパッケージを元に戻します。
これらの初期の障害がクリアされると、トレーニングの仕事が始まります。
トレーニングプロセスの状況が表示されていきます。
損失メトリクス (Loss Metrics) は着実に減少している、スムーズな進行です。
1時間ほどこのトレーニングの作業を継続します。
戻ってきてから、次のコマンドを投入します:
hi can you check how the training is going on
訓練は順調に進んでおり、数100のステップを踏んでいることがわかります。
4. Upworkでの実際の課題を解決して完了する
この場合、WaldenはUpworkからのコンピュータビジョンモデルプロジェクトに取り組みます。
最初はWaldenはどう取り組むかわからなかったが、Devinに任せることに決めました。
Devinはリポジトリを作成し、いくつかのバージョン管理の問題をスムーズに処理し始めます。
モデルを本当に理解し、バグを修正するために、Devinはプリントラインデバッグ、というシンプルで効果的な方法を使っています。
これは、データがシステムを通過する様子を見るためにコードを追加する方法です。
プロジェクトが進むにつれて、Devinはさまざまな問題に直面しますが、プロのようにそれらを処理します。
開発プロセスの興味深い部分は、コードが更新や修正を通じてどのように進化するかを見ることです。
モデルを実世界の条件でテストするために、Devinはインターネットから道路の画像をダウンロードします。
これはただの道路では無く、世界中の異なる地域からのもので、モデルの汎用性を示しています。
最後に、Devinは詳細なレポートをまとめます。それには、損傷した道路を示すサンプル画像がたくさん含まれており、作業内容やモデルの成果について明確な説明が含まれています。
最後に、Waldenは、これらの画像が実際に主要な問題であった道路のひび割れを正しく識別していることを示しています。
5. コードベース内で自律的にバグを見つけて修正する
AndrewはCognitionのエンジニアで、競技プログラミングに使用されるさまざまなアルゴリズムを含む大規模なオープンソースリポジトリを維持していました。彼はDevinにそれをチェックして取り組むように頼みました。Devinは正しいリポジトリを見つけ、それをチェックし、リポジトリ内のすべてのファイルを見つけ、それからテストを書きました。テストを実行したところ、すばやく問題が発生しましたが、非常に効果的に解決し、追加のインクルードを行いました。Devinはテスト関数を書き直して4つのネストされた4つのループを使用しましたが、テストの失敗がありました。その後、Devinはプログラムのデバッグを試み、間違ったケースを見つけ、返り値が非負であることを確認するためのコードを追加しました。
AndrewはCognitionのエンジニアで、競技プログラミングに使用される大規模なオープンソースリポジトリのバグを修正するためにAIツールであるDevinを使用した経験を共有しています。
バグの発見
友人から、特定の条件(非相対素数の入力)で失敗するアルゴリズムのバグについて Andrewに通知があり、 Andrewは見落としていた。
初期の修正とテスト
Andrewは迅速な修正を実装しましたが、検証のためのテストケースが不足していました。自分でテストを書くことを避け、Devinの支援を求めました。
Devinのデバッグにおける役割
Devinはリポジトリにアクセスし、必要なテストを理解し、効率的にそれらを書き、実行し、途中でコンパイラの問題を特定し、修正しました。
テストカバレッジの拡大
その後、 AndrewはDevinに、総当たり戦略を使用してすべての入力をカバーするようにテストを拡張するよう指示しました。Devinはこれを実装し、テストの失敗が明らかになりました。
デバッグと最終的な解決
Devinは問題をデバッグし、コードからの誤った出力(負の値)を特定しました。コードを修正して非負の結果を確保した後、テストを再実行して修正を確認しました。
6. デスクトップのバックグラウンドイメージを生成
SarahはDevinにブログ記事を送り、Devinは私の名前が入ったデスクトップの背景画像を数分で作成しました。Devinはまた、ブログ記事でカバーされていなかったエッジケースやバグを見つけて修正しました。
Sarahは、AIソフトウェアエンジニアであり、ブログ記事から自律的に学習し、創造的な成果を生み出す能力を持つDevinを紹介します。
タスクの概要
Sarahは、特定のブログ記事に基づいて自分の名前が入ったデスクトップの背景画像を生成するようにDevinに指示しました。
プロセスと実行
Devinは、画像を生成するために必要な手順を理解するためにブログ記事を読むことから始めます。
プロセス全体で、Devinは元のブログ記事に記載されていないエッジケースやバグを特定し修正します。
結果と結論
AIは望ましいデスクトップの背景画像を成功裏に生成し、さらにボーナスの画像を2枚提供しました。
Sarahは結果に満足し、Devinの自律的な学習能力と創造的なタスク実行能力を強調しました。
最後の考え
Sarahはビデオの最後に、ボーナス画像に隠れたものに気づくかどうか視聴者に尋ねます。
7. オープンソースリポジトリのバグと機能要求を解決する
このビデオでは、CognitionのエンジニアであるTonyが、AIソフトウェアツールである「Devin」を使用して、オープンソースツールである「Impro」というツールのユーザーエクスペリエンス(UX)を改善した方法について話しています。Tonyは、複数のコマンドを同時に実行し、その状態を1つの画面で追跡する必要があるという職場での課題に直面しました。しかし、状態インジケーターが曖昧であり、どのコマンドが失敗したかを判断するのが難しかったとのことです。
導入
Tonyは自己紹介し、AIソフトウェアエンジニアリングにおける自身の仕事について紹介します。
彼はオープンソースツール「Impro」で、実行するコマンドの曖昧な状態メッセージに問題を抱えています。
問題の特定
Tonyは、より詳細な状態情報を得るためにUXを向上させたいと考えています。
オンラインプラットフォームで同様の問題が報告されていることを発見します。
Devinを使った解決策
TonyはAIソフトウェアエンジニアである「Devin」を使用して、UXの問題を修正します。
彼はDevinに報告された問題へのリンクを提供し、修正を要求します。
Devinのプロセス
Devinはリポジトリをクローンし、ドキュメントを読み、必要な依存関係をインストールします。
Devinは、Webブラウザ、シェル、エディタなど、さまざまなツールを使用して問題を理解し、解決します。
実装と結果
Devinは「Impro」ツールに変更を加え、その効果をビデオで効果的に示します。
ビデオでは、修正されたツールが各コマンドの詳細な状態を表示し、最初の問題に対処している様子が示されています。
8. DevinがPython代数システムのバグを修正します。
このビデオは、AIエージェントであるDevinを使用して大規模な言語モデルを微調整するチュートリアルを紹介しています。
はじめに
プレゼンターは、別のAIツールを使用してAIをトレーニングする方法を紹介する予定です。
注目すべきは、「Cur repo」という大規模な言語モデルの微調整と量子化の方法です。
Devinのセットアップ
AIエージェントであるDevinは、7B LLaMAモデルを微調整するように指示されています。
エージェントはリポジトリをクローンし、トレーニング環境を設定するためにドキュメントを参照します。
実行とトラブルシューティング
Devinはpipを使用して必要なパッケージをインストールし、トレーニングジョブを実行する準備をします。
CUDAに関する問題が発生し、これはオープンソースのリポジトリでは一般的ですが、DevinはNvidia環境を調整し、必要なパッケージを再インストールして対処します。
トレーニングプロセス
セットアップの問題を解決した後、Devinはモデルのトレーニングを成功裏に開始します。
ビデオでは、損失メトリクが期待どおりに減少し、トレーニングプロセスがスムーズに進行している様子が示されています。
モニタリングと完了
プレゼンターは1時間後にトレーニングの進捗状況を確認し、プロセスが順調に進行していることを確認します。
Devinは完了したトレーニングステップに関するアップデートを提供し、成功したトレーニングが継続していることを示しています。
Devin AI のようにコードを書いて完全なソフトウェア製品を構築できる他のAIツールの存在
Devin AIは確かに包括的な機能を持つリーダーですが、コードを書いて完全な製品を構築できる他のAIプラットフォームやツールがいくつかあります。
OpenAIが開発したCodepilotは、お好みのIDEでリアルタイムのコード提案を提供するプラグインです。コンテキストに応じた推奨事項を提供することで、プログラマーがより速く効率的にコードを書くのを支援します。
Tabnineは、プロジェクトのコンテキストやパターンに基づいてコードを生成するために深層学習を使用する別のAIパワードのコーディングアシスタントです。さまざまな言語をサポートし、さまざまなIDEやエディタ内で使用できます。
CodeGenは、自然言語の記述からコードを生成できるAI駆動のプラットフォームです。ユーザーの入力に基づいて複雑なアルゴリズム、データ構造、さらにはアプリケーション全体を作成できます。
CLI内の機能を使用すると、シンプルなプロンプトからフルスタックのWebアプリのコードベースを生成できます。その後、Aiderの支援を受けながら機能を追加し、デバッグを行います。
性能のベンチマーク
パフォーマンスに関して、以下の画像は、Devinが他のAIを大幅に上回っていることを示しています。
Devinは、SWE-benchを使用して評価され、13.86%の問題を解決できたものです。適切な支援を受けた場合でも、以前のモデルは問題の4.90%しか解決できませんでしたので、3倍近くの性能向上になります。
SWE-benchは、GitHubの問題を自動的に解決するシステムの能力をテストするデータセットです。
このデータセットは、12の人気のあるPythonリポジトリから2,294個のIssue-Pull Requestペアを収集しています。
評価は、ポストPRの振る舞いを参照ソリューションとして、ユニットテスト検証によって行われます。
SWE-benchについて詳しくは、彼らの論文を参照してください。
参照リソース
Clip source: Meet Devin: The World’s First AI Software Engineer. | by Kristiyan Velkov | Mar, 2024 | Medium
Clip source: 8 Points to Understand Devin — World’s First AI Software Engineer | by Raja Gupta | Mar, 2024 | Medium
Clip source: How to use Devin Ai to build apps? | Medium
Clip source: Title: Meet Devin: The World’s First AI Software Engineer. | by Daily Blogs | Mar, 2024 | Medium
Clip source: Meet Devin AI software engineer. So is it out to get your job or not? | by Gao Dalie (高達烈) | Mar, 2024 | Medium
Clip source: Is AI Officially Taking Our Jobs? Meet Devin, The First AI Software Engineer | by The PyCoach | Artificial Corner | Mar, 2024 | Medium
Clip source: Is Devin AI Worth it?. In a world of endless code, Devin AI… | by Svetloslav Novoselski | Mar, 2024 | JavaScript in Plain English
Clip source: Devin AI: Killing Developer Jobs? | by Abhay Parashar | The Pythoneers | Mar, 2024 | Medium
Clip source: Will Devin AI replace developers? | The World&apos
Clip source: Meet with DevinAI: Is This the Actual End of Coding? | Level Up Coding
この記事が気に入ったらサポートをしてみませんか?