AIエンジニアと話題のDevinを導入してみた
はじめに
NOT A HOTELではSlack Bot に GPT-4V API を搭載するやNOT A HOTELアプリにGPT-3.5系モデルを用いたAIコンシェルジュ機能「Kevin」を追加といった記事に見られるように、LLMや生成AIを活用したツールを試したり、プロダクションリリースを行なっています。
現在もGitHub Copilotを会社負担で導入したり、Difyをクローズドなネットワークで検証可能な環境を社内に構築するなど、先端的な技術の活用を積極的に行なっています。
そう言った活動の一環として、社内でDevinを導入してみる会を行いましたので、知見を共有します。
Devinとは
Devinは2024年3月にリリースされた開発支援ツールです。
Devin is a collaborative AI teammateと説明されている通り、
まるでチームメイトが増員したかのごとく、開発タスクをAIに任せられることを目指したエージェントツールです。
セットアップが完了すると、Slackで指示を出すだけでDevinがGitHubにPRを作成してくれるようになります。
Devinの設定
実際にDevinを使う際にどのような設定が必要かを体験することで、
導入する際のイメージを掴むことができました。
Slackの設定
Devinに初回ログインした際はsubscruptionの手続きなどが必要ですが、それらが完了すると、Slackとのインテグレーション設定を行うことが可能になります。
SlackがなくてもDevinのWEBダッシュボードを介してDevinに仕事をしてもらうことは可能ですが、
一度設定すると人にお願いするのと同じように @Devin にメンションすることで質問したり、タスクを依頼することが可能になります。
ちなみに開発の依頼以外でもなんでも質問することが可能です。
回答するために実際に公式サイトにアクセスする所から、ただのLLMではないエージェントらしい挙動を感じます。
GitHubの設定
Devinに仕事を依頼するにあたり、具体的にどのGitHubリポジトリに対して仕事をするかを設定する必要があります。
設定画面のConnectボタンからDevinのアクセス権設定などを適宜行います。
これらの設定はOrganizationの構築を行った際にはクイックスタートとして案内されますので、比較的迷わずに環境構築を行うことが可能です。
具体的なリポジトリを追加する際には、テスト実行、lint、ローカル環境での起動試験、その他備考などのカテゴリ別にコマンドを指定することが印象的です。
これら一連の設定を行なっておく事で、DevinがCIを通過可能な品質を担保できている変更をプルリクエストとして作成することが可能になります。
開発専用エージェントらしい設定項目ですね。
実際にやってみた
今回は社内の有志メンバーでmeetを繋ぎながら、モブワーク的に最初の導入から、何かタスクを完了するまでを検証しました。
使い方の把握からプルリクエストの作成完了まで1時間かからない程度で終わりました。
試しにDevinに働いてもらう環境として、Slack Bot に GPT-4V API を搭載するで紹介されているKevin on Slackアプリケーションを選びました、Kevinの改善をDevinにお願いします。
やっていることはSlackAPIの実行部分とOpenAI APIの実行部分を実装し、
Slack上でのメンションを起点とし、OpenAIと接続するように繋ぎ込むシンプルなアプリケーションです。
Honoをフレームワークとして採用し、Cloudflare Workersで動くように作られているのがワクワクポイントです。
Kevin on Slackはプライベートリポジトリで開発されているので、参考実装として私が趣味で作ったアプリケーションを紹介します。
GCPで動くようになっているなどの違いはありますが、やっていることの概要は同じようなものです。
さてKevinのリポジトリですが、Slackと繋ぎ込む分にはあくまでも社内ツールなので、都合よくREADMEが充実していませんでした。
お手並み拝見タスクとしてDevinにREADMEを書いてもらうことにしました。
やったことはCorpITのShiramさんにラフにREADME書いて、とだけ頼んでもらっただけです。
やり取りを進めるとプルリクエストが作成されました、
READMEの内容も申し分ないです。
その後、内容の微調整や日本語で書き直すなどの指示もSlack上で行うだけで、プルリクエストに対する追加コミットとして柔軟に対応してくれました。
プルリクエストの改題や、説明文の追記なども自主的に行なってくれます。
最終的に日本語のREADMEが作成されました。
技術スタックについて特筆すべき点が良い感じに書かれています。
その後もDevin君には不足しているテストの追加もお願いできました。
最後にテキスト生成処理を行っている部分のライブラリをVercel AI SDKに差し替える、という大規模タスクを頼んでみました。
流石に苦戦してそうですが、CIを通過するまで挑戦を繰り返し、
tsconfig.jsonに手を入れるくらい深掘りして改修するようなプルリクエストが作成されました。
この時点で、きちんとした指示を出してAIの得意領域にハマったら、という前提はあるものの、
ある程度のベテランでないとできないようなタスクも任せられるポテンシャルを感じました。
ちなみにDevin君が各ステップでどのような改修を行なっているか、誰がどのようにDevinを活用しているかはダッシュボードで確認可能です。
まだまだ期待するほど完璧な動きをしてくれるわけではないという話も散見され、
またコストパフォーマンスの面で気軽に導入できるとは言えない状態ではありますが、
開発業務の未来の姿を感じることができる体験でした。
まだまだ試していない機能として、DevinがVSCode extentionとして動く機能もあるようです。
最終的にGitHub Copilotとどちらを活用するか、といった趨勢がこの1年で決まっていくだろうなという予感があります。
またDevinそのものも、ほぼ同等の動きをするアプリケーションがOSSとして開発されており、
この手のツールの戦国時代ぶりは目を見張るものがあります。
日々膨大な量のアップデートがあるAI領域では、こういった形でチームで知見を共有できるとありがたいですね。
まとめ
- Devinは開発に特化したAIエージェント
- Slack、GitHubとの統合を行う
- リポジトリの設定でCI PASSするための条件など細かく設定可能
- 一度セットアップしたらSlackでメンションするだけ
- ダッシュボードで詳細な着手状況を確認可能
Discussion