Inside GitHub: Working with the LLMs behind GitHub Copilot
Code generation was considered too difficult for existing models before GPT-3, and early Copilot versions suffered from wrong-language suggestions and had no awareness of files beyond the one currently being edited.
An initial chatbot prototype was abandoned in favour of the IDE modality, and early models defaulted to the most popular programming languages instead of detecting the correct one from context.
Model accuracy on evaluation problems rose from about half to upwards of 90 percent; prompt techniques including neighboring-tab context retrieval and file-path injection produced large lifts in code acceptance; GitHub Copilot gained new capabilities and GitHub Copilot X was announced as the next evolution.
Show all 5 reported metrics
Frequently asked questions
What did this team achieve with this AI workflow?
Model accuracy on evaluation problems rose from about half to upwards of 90 percent; prompt techniques including neighboring-tab context retrieval and file-path injection produced large lifts in code acceptance; GitHu…
What tools did this team use?
GitHub Copilot, GPT-3, Codex model, GitHub Copilot X, OpenAI.
What results were reported?
Evaluation problem-solving rate (initial): about half of the problems; Evaluation problem-solving rate (improved): upwards of 90 percent; Code acceptance rate (neighboring tabs): huge lift in our acceptance rate and characters retained; Code acceptance (cross-file context): huge boost in code acceptance (source-reported, not independently verified).
What failed first in this deployment?
An initial chatbot prototype was abandoned in favour of the IDE modality, and early models defaulted to the most popular programming languages instead of detecting the correct one from context.
How is this workflow AI workflow structured?
Developer edits code in IDE → Neighboring-tab context retrieval → File path context injection → Pseudo-document prompt construction → LLM generates code suggestion → Developer accepts or rejects → Fine-tuning on user codebase.