Codedog reviews your pull request using llm.
Project description
🐶 Codedog
Review your Github/Gitlab PR with ChatGPT
Codedog is update to langchain v0.2
What is codedog?
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.
Quickstart
Review your pull request via Github App
Install our github app codedog-assistant
Start with your own code
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 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_requeest_number)
- Summarize the pull request
Since PRSummaryChain
uses langchain's output parser, we suggest to use GPT-4 to improve formatting accuracy.
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
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)
Deployment
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.
Configuration
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 |
How to release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file codedog-0.11.0.tar.gz
.
File metadata
- Download URL: codedog-0.11.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.6 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 012deb5119d85051e4eb9246d71002d5f50031f5a230baddb815bfcb36adc83a |
|
MD5 | 9b9cb654b002c657a13741ad73c2510d |
|
BLAKE2b-256 | 874b92f0ddfd6fa63206c66856316a7f1caa5da18962e81235813567453bc1ff |
File details
Details for the file codedog-0.11.0-py3-none-any.whl
.
File metadata
- Download URL: codedog-0.11.0-py3-none-any.whl
- Upload date:
- Size: 35.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.6 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0d8cf91f7cac2244229e85af815fcb8b4f690594370c50bf2ef85d703141c0c |
|
MD5 | 82b8fa5690b5d23750877bee46ae1686 |
|
BLAKE2b-256 | 2146b6e317a40cc908e2ec3c90f40ec45c076ece1d68dfa411003dbe0384c547 |