Skip to main content

Codedog reviews your pull request using llm.

Project description

🐶 Codedog

Checkstyle Pytest Coverage

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.

  1. Install codedog
pip install codedog

codedog currently only supports python 3.10.

  1. 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)
  1. 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)
  1. 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)
  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codedog-0.11.0.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

codedog-0.11.0-py3-none-any.whl (35.8 kB view details)

Uploaded Python 3

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

Hashes for codedog-0.11.0.tar.gz
Algorithm Hash digest
SHA256 012deb5119d85051e4eb9246d71002d5f50031f5a230baddb815bfcb36adc83a
MD5 9b9cb654b002c657a13741ad73c2510d
BLAKE2b-256 874b92f0ddfd6fa63206c66856316a7f1caa5da18962e81235813567453bc1ff

See more details on using hashes here.

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

Hashes for codedog-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a0d8cf91f7cac2244229e85af815fcb8b4f690594370c50bf2ef85d703141c0c
MD5 82b8fa5690b5d23750877bee46ae1686
BLAKE2b-256 2146b6e317a40cc908e2ec3c90f40ec45c076ece1d68dfa411003dbe0384c547

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page