A cartoon person holding hands with a robot both with multiple speech bubbles

Como o GitHub Copilot lida com os dados 

Ryan Salva
Ryan Salva // VP de Produto // GitHub

Ao explorar a adoção do GitHub Copilot, você pode se perguntar quais dados ele coleta, como esses dados são usados, transferidos, armazenados e onde termina seu ciclo de vida. Neste guia, descreveremos o pipeline de dados do GitHub Copilot e explicaremos como mantemos a segurança dos seus dados enquanto são usados ​​para fornecer sugestões e respostas de código mais precisas possíveis.


Neste guia, você aprenderá como o GitHub Copilot:

  • Reúne contexto para melhorar prompts, sugestões de código e respostas.

  • Usa e descarta dados durante uma solicitação.

  • Protege contra bugs, vulnerabilidades e uso indevido.

  • Pode filtrar sugestões de código que correspondam a código público.


Não importa onde você esteja usando o GitHub Copilot: em um editor de código, na linha de comando, no GitHub.com ou em outro lugar; o pipeline de dados consiste em alguns componentes distintos: a entrada do usuário, o enriquecimento da entrada e as ferramentas de construção de prompt e o modelo de linguagem em grande escala (LLM) no núcleo. 

Falando de maneira ampla, o GitHub Copilot reúne informações e contexto e usa esses elementos para construir um prompt, que então envia ao LLM. Em seguida, o LLM formula uma resposta ou sugestão de código, que é devolvida ao usuário.

Diagram showing how the code editor connects to a proxy which connects to GitHub Copilot

Diagrama mostrando como o editor de código se conecta a um proxy que se conecta ao LLM do GitHub Copilot.

1. O GitHub Copilot reúne contexto e cria um prompt

Assim como os humanos, os LLMs fornecem melhores respostas quando têm mais contexto. Para o GitHub Copilot, o processo de coleta de contexto começa com o usuário final, onde quer que ele esteja interagindo com o GitHub Copilot. O GitHub Copilot pode reunir vários elementos para identificar o contexto relevante, incluindo o conteúdo do arquivo que você está editando, arquivos vizinhos ou relacionados dentro de um projeto, URLs de repositório ou caminhos de arquivo. No GitHub Copilot Chat, o contexto também pode incluir código destacado e perguntas e respostas anteriores. Você pode impedir que GitHub Copilot use determinado conteúdo como contexto para conclusões de código atualizando suas configurações de exclusão de conteúdo. Para obter detalhes completos sobre como o GitHub Copilot trata os dados do cliente e código, acesse a Central de Confiança do GitHub Copilot

Entender como o GitHub Copilot reúne e usa o contexto pode ajudar você e seus desenvolvedores a obter as melhores respostas. Por exemplo, se um desenvolvedor tiver um arquivo que descreve a lógica de negócios em aberto em seu editor de código, ele também deverá abrir o arquivo que contém os testes de unidade, que descrevem como a lógica de negócios deve operar. O GitHub Copilot incluirá esse contexto para criar o prompt.

2. Os prompts são testados quanto a linguagem tóxica, relevância e tentativas de hacking

Depois que o prompt for criado, ele passará com segurança para um serviço de proxy hospedado em um locatário do Microsoft Azure de propriedade do GitHub. O tráfego é encaminhado para regiões com base na capacidade; não podemos garantir que qualquer tráfego permanecerá em uma única região. No proxy, primeiro testamos o prompt em busca de linguagem tóxica, coisas como discurso de ódio, conteúdo sexual, violência e evidências de automutilação e relevância. Não queremos que o GitHub Copilot se envolva com modelos de baiting, linguagem vulgar ou questões não relacionadas ao desenvolvimento de código e software. Ao mesmo tempo, também nos protegemos contra ataques de hackers, detectando e bloqueando tentativas de enganar o modelo para que revele informações sobre como seu código funciona e como ele gera sugestões.

Supondo que todos os testes sejam aprovados, o prompt é passado para o modelo de linguagem em grande escala.

3. O modelo produz suas respostas 

Assim como o servidor proxy e a API GitHub Copilot, os LLMs do GitHub Copilot são hospedados em locatários do Azure de propriedade do GitHub. Esses LLMs consistem em modelos de IA criados pela OpenAI que foram treinados com texto em linguagem natural e código-fonte de fontes disponíveis publicamente, incluindo código em repositórios públicos no GitHub.

A forma como os dados são tratados neste ponto depende de algumas opções de configuração e do recurso específico do GitHub Copilot com o qual você está trabalhando. 

  • O GitHub Copilot no editor de código não retém nenhum prompt (como código ou outro contexto usado para fornecer sugestões) para treinar os LLMs básicos. Os prompts são descartados quando uma sugestão é retornada. Os assinantes do GitHub Copilot Individual podem optar por não compartilhar seus prompts com o GitHub, que de outra forma serão usados ​​para ajustar o modelo fundamental do GitHub. 

  • O GitHub Copilot fora do editor de código (incluindo CLI, Mobile e GitHub Copilot Chat em GitHub.com) reterá prompts, sugestões e respostas para reter o histórico de conversas e fornecer continuidade entre eventos de navegação de página e sessões do navegador, mas não reterá prompts, sugestões ou respostas para treinar o modelo fundamental do GitHub. 

Para obter detalhes completos sobre como os dados são tratados com segurança e responsabilidade, acesse a Central de Confiança do GitHub Copilot.

4. As respostas do GitHub Copilot são testadas quanto à qualidade do código, determinados identificadores exclusivos e código público correspondente

Cada resposta produzida pelo modelo passa pelo servidor proxy para pós-processamento. Aqui, a resposta é verificada quanto a linguagem tóxica e relevância, assim como o prompt, mas também deve passar por três verificações adicionais:

  • Qualidade do código: testamos sugestões de código em busca de bugs óbvios e vulnerabilidades de segurança comuns, como cross-site scripting e injeção de SQL. 

  • Identificadores exclusivos: truncamos respostas que contêm identificadores exclusivos, como endereços de e-mail, URLs do GitHub, endereços IP e credenciais codificadas.

  • Sugestões correspondentes ao código público (opcional com base nas suas configurações): embora as sugestões de código sejam sempre sintetizadas pelo modelo e nunca copiadas e coladas de um repositório, oferecemos proteção contra casos em que o modelo sintetiza, mesmo que coincidentemente, uma resposta correspondente ao código público. Os administradores também podem ativar um filtro que bloqueia todas as sugestões de código com mais de 150 caracteres que correspondam ao código público em GitHub.com. Continue lendo para saber mais sobre como isso funciona. 

Se uma resposta falhar em qualquer um dos filtros de linguagem tóxica, relevância, qualidade do código, identificadores exclusivos ou sugestões que correspondam ao código público, ela será truncada ou totalmente descartada. As respostas que passam em todos os cinco testes são retornadas ao usuário. 

Como o GitHub Copilot identifica o código correspondente?

Antes de continuar, vamos falar um pouco mais sobre o filtro de código público.

Nossa pesquisa sugere que cerca de 1% das sugestões do GitHub Copilot correspondem ao código público. Uma ressalva importante é que essas correspondências não são distribuídas uniformemente em todas as sugestões. Vemos correspondências com muito mais frequência quando o GitHub Copilot não tem contexto, como quando um desenvolvedor inicia um novo projeto ou arquivo. Quando o código da aplicação existente fornece contexto, quase nunca vemos uma correspondência. 

Independentemente do contexto, o filtro de código público identifica o código correspondente ao eliminar todos os espaços em branco (por exemplo, tabulações, espaços) e comparando sugestões com mais de 150 caracteres com um índice de todos os dados públicos no GitHub.com. Quando o filtro estiver ativado, os desenvolvedores deverão receber apenas sugestões exclusivas sem correspondência no corpus público. Se houver uma correspondência, o GitHub Copilot descarta a sugestão e passa para a próxima na fila. 

5. O GitHub Copilot retorna uma resposta ou sugestão de código ao usuário

Por fim, a resposta ou sugestão de código é devolvida ao usuário. Se a sugestão for retornada no editor de código, o modelo poderá produzir diversas sugestões e o desenvolvedor poderá escolher qual sugestão aceitar ou rejeitar. Em alguns IDEs (por exemplo, VS Code, Visual Studio, IDEs JetBrains), os desenvolvedores também podem optar por aceitar uma sugestão parcial, palavra por palavra. Uma vez aceito, eles podem editar o código, 

e então o processo começa tudo de novo.


Foi demonstrado que o GitHub Copilot aumenta a produtividade do desenvolvedor em até 55% em tarefas bem definidas, mas aumentar a velocidade não é tudo o que ele pode fazer. Saiba como fazer pesquisas com seus desenvolvedores e procurar impactos posteriores pode ajudar a fornecer uma imagem mais clara sobre o impacto do GitHub Copilot.

A seguir: Medir o impacto do GitHub Copilot

Comece a usar o GitHub Copilot