Skip to main content

A Python project that generates AI-based changelogs.

Project description

ai_changelog

License: MIT python

Publish to PyPI GitHub tag (with filter)

Push to Docker Hub Docker Image Size (tag)

Code Climate maintainability Code Climate issues Code Climate technical debt

pre-commit Ruff Checked with mypy Code style: black

security: bandit Known Vulnerabilities

Update AI Changelog on Push to Main

ai_changelog is a Python project that automatically generates changelog files summarizing code changes, using AI.

It uses LangChain and OpenAI models to analyze Git commit diffs and generate natural language descriptions of the changes. This allows maintaining an up-to-date changelog without manual effort.

This README was originally written by Claude, an LLM from Anthropic.

Usage

usage: ai_changelog [-h] [--provider {openai,anthropic,anyscale}] [--model MODEL] [--temperature TEMPERATURE] [--max_tokens MAX_TOKENS] [--hub_prompt HUB_PROMPT]
                    [--context_lines CONTEXT_LINES] [--max_concurrency MAX_CONCURRENCY] [-v]
                    refs

Process command line arguments.

positional arguments:
  refs                  Reference comparison with standard git syntax

options:
  -h, --help            show this help message and exit
  --provider {openai,anthropic,anyscale}
                        Model API provider
  --model MODEL         Model name
  --temperature TEMPERATURE
                        Model temperature
  --max_tokens MAX_TOKENS
                        Max tokens in output
  --hub_prompt HUB_PROMPT
                        Prompt to pull from LangChain Hub
  --context_lines CONTEXT_LINES
                        Number of context lines for each commit
  --max_concurrency MAX_CONCURRENCY
                        Number of concurrent connections to llm provider (0 means no limit)
  -v, --verbose         Run LangChain in verbose mode

http://github.com/joshuasundance-swca/ai_changelog

Local install

To generate a changelog locally:

pip install ai_changelog

ai_changelog --help
ai_changelog main..HEAD  # to summarize changes locally

Docker

docker pull joshuasundance/ai_changelog:latest
docker run \
    --env-file .env \
    -v /local_repo_dir:/container_dir_in_repo \
    -w /container_dir_in_repo \
    joshuasundance/ai_changelog:latest \
    main..HEAD

GitHub Workflow

The ai_changelog_main_pr.yml workflow runs on pushes to main.

It generates summaries for the new commits and appends them to AI_CHANGELOG.md. The updated file is then committed back to the PR branch.

ai_changelog origin/main^..origin/main  # in a GitHub action to summarize changes in response to a push to main
ai_changelog origin/main..HEAD  # in a GitHub action to summarize changes in response to a PR

Another flow was made to commit an updated changelog to an incoming PR before it was merged, but that seemed less useful although it did work well.

Configuration

  • Set environment variables as needed for your provider of choice (default requires OPENAI_API_KEY).
  • Set LangSmith environment variables to enable LangSmith integration, if applicable.
  • Use command line arguments.

License

This project is licensed under the MIT License - see the LICENSE file for details.

TODO

  • Testing
  • Get CodeLlama working reliably in CICD (currently hit or miss on structured output)

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

ai_changelog-0.0.14.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

ai_changelog-0.0.14-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file ai_changelog-0.0.14.tar.gz.

File metadata

  • Download URL: ai_changelog-0.0.14.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for ai_changelog-0.0.14.tar.gz
Algorithm Hash digest
SHA256 49cb4ea4b339a6547dcfb529f6f7b17834240c3ebd8905933a508c50f0a2b6be
MD5 fac086282d679554982cb1970e39f5ca
BLAKE2b-256 b9978409d7a1c3e60e8bd13dd05ff12d365e5c938c1ef338742d641622816ede

See more details on using hashes here.

File details

Details for the file ai_changelog-0.0.14-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_changelog-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 cd20e710b1291ea60a7048e0b88cf73072367585617822a25b737494576485e1
MD5 b3b9e9cbae6efe2e4d3c779ed85faed6
BLAKE2b-256 dce160ad34da9200d853a090d683115410f9c9a698b8ee1e875454bfd880874f

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