DEV Community

André Pavini
André Pavini

Posted on

Integrando o ChatGPT com o GitHub para Avaliar e Dar Sugestões em Commits

Introdução

O ChatGPT, desenvolvido pela OpenAI, é um modelo de linguagem altamente avançado que pode ser usado para melhorar a qualidade do código, fornecendo feedback e sugestões úteis durante o processo de desenvolvimento. Uma maneira eficaz de aproveitar essa tecnologia é integrar o ChatGPT com o GitHub, uma plataforma popular de controle de versão e colaboração de código. Neste artigo, explicaremos como integrar o ChatGPT com o GitHub para que ele possa avaliar e dar sugestões em cada commit.

Pré-requisitos

Antes de começar, você precisará:

Uma conta no GitHub (https://github.com/)
Acesso à API do ChatGPT (https://beta.openai.com/signup)
Um ambiente de desenvolvimento com Python 3.x e acesso ao pip (gerenciador de pacotes do Python)
Configurando o Ambiente

Para começar, instale as bibliotecas necessárias usando o pip:

pip install openai requests
Enter fullscreen mode Exit fullscreen mode

Em seguida, obtenha sua chave de API do ChatGPT em https://beta.openai.com/signup e crie um arquivo chamado config.py com o seguinte conteúdo:

API_KEY = "sua_chave_api_aqui"
Enter fullscreen mode Exit fullscreen mode

Desenvolvendo a Integração

Vamos criar um script chamado chatgpt_github.py que será responsável por integrar o ChatGPT com o GitHub.

  1. Importe as bibliotecas necessárias:
import openai
import requests
import json
from config import API_KEY
Enter fullscreen mode Exit fullscreen mode
  1. Configure a API do ChatGPT:
openai.api_key = API_KEY

Enter fullscreen mode Exit fullscreen mode
  1. Crie uma função para gerar sugestões usando o ChatGPT:
def gerar_sugestao(texto):
    response = openai.Completion.create(
        engine="text-davinci-002",
        prompt=texto,
        max_tokens=100,
        n=1,
        stop=None,
        temperature=0.5,
    )
    return response.choices[0].text.strip()
Enter fullscreen mode Exit fullscreen mode
  1. Crie uma função para obter os diffs dos commits do GitHub:
def obter_diffs(repo, commit_sha, token_github):
    headers = {
        "Accept": "application/vnd.github+json",
        "Authorization": f"token {token_github}",
    }
    url = f"https://api.github.com/repos/{repo}/commits/{commit_sha}"
    response = requests.get(url, headers=headers)
    return json.loads(response.text)["files"]
Enter fullscreen mode Exit fullscreen mode
  1. Crie uma função para processar os diffs e enviar sugestões:
def processar_diffs(repo, commit_sha, token_github):
    diffs = obter_diffs(repo, commit_sha, token_github)
    for diff in diffs:
        if diff["status"] == "modified" and diff["filename"].endswith(".py"):
            sugestao = gerar_sugestao(diff["patch"])
            if sugestao:
                enviar_sugestao(repo, commit_sha, sugestao, token_github)
Enter fullscreen mode Exit fullscreen mode
  1. Crie uma função para enviar sugestões como comentários no commit:
def enviar_sugestao(repo, commit_sha, sugestao, token_github):
    headers = {
    "Accept": "application/vnd.github+json",
    "Authorization": f"token {token_github}",
}
url = f"https://api.github.com/repos/{repo}/commits/{commit_sha}/comments"
data = {
    "body": f"Sugestão do ChatGPT:\n```
{% endraw %}
\n{sugestao}\n
{% raw %}
```",
}
response = requests.post(url, headers=headers, data=json.dumps(data))
Enter fullscreen mode Exit fullscreen mode
  1. Finalmente, crie uma função principal (main) para executar a integração:
def main():
    repo = "seu_usuario_github/seu_repositorio"
    commit_sha = "seu_commit_sha"
    token_github = "seu_token_github"

    processar_diffs(repo, commit_sha, token_github)

if __name__ == "__main__":
    main()
Enter fullscreen mode Exit fullscreen mode

Lembre-se de substituir os valores de exemplo pelas informações do seu repositório e autenticação.

Uso

Para executar o script e obter sugestões do ChatGPT nos commits do GitHub, siga estas etapas:

  1. Execute o script no terminal:
python chatgpt_github.py

Enter fullscreen mode Exit fullscreen mode

Verifique o commit específico no GitHub e veja os comentários com as sugestões do ChatGPT.

Limitações e Melhorias

Esta implementação básica tem algumas limitações:

  1. É necessário executar o script manualmente, o que pode ser resolvido com a integração de webhooks ou GitHub Actions.

  2. Apenas analisa arquivos Python; você pode personalizar o script para suportar outras linguagens de programação.

  3. O token e as informações do repositório estão codificados no script; é possível criar uma solução mais flexível, como variáveis de ambiente ou um arquivo de configuração.

Conclusão

Neste artigo, mostramos como integrar o ChatGPT com o GitHub para avaliar e dar sugestões em cada commit. A integração pode ser melhorada e expandida para atender a casos de uso específicos, mas o exemplo fornecido oferece uma base sólida para começar.

Top comments (0)