25K Views
March 24, 23
スライド概要
社内ハッカソン2023で平木場が発表した内容を public 向けに調整したものです。
ChatGPTのAPIを使ってあれやこれやします。
後半はネタです。
ちなみに爪痕賞という賞をいただきました。やったぜ
https://twitter.com/Shitimi_613/status/1639200384815362049
サイボウズ株式会社 開発本部 生産性向上チームで働いています。
新⼈がもうクソデカリポジトリ を読まなくていいようにする サイボウズ社内ハッカソン2023 2023/03/24 チーム・きばAI爆誕 社外公開版
メンバー紹介 メンバー • 平⽊場 ⾵太(きばちゃん) • 嫌いなもの: 機械学習 • Eさん • ⾮公式メンバー • きばAIに対しての⼊⼒例を ちょくちょく提⽰してくれた Twitter: shitimi_613 GitHub: korosuke613 2
ChatGPTが今アツい! ...らしい 3
4
5
なんかすごいぞ! 6
社内のクソデカソースコードを渡して 解説してもらえれば オンボーディングが早くなったりせんかな? 7
ChatGPTのAPIを使う • ⼤体ここのドキュメントを読めばいい https://platform.openai.com/docs/guides/chat • Node.js 向け公式 SDK がある https://www.npmjs.com/package/openai • modelは gpt-3.5-turbo を使⽤ • korosuke613/code-sensei を作ったぞ https://github.com/korosuke613/code-sensei 8
アプローチ code-sensei 9
プロンプトの中⾝ 前提 読み込ませたソースコード ユーザからの質問 10
11
いけるやん! 他のことも聞いてみるか 12
IO.tsについて教えて `IO` クラスは、ファイルシステムからファイルを読み込み、 `Code` オブジェクトとして保持します。 `storeDir` メソッドを⽤いると、指定したディレクトリ以下の ファイルを再帰的に読み込んで ... 🤖 そのクラスはどこで使われてる? このクラスは、プログラミングの先⽣(Sensei)を表すクラス で、質問応答のロジックが実装されています。このクラスを使 うことで、OpenAIのAPIを⽤いた対話型の ... 🤖 IOクラスについて聞いたのに違うクラスの話を始めた こいつ、⽂脈を理解できてない??? 13
過去の会話も毎回送らないといけない 前提 読み込ませたソースコード 過去の会話内容 (NEW) ユーザからの質問 14
アプローチ(過去の会話も考慮) code-sensei 15
IO.tsについて教えて `IO` クラスは、ファイルシステムからファイルを読み込み、 `Code` オブジェクトとして保持します。 `storeDir` メソッドを⽤いると、指定したディレクトリ以下の ファイルを再帰的に読み込んで ... 🤖 そのクラスはどこで使われてる? `IO`クラスは`Sensei`クラスで使われています。`Sensei`クラ スは、<中略>具体的には、以下のメソッドで使⽤されます。 - `createFineTuneFile`: `Code`オブジェクトのリストを受け 取り、fine-tuneのためのトレーニングデータを作成... 🤖 ちゃんと⽂脈に沿った会話ができるようになった! 16
次はIO.tsのテストコードを書いて テストコードを書くために、`jest`をインストールします。以 下のコマンドを実⾏してください。`npm install --save-dev jest @types/jest ts-jest` 次に、`src/`ディレクトリ内に、`IO.test.ts`という ... 🤖 他のテストコードも書いて Error: Status 400 This model's maximum context length is 4097 tokens. However, your messages resulted in 4112 tokens. Please reduce the length of the messages. !? 🤖 処理できるトークン数を超えてしまったためエラーとなってしまった 17
ChatGPT(gpt-3.5-turbo)の制約 • トークン数が最⼤ 4096 • トークンは単語を分割したもの • 例えば “hamburger” だと[“ham”, “bur”, “ger”]でトークン数は 3 • ⽇本語(マルチバイト⽂字)の場合は 1 ⽂字 1 トークンになるらしい • fine tuning(モデルのカスタマイズ) ができない • GPT-3までしか対応してない 前提 読み込ませたソースコード 最⼤ 4096トークン 過去の会話内容 ユーザからの質問 18
アプローチ(最⼤トークン数を考慮) code-sensei 古い記憶から忘れていくようになった 19
他のテストコードも書いて [debug]: 現在のトークン数: 4049 [debug]: 削減した過去の会話のトークン数: 487 [debug]: 削減した過去の会話の数: 4 💻 デバッグログ 次は、`Sensei` クラスのテストコードの例です。`jest` を使⽤ しています。 ```typescript import { Sensei } from .... 🤖 会話を続けられるようになった! 20
それでも結局4096トークン しか扱えないんでしょ? ⼤規模リポジトリの解説とかできるん? 21
⼤規模リポジトリはヤバい!(社外向け) • korosuke613/code-sensei の *.ts → 2670トークン(ファイル数: 5) • axios/axios の ./lib/*.js → 29554トークン(ファイル数: 54) • facebook/react の ./packages/react/src/*.js → 109524トークン(ファイル数: 57) 🤯 22
それでも結局4096トークン しか扱えないんでしょ? ⼤規模リポジトリの解説とかできるん? 正直なところ現状厳しい... 23
でも 今後性能が上がればワンチャンある 24
今後性能が上がればワンチャンある • fine tuning できるようになれば扱えるトークン数を超えた情報 を扱えるようになる...かも • GPT-4 は最⼤ 32768 トークン扱えるので多少マシになる • 現状 Limited beta • wait list に登録したけどハッカソン中に invitation は来なかった... 🥴 25
タイトル達成ならず... 「新⼈がもうクソデカリポジトリを読ま なくていいようにする」 26
☄ 今後に期待!!! 27
☄ ドドドドドドドド!!!! 今後に期待!!! ???? 28
ドドドドドドドド!!!! 今後に期待!!! なんだなんだ?? 何これ? 29
30
GitHub Copilot X • AI のスーパーパワーでコーディングを⽀援する GitHub Copilot の進化系 • Copilot Chat • IDE上でコーディングに関するチャットができるよ • Copilot for Pull Requests • プルリクのレビューや提案をしてくれるよ • Copilot for Docs • いろんなドキュメントに関する質問に答えるよ • Copilot for CLI • シェルのコマンドなんかを質問できるCLIだよ https://github.blog/jp/2023-03-23-github-copilot-x-the-ai-powered-developer-experience/ 31
!? また、GitHubはこの機能をあらゆる組織のリポジトリや社 内ドキュメントに組み込み、開発者が組織のドキュメント やよく使われるコード、社内ソフトウェアについてChatGPT に似たインターフェイスで質問すると、すぐに回答が得ら れるようになることを⽬指しています。 https://github.blog/jp/2023-03-23-github-copilot-x-the-ai-powered-developer-experience/ 32
俺がやりたかったことを GitHubが作ってくれる...ってコト?! 良# ! ($ " )人 *1 &人 す& , ? ...... ないあも いいいう かんつ なじ⼀全 -⼈部 で 33
code-senseiよさらば... ここまでハッカソン1⽇⽬ 34
2023/03/27追記 • ChatGPT plugins も登場したので、そっちでもなんとかできそう • https://openai.com/blog/chatgpt-plugins 35
というわけで、せっかく作ったので コードではなく僕⾃⾝になってもらおう と思いました 36
きば AI 爆誕 ~きばちゃんがいなくても代わりはいるもの~ サイボウズ社内ハッカソン2023 2023/03/24 チーム・きばAI爆誕 社外公開版
なんか、平⽊場のいろんなエピソードが書かれている kintone アプリ 社外秘 38
平⽊場のエピソードについて • 伝説(平⽊場以外が書く)と解説(平⽊場が書く)がセットになっている • もう1⼈の平⽊場を作るにはうってつけの内容 伝説例1 E「無⼈島に何か1つ持っていけるならきばちゃんにするわ。飽きなさそう。」 きばちゃん「⾁になりますしね。」 E「そんなバイオレンスなことしねーよ。」 解説例1 ⾁になるとは⾔ったけど、もし本当にその時が来たとして、素直に⾷べられる かというとそこはまた別のお話 こんなのが 89 個も登録されている(2023/03/27時点) 伝説例2 E「墨⽥区は両国国技館でワクチン接種するんですよ」 きばちゃん「え、あのリングの上で?」 解説例2 両国国技館と⾔えば Sumo 相撲と⾔えばあの塩を投げる輪っかですね。 輪っかと⾔えばリング。 ⼟俵は出てきませんでした.... あのリングの上でワクチン打てるって考えるとワクワクしますよね。僕にとっ てそれはとても魅⼒的でした。 やはり⼟⾜で⼊ってはいけないのでしょうか?塩を巻かないといけないので しょうか?? 相撲には詳しくないのでよくわかりませんが、⽇本相撲協会がどう判断するの か、⾒ものですね。 39
すり替えておいたのさ! 前提 前提 読み込ませたソースコード 「伝説のきばちゃん」 の内容を社外向けにしたもの 過去の会話内容 過去の会話内容 ユーザからの質問 ユーザからの質問 code-sensi kiba-AI 40
伝説をプロンプトに含める ②`【伝説】\n\n【解説】`みたいな 形式にしてプロンプト化 ③突っ込め! 前提 「伝説のきばちゃん」 の内容を社外向けにしたもの 過去の会話内容 ①パブリックにしていい内容に修正してYAML化 ユーザからの質問 41
動作確認じゃ! 42
伝説 きばちゃん「うおー、GitHubダークモードとても⿊い」 E 「そりゃ⿊いでしょう笑」 K 「Tが”このホワイトチョコ⽩い”って⾔ってたの思い出した」 きばちゃん「そりゃ、ホワイトチョコですから笑」 【きばちゃんによる解説】 Tとは、元同僚の⼈物です。彼⼥が⾔った”このホワイトチョコ⽩い”は、まさかのフェ イクニュースでした。 実際には「このホワイトチョコ、美味しい!」と⾔っていたので、私が「それ当たり前 じゃない?」と突っ込んだのです。 しかし、その⼀⾔に私は感動を覚えました。 確かに、「⽩い」という形容詞は不要な情報であり、そこに含まれる「美味しい」とい う評価こそが重要だったのです。ともちんは、そんな深い気づきをもたらしてくれまし た。 今回のGitHubダークモードも同じですね。 「とても⿊い」という表現よりも、「とても⾒やすい」という表現が適切なのかもしれ ません。 成果を出すためには、必要な情報を正確に伝えることが⼤切です。 ※太字は僕が書きそうなセンテンスです。 🤖 43
伝説 きばちゃん「アレグラってなんですか?」 K 「アレルギー対策の…」 きばちゃん「アレルギー対策のグラノーラですか?」 【きばちゃんによる解説】 実は、私はアレグラを知らなかったのです。 Kさんから「アレルギー対策の...」と答えが返ってきた瞬間、「あぁ、グラノーラか」 と誤解してしまいました。 恥ずかしながら、その後に初めてアレグラがアレルギーの薬であることを知りました。 このように、先⼊観や⾃分の知識の範囲外にある情報を聞いた場合には、聞き⼿が正確 に理解することが難しくなります。 私は、アレグラという⾔葉やそれに関連する情報を知らなかったため、勝⼿にグラノー ラだと解釈してしまいました。 しかし、これを機に私は、アレグラという薬の存在を知り、より広く深い知識を⾝に着 ける機会になりました。 新しいことに出会うことは、常にチャンスですね。 ※太字は僕が書きそうなセンテンスです。 🤖 44
ハッカソン中にきばちゃんが勘違いしちゃった伝説を会話形式で作ってください 【伝説】: 参加者「きばちゃん、今度のハッカソンはテーマが『移動⼿段の⾰新』だよ」 きばちゃん「なるほど、移動⼿段のくつがえりですね!」 参加者「いや、⾰新だよ。進歩的な意味で」 きばちゃん「あ、そっか。じゃあ、プレゼンのときに履物を投げつけたら印象に残る と思う」 参加者「それは違う意味で印象に残りそうだけど……」 【きばちゃんによる解説】: 「移動⼿段の⾰新」と聞いたとき、僕は「くつがえり」という⾔葉を勘違いしてしま いました。まさか⾰製品を切り裂いて、何か新しい乗り物を発明するのかと思ったん です。 そんなわけで、プレゼンの時に履物を投げつけるアイデアを出してしまいましたが、 これは完全に勘違いでしたね。 参加者たちは困惑していましたが、僕は⾃分のとんでもないミスに気づいて、恥ずか しくて顔が熱くなってしまいました。 でも、結果的にはこのエピソードがハッカソンでの思い出として残ってしまいまし た。皆さんも、⼤事な話を聞くときは、⽿を傾けてじっくりと聞き取るようにしま しょう! ※太字は僕が書きそうなセンテンスです。 🤖 45
ヤバいそろそろ発表時間になる 46
まとめ • GPT-3.5はすごいぞ! • GitHub Copilot X 業務利⽤をまじめに考えてもいいかも • 特にコード提案以外の機能 • きばAIはプロトタイプができました • これで僕がいなくなっても解説ができるようになりますね 各種イラスト:いらすとや (https://www.irasutoya.com/) 47