
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
リンクをコピー
記事をブックマーク
服部佑樹氏:ここから、「Behind the curtain」というところで、ちょっと裏側にいきたいと思います。仕組みと、あとは、どうやって読み取るのか、Tips and Tricks、というところでいきたいと思います。
先ほど、3レイヤーありますというお話をしました。やはりこのGitHub Copilot、「Copilot Client」と呼ばれるところですね。「Visual Studio」やVisual Studio Codeがある中で、いろいろな実装があるんですが、サポートしているエディタの中ではVisual Studio Code向けの実装が一番最新のもの、かつ、精度が高いものになっているかなと思います。
「Nightly(GitHub Copilot Nightly)」というエクステンションでGitHub Copilotを入れると、ダウンロードできるのが、見えるのですが、我々もここらへんを進化させるためにA/B Testingをしています。
どこのファイルを見て言ったほうが、コードの採用率が良いかというところも含めて、いろいろ実装を進めているので、もしそういうところにご興味がある方は、1回見ていただければいいんじゃないかなと思います。
このLarge Language Models、今のトレンドで、GitHub Copilotもそれを使っていますが、けっこう勘違いされているところがあります。
例えば「GitHub Copilot」、ないし、「Copilot Chat」など、新しくできた、いわゆるチャットベースのインターフェイスを使っていると、なんでもかんでも予測してくれるという以外にも、例えばJavaのコードをRubyにしたり、RubyのコードをPythonにしたりなど、コンバージョンをしてくれるという印象を持つ方も多いと思うんですね。
実際、それは半分正しくて、半分間違いなんです。Large Language Modelsは、いわゆる次の言葉を読むモデルですね。
結局のところは、ほかのエンジンの究極版みたいなものなので、どうやって次の言葉を提案させるための情報を提供するのかが重要になってきますし、あくまでもコンバージョンモデルではなく補完モデル、というところで、コンテキストが本当に重要になってきます。
「Prompt Crafting」と社内では呼んでいますが、実際にこのGitHub Copilotにどんな情報を渡すのかが、けっこう実装で大事になってきています。
GitHub Copilotが読むファイルの一番重要なものは、上から順番になっているんですけれども、GitHub Copilotも、ChatGPTなどと一緒です。プロンプトとしてイメージしてもらうとわかると思いますが、リクエストボディに情報を突っ込んで、バックエンドに渡して、コードが提供されて返ってくるというかたちです。
ただ、やはりトークンに限りがあるので、全部のソースコードを渡す側のトークンに入れて、GitHub Copilotに提案をもらうことってなかなかできません。
あとは、それは速度を落とすという問題になるので、なるべく最低限のトークン数で、リクエストも早くポンポンポンポン送れるところを目指していると、じゃあ、どういうプライオリティでどんどん入れていくのかがけっこう重要になってくると思います。
そうした時、Pythonで書いている場合、隣で開いている別のコードはたぶんあまり価値がない。もしかすると、バックエンドのインターフェイスと合わせたいという、ユースケースはあるかもしれませんが、それは常ではないと思います。
あとは、キャメルケースなのかスネークケースなのかというところも含めて、やはり違うところもあります。なので、今のところ、GitHub Copilotは同じプログラミング言語のファイルを読んでいます。
「Language Marker」のところで、よく「これはPythonです」と一番上の先頭行に表記されていると思います。
あとはファイルパスです。例えばMVCのモノリシックなアプリケーションとかを考えると、ディレクトリの下にたぶんControllerがありますよね。そういうところできちんとファイルパスも読んでいって、今、このユーザーが何をしているのかも渡るようになっています。
(スライドを示して)あとは、オープンにしている非アクティブなタブというところで、これも全部読むわけではありませんが最大一応20ファイルまで読む可能性があります。
ですが、「First In, First Out」で、どんどんどんどん溜まっていくので、最新のファイルから、「たぶんこの人は、前の動作でこのファイルにアクセスしたからここを読むんだろうな」とか、「ここはたぶん関連しているんだろうな」とGitHub Copilotは類推して、スニペットを入れます。Prompt Craftingの中に入れるということをやっています。こういったところが重要です。
なので、Language Markerのところとか、隣で開いているファイルをどうやってハンドリングするのかによって、けっこう精度が変わってくると思います。
実際にGitHub Copilotはどうやって類似性を測るかというと、GitHub Copilotは、文字の類似性を計算するアルゴリズムを活用します。
そうした時に、やはり似た文字が出現したほかのファイルのコードは、GitHub Copilotが参考情報として送るトークンの中に含まれる可能性が高くなります。
実際にGitHub Copilotをやる時には、きちんと命名規則をしておくと、さらに後ろのファイルまで影響してきちんと読んでくれる可能性が高くなるので、命名規則がかなり重要になってきます。
これは、GitHub Copilotの実装の話なんですが、実は日本に1人、GitHub Copilotの中の人というか、リサーチャーの人がいて、彼はずっとそういうエバリュエーションやGitHub Copilotをどうやって評価するのかというところをやっています。
自然言語としてどういうコードを書いていくのかというところも、調査から言えて、実際にこれは、かなり重要なところで、やはり我々も自然言語を読むトレーニングしたエンジンをGitHub Copilotのエンジンとして使っているので、いわゆる関数名も、言っちゃえば自然言語なんですよね。開発段階ではx、y、適当なfoobarなどを使いがちですが、やはりそういうところをきちんと調整してあげるといいです。
プロンプトの制限トークン数ですが、今のところ、512トークンから始まって、2048トークンまで含めることができるようになっていて、これは日に日に変わっています。
(スライドを示して)これが今の情報ですが、最新はたぶんどんどん上がりますし、今のところは、Large Language Modelsなども、どんどんどんどん与えられるトークン数を増やしていこうという方向に進んでいるので、ここはだいぶ変わっていくところかなとは思います。
一方で、多ければ多いほどいいという話ではないので、いかに最低限のコンテキストで最適な解をCopilotから引き出すかというところがかなり重要になってきます。
そうした時に、これは、こうしたほうがいいという話なのですが、トークン数を節約するには英語のほうがベターです。こういうちょっと言語的なところももしかすると関わってくるところかもしれないと思っています。
ちょっと、「Tips and Tricks」というところで、背景も含めてGitHub Copilotではどういったプラクティスがあるのかを、まとめたブログのようなものを個人的に作っているので、ぜひアクセスしていただくと、「あぁ、なるほどね」と(なると思います)。
もしかしたら、それぞれのセクションのヘッダーを見れば、「あぁ、なるほど」と、よくある目次だけ読めば納得できる本みたいな感じになっているかもしれない(笑)。アクセスして見ていただくと、「あぁ、なるほどね」と、ちょっとわかると思うので、ぜひ参考にしていただければなと思います。
Tipsとして挙げられるものをいくつか持ってきました。まず、便利なファイルのピン留め。例えばTypeScriptとかを書いていると、「.d.ts」、型定義ファイルがあると思います。デクラレーションファイルですね。
そういったファイルって、いわゆるインターフェイスや、引数で何を与えたらいいのかというところも含めて関数にまつわる情報をだいぶ持っているんですよね。
そういったものをピン留めしておくと、非常にGitHub Copilotの精度が上がります。もちろんピン留めするだけじゃなくて、「最近開いた項目」というところの履歴を残す必要があるので、そこはちょっと注意が必要です。
あとは、CSVやMarkdownのファイルに関しては、先ほど、同じ言語のファイルを読みますというお話をしましたが、今のところコメントアウトのところに持ってきてコピペしてもらうという方法がベストかなと思います。
それ以外にも、ライブラリ、共有ライブラリ、ないし、オープンソースのライブラリを使っている中で、どうやってそこの情報を含めるのかというところでいうと、Visual Studio Codeには、「定義へ移動」というボタンがあります。それでどんどんどんどん実装をさかのぼっていくと、GitHub Copilotは、実装のところまで見てくれるので、最終的に、「なるほど、こういう条件だったからこうなんだ」ということがわかってくれます。
あとは、先ほど言いましたが、一貫性のあるコーディングスタイルおよび命名規則がだいぶ重要になってきます。
というところで、あとは、見ていただければと思います。ぜひ、「GitHub Copilotでこんな方法がありました」みたいなことをTwitter(現X)などで共有していただければなと思います。
ものすごいざくっといきましたが、最終的にはみなさんが質問できるように我々は作っているので、元も子もないことをまとめで言っていますが、あまり気にし過ぎず、ハッピーコーディングというところで。
ぜひ、わかりやすいコードを書くというところを意識していただけたらなと思います。
というところで、次の方にバトンを渡したいと思います。ありがとうございました。
(会場拍手)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07