1 of 24

オレオレ

Github Copilot

を作ろう

okdshin

2 of 24

Github Copilotとは何か

  • Microsoft傘下のGithubとOpenAIが共同開発したコーディング支援ツール
  • コードの補完(Completion)をしてくれる
  • $10/month (個人利用)
    • 1500円/月くらい

3 of 24

引用:https://theconversation.com/so-this-is-how-it-feels-when-the-robots-come-for-your-job-what-githubs-copilot-ai-assistant-means-for-coders-185957

4 of 24

便利〜

5 of 24

Github Copilotには問題もある

  • コードが外部に送られてしまう
  • サービスがダウンすると使えなくなってしまう
  • サブスクのコストがかかる

6 of 24

オレオレ

Github Copilot

を作ろう

okdshin

7 of 24

OpenAIのモデルを使わないと

コードの生成はできないんじゃ?

8 of 24

コード生成のためのモデルがいくつも

公開されている

  • CodeLLaMA
  • SantaCoder
  • StarCoder ......
  • CodeGen2.5 ←今回はこれを使う

9 of 24

CodeGen2.5-7B-multi

  • Salesforceが公開しているコード生成モデル
  • 86種類のプログラミング言語をサポート
  • Apache v2ライセンス
  • Github Copilotで使われていたモデル�OpenAI Codexに匹敵する性能

10 of 24

エディタ上でコード補完

を走らせるにはどうすればいいの?

11 of 24

エディタ、言語の組み合わせの数だけソフトウェアを作る必要がある?

12 of 24

LSPに乗っかれば解決

  • Language Server Protocol
  • Microsoftが提唱しているエディタ拡張のためのプロトコル仕様とソフトウェア群

13 of 24

14 of 24

オレオレGithubCopilot

を作ろう

ローカルLLMでコード補完用

LSPサーバーを作ろう

15 of 24

ローカルLLMの実行:llama.cpp

  • モデルパラメータを4bit量子化してCPUGPUで高速に実行できる
  • モデルをGPUのメモリに

乗せられる分だけ乗せられる

16 of 24

LSP作成フレームワーク: pygls

  • パイグラス
  • LSP補完サーバー�を簡単に実装できる
  • ドキュメントの�管理もやってくれる

17 of 24

作った:Flatline LSP

Editor

LSP Server

Backend Server

  • pygls
    • documents
  • transformers
    • tokenize
    • generate
  • llama.cpp
    • model
    • kv_cache
  • cinatra
    • http serve
  • neovim
  • emacs
  • vscode
  • jupyter
  • ...

18 of 24

引用:https://theconversation.com/so-this-is-how-it-feels-when-the-robots-come-for-your-job-what-githubs-copilot-ai-assistant-means-for-coders-185957

(再掲)

Github Copilotの例

19 of 24

20 of 24

Flatline LSP

  • 無料
  • 完全ローカル処理
  • カスタマイズ自由

Github Copilot

  • $10/month
  • 外部サービスが必要

21 of 24

自由を失わずに

AIコード補完

生産性を上げよう

22 of 24

(苦労ポイント)

補完処理中に

新しい補完リクエストが来たら

今の補完処理は

キャンセルする

23 of 24

(今後)モデルを

LSPクライアントとして使う

  • 定義ジャンプでRAGができる
  • コード診断(Diagnosticsからのsuggest
  • 他のLSPサーバーを利用したLLM推論の投機的実行による高速化

24 of 24

(議論)生成されたコードを使えるか?

  • Github CopilotにはDuplication Detection機能がある(150文字以上のコードが対象)
    • 自前で同様の機能を追加はできる
  • 訴訟された場合はMSが対応してくれる
  • ほとんどの場合、明らかに問題なさそう
  • 例えば1行単位の補完にするのはどうか?