Review your Github/Gitlab PR with ChatGPT
Codedog is a code review automation tool benefit the power of LLM (Large Language Model) to help developers review code faster and more accurately.
Codedog is based on OpenAI API and Langchain.
Install our github app codedog-assistant
As a example, we will use codedog to review a pull request on Github.
- Install codedog
pip install codedog
codedog currently only supports python 3.10.
- Get a github pull request
from codedog.retrievers import GithubRetriever
from github import Github
github_token="YOUR GITHUB TOKEN"
repository = "codedog-ai/codedog"
pull_request_number = 2
github = Github(github_token)
retriever = GithubRetriever(github, repository, pull_request_number)
- Summarize the pull request
Since PRSummaryChain
uses langchain's output parser, we suggest to use GPT-4 to improve formatting accuracy.
from langchain.chat_models import ChatOpenAI
from codedog.chains import PRSummaryChain
openai_api_key = "YOUR OPENAI API KEY WITH GPT4"
# PR Summary uses output parser
llm35 = ChatOpenAI(openai_api_key=openai_api_key, model="gpt-3.5-turbo")
llm4 = ChatOpenAI(openai_api_key=openai_api_key, model="gpt-4")
summary_chain = PRSummaryChain.from_llm(code_summary_llm=llm35, pr_summary_llm=llm4, verbose=True)
summary = summary_chain({"pull_request": retriever.pull_request}, include_run_info=True)
print(summary)
- Review each code file changes in the pull request
from codedog.chains import CodeReviewChain
review_chain = CodeReviewChain.from_llm(llm=llm35, verbose=True)
reviews = review_chain({"pull_request": retriever.pull_request}, include_run_info=True)
print(reviews)
- Format review result
Format review result to a markdown report.
from codedog.actors.reporters.pull_request import PullRequestReporter
reporter = PullRequestReporter(
pr_summary=summary["pr_summary"],
code_summaries=summary["code_summaries"],
pull_request=retriever.pull_request,
code_reviews=reviews["code_reviews"],
)
md_report = reporter.report()
print(md_report)
We have a simple server demo to deploy codedog as a service with fastapi and handle Github webhook. Basicly you can also use it with workflow or Github Application.
see examples/server.py
Note that codedog don't have fastapi and unicorn as dependency, you need to install them manually.
Codedog currently load config from environment variables.
settings:
Config Name | Required | Default | Description |
---|---|---|---|
OPENAI_API_KEY | No | Api Key for calling openai gpt api | |
AZURE_OPENAI | No | Use azure openai if not blank | |
AZURE_OPENAI_API_KEY | No | Azure openai api key | |
AZURE_OPENAI_API_BASE | No | Azure openai api base | |
AZURE_OPENAI_DEPLOYMENT_ID | No | Azure openai deployment id for gpt 3.5 | |
AZURE_OPENAI_GPT4_DEPLOYMENT_ID | No | Azure openai deployment id for gpt 4 |