$30 off During Our Annual Pro Sale. View Details »

Timee-event-Copilot

Yuki Hattori
September 25, 2023

 Timee-event-Copilot

Yuki Hattori

September 25, 2023
Tweet

More Decks by Yuki Hattori

Other Decks in Technology

Transcript

  1. 開発⽣産性をあげる

    徹底解剖!
    Yuki Hattori
    Customer Success Architect
    GitHub Japan

    View Slide

  2. View Slide

  3. 開発者の⽣産性向上
    本当の問題に集中でき、満⾜度も向上
    イノベーションを加速
    より速くプロトタイプやイノベーションを実現
    スキルギャップを埋める
    新しい開発⾔語や技術を習得
    開発者に⼤きな
    アドバンテージを提供

    View Slide

  4. 55%
    46%
    74%
    のコードがCopilotによるもの
    速くタスクを完了
    がより満⾜する仕事に
    集中できたと証⾔
    プロジェクトの⽂脈に即したコードを提案

    View Slide

  5. OpenAI
    Model
    文脈
    提案

    View Slide

  6. 今後のGitHub Copilot
    リファクタリング (コード翻訳)
    コードレビュー (コード解説)
    ドキュメント化
    今後のGitHub Copilot
    ユニットテスト
    コードエラー検知
    デバッグ
    コードレビュー
    AI による Pull Request
    現在のGitHub Copilot
    コメントをコードに変換
    繰り返すコードを補完
    代替⼿段を表⽰
    1
    計画
    2
    分析
    3
    設計
    4
    実装
    5
    テストと統合
    6
    メンテナンス
    X
    エディタを⾶び出し
    SDLC 全体を AI で⽀援

    View Slide

  7. GitHub Copilot X
    Copilot for Pull Requests
    Copilot for Docs
    Copilot for the CLI
    Copilot Chat

    View Slide

  8. GitHub Copilot Future
    コードやドキュメントから、ユニットテストを
    自動生成
    TestPilot
    Codespaces上に存在するすべてのコードを使う
    ことで提案を改善
    GitHub Copilot for
    *Your* Codebase
    キーボードを使わずにコードを書く
    Copilot Voice
    https://githubnext.com/

    View Slide

  9. December, 2022 GitHub Copilot
    GitHub Copilot
    Behind the curtain

    View Slide

  10. GitHub Copilot の裏側
    • GitHub Copilot の仕組み
    • GitHub Copilot がエディタの情報をどのように取るのか
    = GitHub Copilot Prompt Crafting
    • Tips and Tricks

    View Slide

  11. GitHub Copilot の 3 Layer
    Copilot Platform
    Copilot Client OpenAI Model
    API
    * 上記は GitHub Copilot のアーキテクチャを抽象化した図です
    Githubによって開発及び保守。
    認証、セキュリティ、プライバシー
    Githubによって開発及び保守。
    カスタムプロンプト作成と自動補完
    ユーザーエクスペリエンスを提供
    OpenAI によって開発
    Azure でホスト
    スケーラブルなデリバリー

    View Slide

  12. GitHub Copilot のモデル
    GitHub Copilot のモデル選定重要事項
    • 精度
    • 速度 ←とても重要
    現在は GPT3.5-turbo の派生版である Sahara-base を利用
    Codex は今は利用しておりません
    今後モデルは変わる可能性があります

    View Slide

  13. Large Language Models
    LLM
    To k
    1. Attention
    2. Tokenization
    3. Autoregressive(自己回帰型)
    Very Very …. Very Large Neural Network
    To,k ens
    To,k,ens in
    To,k,ens, in .
    Tokens in. To,k,ens, in, .
    テキストはトークンに分割され、モデルに1つずつ供給されます。
    前のトークンに基づいて次のトークンを予測する、訓練済のモデルです。

    View Slide

  14. Prompt Crafting
    • Language Marker: プログラミング⾔語情報
    • Path Marker: 現在のファイルへのパス
    • Neighboring Tabs: ⾮アクティブなオープンしているタブ
    Language Marker の例
    "html": "",
    "python": "#\!/usr/bin/env python3",
    "ruby": "#\!/usr/bin/env ruby",

    View Slide

  15. Prompt Crafting: Markers
    Path:
    foo/foo.py
    Language Marker
    HTML:
    Python: #\!/usr/bin/env python3
    Ruby: #\!/usr/bin/env ruby
    ファイルパスおよび言語マーカーは、強力なシグナルを言語モデルに
    提供し、出力の構文と文法を調整します。

    View Slide

  16. Prompt Crafting: 隣接ファイル
    Open Tab 1 Open Tab 2
    他のオープンタブからのコード
    スニペットは類似性を検索し、
    プロンプトに追加のコンテキス
    トとして注入されます。

    View Slide

  17. Snippet Inclusion – 隣接するタブ
    • 最⼤で 20 ファイルまで 過去の履歴 (FIFO) を遡り読み込む
    • 同じ⾔語のファイルを読み込む

    View Slide

  18. 文字の類似性でファイル内を検索
    • GitHub Copilot は 現在⽂字の類似性 を活⽤して類似性を求める
    • 関数名はシンプルかつ、意味のあるものにする必要性
    • AB テストなどでこの⽅法は変わります / カーソル履歴など
    • ⼀貫して⾔えること
    • ⼀貫性のある命名規則ときれいなコード
    • 現在何をしているのかにフォーカスしながら作業

    View Slide

  19. GitHub Copilot の制限
    • プロンプトの制限トークン数
    • トークンが無限に渡せるわけではない
    • 渡せるトークンの数は増加中
    • より多くの情報を渡すには…?
    • ⽇本語よりも英語を使う
    • 短く、わかりやすい変数名
    • ⼀⽅でトークンが多ければ確実に精度が上が
    るわけではないのでご注意を
    https://platform.openai.com/tokenizer

    View Slide

  20. December, 2022 GitHub Copilot
    GitHub Copilot
    Tips and Tricks
    BJOBUJWFEFW

    View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. まとめ: あまり気にしすぎない
    • 「知っている」と「知らない」では GitHub Copilot の飼い慣らしに差はでますが、
    GitHub ではそれを意識しないでも高いコード提案ができるようにプロダクトを作っています。
    • 結局のところ「良いコーディング」をすれば、提案されるコードも「良いコード」になります。
    • 人間にとって良いコーディング
    • 文脈を知らない人でもわかるようなコーディング
    • ミスを誘発しないような確かなコーディング

    View Slide

  36. View Slide

  37. View Slide