Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Copilot Behind the Scene

Yuki Hattori
September 13, 2023

GitHub Copilot Behind the Scene

Yuki Hattori

September 13, 2023
Tweet

More Decks by Yuki Hattori

Other Decks in Technology

Transcript

  1. 今後のGitHub Copilot リファクタリング (コード翻訳) コードレビュー (コード解説) ドキュメント化 今後のGitHub Copilot ユニットテスト

    コードエラー検知 デバッグ コードレビュー AI による Pull Request 現在のGitHub Copilot コメントをコードに変換 繰り返すコードを補完 代替⼿段を表⽰ 1 計画 2 分析 3 設計 4 実装 5 テストと統合 6 メンテナンス X エディタを⾶び出し SDLC 全体を AI で⽀援
  2. GitHub Copilot の裏側 • GitHub Copilot の仕組み • GitHub Copilot

    がエディタの情報をどのように取るのか = GitHub Copilot Prompt Crafting • Tips and Tricks
  3. GitHub Copilot の 3 Layer Copilot Platform Copilot Client OpenAI

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

    ←とても重要 現在は GPT3.5-turbo の派生版である Sahara-base を利用 Codex は今は利用していません *今後変わる可能性があります
  5. 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つずつ供給されます。 前のトークンに基づいて次のトークンを予測する、訓練済のモデルです。
  6. Prompt Crafting • Language Marker: プログラミング⾔語情報 • Path Marker: 現在のファイルへのパス

    • Neighboring Tabs: ⾮アクティブなオープンしているタブ • Code Retrieval: コードベースの中の他の場所のコード (New) Language Marker の例 "html": "<!DOCTYPE html>", "python": "#\!/usr/bin/env python3", "ruby": "#\!/usr/bin/env ruby",
  7. Tips and Tricks: あまり気にしすぎない • 「知っている」と「知らない」では GitHub Copilot の飼い慣らしに差はでますが、 GitHub

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