1. ninjinkunの声日記
  2. 社内ワークショップ、コーディ..
2025-06-03 10:47

社内ワークショップ、コーディングエージェントの中身

サマリー

このエピソードでは、AI Weekの一環として実施される社内ワークショップでのコーディングエージェントについて詳しく説明しています。特に、GitHub Copilot Chatを使用したワークショップを通じて、AIを活用したコード生成の仕組みやその効果が語られています。

AI Weekの概要
こんにちは、ninjinkunです。
今週は、会社がAI Weekみたいなことをやっていてですね、これは普段の仕事の手を一回止めて、もっとAIを使って生産性を出たり、新しいアイデアを試してみようという一週間になっていて、
主にハッカソンとワークショップで構成されているんですけど、ハッカソンというのは、何らかのプロジェクトをみんなでやる、一人でやってもいいんですけど、基本はチームでこのお題をやってみようみたいなのを募ってやるスタイルになっていました。
もう一つがワークショップで、これも有志で、それぞれにワークショップをデザインして、それに参加したい人は参加して、一通り用意されたマテリアルをやってみるみたいな感じで構成されてて、私はこの中でワークショップを一個担当していて、Agentic Coding 101というワークショップをやっております。
これはリストアプリの開発とかにも使っている、コードを書いてくれるエージェント、カーソルとか、クラインとかいろいろあるんですけど、その中で会社が公式に契約して提供しているGitHub Copilot Chatという拡張があって、これを使ってコードをAIに書かせてみようというワークショップをやってます。
すでにこういうものを取り組んでいる人も同僚の人の中には多いと思うので、そういう人には特に新しいことはないんですけど、どうも見ているとまだまだやったことがない人たちもいるっぽいので、その人たち向けに自分が数ヶ月AIを使っていろいろコードを書いてきてみたので、その知見をお知らせしようというのをやってますね。
ひるがえてみると、このAIを使ったコードというのもリッスンで私は試し始めたので、本当に副業が本業にフィードバックされる良い例かなと思いますけど、おかげで社内でもエージェントを使ったコーディングを割と早めに試した一人として、こういうワークショップをやっておりますという感じですね。
さっき1回目のオフィスアワー、質問とかできる回を、普段はワークショップ自体は完全に非同期で、会社がいろんなところに人がいる会社なので、同期して何か一箇所に集まっているとできないので、全部非同期でやるんですけど、だから基本はドキュメントは書いたから読んでくれ、これに従っていろいろ課題をこなしてくれというスタイルにしてるんですけど、
一応ビデオチャットを繋いで、何でも質問できる時間というのを2回くらい設けて、さっき1回目やって、多分ワークショップは全体で20人くらい人が参加してるんですけど、さっきは7、8人くらい来てくれて、多分ほとんどみんなインドの人だと思いますね。
どういうものを作ったかとかそういう話をして、何か困ったことないかとか、1人日本語ができる方がいて、ちょっと日本語で話したりして面白かったですね。
何度もやっており、そういうワークショップをやってるんですけど、この中で一通りワークをこなした後に、最後にこのコーディングエージェント、プログラムを書いてくれるAIがどういうふうに動いているかを解説するようなドキュメントを作りたいなと思って、
自分でもこのコーディングエージェントの中身をいろいろ調べてみたんで、それについてちょっとしゃべろうと思うんですけど、今回ワークショップで使ったのはCopilotChatっていうGitHubが開発してる機能拡張なんですけど、これ自体はまだオープンソースになってなくて、
今後オープンソースにする計画があるらしいんですけど、まだ中身読めないんで、その代わりにKleinっていうこの手のコーディングエージェントの中では8位だったオープンソースのプロジェクトのソースコードを読んでみました。
すでにこれもいろいろインターネットには解説を書いてくれてる人がいて、そういうものを参考にしながら、あとは実際にこのコーディングエージェントに解説させながら読んだんですけど、非常にシンプルな仕組みで実現されてることが分かって結構びっくりしたんですけど、
もうちょっと説明していくと、まずシステムプロンプトっていうファイルがあって、これがかなり全体の核になってるんですよね。
KleinっていうのはVSCodeっていうコードを書くエディターの中で動く機能拡張になってるんですけど、なのでこのKlein自体はVSCode拡張のコードなんですけど、その中に自然言語で書かれたシステムプロンプトっていうファイルがあって、
これを見ていくとここにLLMに渡すための命令がずらっと書いてあるんですよね。まずあなたはKleinですっていう名前を教えるところから始まって、次に来るのがツールユーズっていうところが来て、こういうツールが使えますよってことを教えるんですよね。
例えばファイルを閲覧するとか、ファイルを書き換えるとか、あとはWebブラウザを開くとか、こういうツールが揃ってますっていうことをずらずら書いてあって、使うときはこういうふうに使えますっていう使い方の説明が書いてあると。
最後にあなたはこういうふうにタスクを行なしてくださいっていう、そういう命令が書かれてて、ルールとか目的が書かれてて、これを例えばコードを書かせるときに、
例えば私のポート保留ページを作ってくれみたいなことを多分命令すると思うんですけど、その命令と一緒にこのシステムプロンプトが投げられて、これによって、その先はLLMですよね。
このシステムプロンプトとツールが用意されているだけで、あとは全部LLMなんですよね。
これを投げると、そのLLMが、じゃあこのポート保留ページを作るにはこれが必要だから、クラインさんあなたはこのタスクを実行してくださいと、例えば既存のファイルを読み取るとか、新しくファイルを作るとか、そういうのをクラインにLLMが命令として返してくると。
クラインはそれを受け取ると、そのタスクを実行して、その結果をまたLLMに投げ返すっていう。
これをループが何回か回って、どうもう完成したよだとLLMが判断したら、そこで初めてユーザーにできました、どうですかっていうのを返してくるっていう。
こういう仕組みになってて、なので仕組みは単純なんですよね。
LLMはタスクの実行ごとにリクエストごとに記憶をしてるわけじゃないんで、毎回会話の履歴みたいなやつはクライン側が覚えていて、前回まではこういう話をして、今回はこういうことをお願いしますっていうのを履歴としてつけて投げるっていう。
実際はそのLLMの側に今まで言ったことをキャッシュしてくれる機能があったりするんで、それを使うとどうもコストが少し削減できるらしくて、それを使ってはいるんですけど、原理的には毎回今までの履歴をつけて投げると。
コーディングエージェントの仕組み
なのでやってることは、クライン側はツールを提供するのと、会話の履歴を覚えておくのと、LLMから言われたことに対してツールを実行してそれを返すってことをしてるだけで、なんと行動が勝てるっていう。
これすごいですよね。
あとよくこんな使い方が発見されたなというか。
その往復の中に人間が買い代しないわけですよね。
なので、LLMがクラインさんこのツールを実行してくださいって言って、クラインが実行して返してってところには人間の判断を挟むことができるんですけど、
例えばファイルを削除するとか危険だから、これは人間が許可するようにした方がいいって判断したら、それは人間の許可を取るようにできるんですけど、
本質的にはその許可を取らなくても実行できてしまうから、そこから人間を排除することで非常に自律的に動くようになるというのが、これがコーディングエージェントかっていうのがですね。
ちょっとこの説明ちゃんと伝わってるかわかんないですけど、もし気になるなら多分そういう解説サイトはいっぱいあるんで何かしら探してほしいですけど、
自分としてはね、そうかこんな仕組みでできるんだっていうのがね、なかなか驚きでしたね。
なんで、なんか自分でも作ってみたいなという気持ちになりますね。
という感じで今日は非常にシンプルな仕組みで、そのシステムプロンプトと今までの記録と実際にコードを書き換えたり読んだりするツールだけで、どうもコードを書くエージェントが成立してるっていうのがね、わかったという話をしました。
はい、ありがとうございました。
10:47

コメント

スクロール