Skip to main content

Tool that just makes your open source project better!

Project description

OSA: OPEN-SOURCE ADVISOR

Acknowledgement ITMO Open-source-ops website License PyPi OSA-improved Telegram Chat

Built with:

Python Docker GitHub%20Actions AIOHTTP OpenAI Pydantic


Overview

OSA (Open-Source-Advisor) is a LLM-based tool for improving the quality of scientific open source projects and helping create them from scratch. It automates the generation of README, different levels of documentation, CI/CD scripts, etc. It also generates advices and recommendations for the repository.

OSA is currently under development, so not all features are implemented.


How it works?

Here is a short demo:

Animation


Table of contents


Core features

  1. README file generation: Automates the creation of a clear and structured README file for a repository, including projects based on research papers.

  2. Documentation generation: Automatically generates docstrings for Python code.

  3. Automatic implementation of changes: Clones the repository, creates a branch, commits and pushes changes, and creates a pull request with proposed changes.

  4. Various LLMs: Use OSA with an LLM accessible via API (e.g., OpenAI, VseGPT, Ollama), a local server, or try an osa_bot hosted on ITMO servers.

  5. GitHub Action Workflow Generator: Automatically generates customizable CI/CD workflows for Python repositories, including unit tests, code formatting, PEP 8 compliance checks, and PyPI publication.


Installation

Install Open-Source-Advisor using one of the following methods:

Using PyPi:

pip install osa_tool

Build from source:

  1. Clone the Open-Source-Advisor repository:
git clone https://github.com/aimclub/OSA
  1. Navigate to the project directory:
cd Open-Source-Advisor
  1. Install the project dependencies:

Using pip  

pip install -r requirements.txt

Using poetry  

poetry install 

Using docker  

docker build --build-arg GIT_USER_NAME="your-user-name" --build-arg GIT_USER_EMAIL="your-user-email" -f docker/Dockerfile -t {image-name} .

Getting started

Prerequisites

OSA requires Python 3.10 or higher.

File .env is required to specify GitHub/GitLab/Gitverse token (GIT_TOKEN) and LLM API key (OPENAI_API_KEY or VSE_GPT_KEY)

When running osa-tool from CLI, you need to set the GIT_TOKEN and API key first:

export OPENAI_API_KEY=<your_api_key>
export GIT_TOKEN=<your_git_token>

Tokens

Token name Description Mandatory
GIT_TOKEN Personal GitHub/GitLab/Gitverse token used to clone private repositories, access metadata, and interact with its API. Yes
OPENAI_API_KEY API key for accessing OpenAI's language models. No
VSE_GPT_KEY API key for vsegpt LLM provider compatible with OpenAI's API format. No
X-API-Key API key for the pepy.tech REST API, used to fetch Python package download statistics No

Usage

Run Open-Source-Advisor using the following command:

Using pip  

python -m osa_tool.run -r {repository} [--api {api}] [--base-url {base_url}] [--model {model_name}] [--article {article}] [--convert-notebooks {notebook_paths}]

Using docker  

docker run --env-file .env {image-name} -r {repository} [--api {api}] [--base-url {base_url}] [--model {model_name}] [--article {article}] [--convert-notebooks {notebook_paths}]

The --article option enables you to choose a README template for a repository based on an article. You can provide either a link to a PDF file of the article or a path to a local PDF file after the --article option. If you are using Docker, ensure that you upload the PDF file to the OSA folder before building the image, then, specify the path as /app/OSA/... or just use volume mounting to access the file.

The --generate-workflows option is intended to create customizable CI/CD pipelines for Python repositories. For detailed documentation, see the GitHub Action Workflow Generator README.

Configuration

Flag Description Default
-r, --repository URL of the GitHub/GitLab/Gitverse repository (Mandatory)
-b, --branch Branch name of the repository Default branch
-o, --output Path to the output directory Current working directory
--api LLM API service provider itmo
--base-url URL of the provider compatible with API OpenAI https://api.openai.com/v1
--model Specific LLM model to use gpt-3.5-turbo
--article Link to the pdf file of the article None
--translate-dirs Enable automatic translation of the directory name into English disabled
-m, --mode Operation mode for repository processing: basic, auto (default), or advanced. auto
--delete-dir Enable deleting the downloaded repository after processing disabled
--no-fork Avoid create fork for target repository False
--no-pull-request Avoid create pull request for target repository False
--top_p Nucleus sampling probability null
--temperature Sampling temperature to use for the LLM output (0 = deterministic, 1 = creative). null
--max_tokens Maximum number of tokens the model can generate in a single response null

To learn how to work with the interactive CLI and view descriptions of all available keys, visit the CLI usage guide.


Examples

Examples of generated README files are available in examples.

URL of the GitHub/GitLab/Gitverse repository, LLM API service provider (optional) and Specific LLM model to use (optional) are required to use the generator.

To see available models go there:

  1. VseGpt
  2. OpenAI
  3. Ollama

Local ITMO model:

python -m osa_tool.run -r https://github.com/aimclub/OSA --base_url [ITMO_MODEL_URL]

For this API provider itmo model url must be specified in dotenv (ITMO_MODEL_URL=) or in the --base-url argument.

OpenAI:

python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai

VseGPT:

python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai --base-url https://api.vsegpt.ru/v1 --model openai/gpt-3.5-turbo

Ollama:

python -m osa_tool.run -r https://github.com/aimclub/OSA --api ollama --base-url http://[YOUR_OLLAMA_IP]:11434 --model gemma3:27b

Documentation

Detailed description of OSA API is available here.


Chat with developers: OSA_helpdesk

In our Telegram chat OSA_helpdesk you can ask questions about working with OSA and find the latest news about the project.


Publications about OSA

In English:

In Russian:


Contributing

  • Report Issues: Submit bugs found or log feature requests for the Open-Source-Advisor project.

License

This project is protected under the BSD 3-Clause "New" or "Revised" License. For more details, refer to the LICENSE file.


Acknowledgments

The project is supported as ITMO University Research Project in AI Initiative (RPAII).

OSA is tested by the members of ITMO OpenSource community. Useful content from community is available in Open-source-ops

Also, we thank Readme-ai for their code that we used as a foundation for our own version of README generator.


Citation

If you use this software, please cite it as below.

APA format

ITMO, NSS Lab (2025). Open-Source-Advisor repository [Computer software]. https://github.com/aimclub/OSA

BibTeX format

@misc{Open-Source-Advisor,

    author = {ITMO, NSS Lab},

    title = {Open-Source-Advisor repository},

    year = {2025},

    publisher = {github.com},

    journal = {github.com repository},

    howpublished = {\url{https://github.com/aimclub/OSA.git}},

    url = {https://github.com/aimclub/OSA.git}

}

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

osa_tool-0.2.1.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

osa_tool-0.2.1-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file osa_tool-0.2.1.tar.gz.

File metadata

  • Download URL: osa_tool-0.2.1.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for osa_tool-0.2.1.tar.gz
Algorithm Hash digest
SHA256 c9760b1185c7e1707a3bfef4fc550e457f28e8d843410374e0f1002c0af1da6d
MD5 9dff95ea4f73b260b9427e5e978b101e
BLAKE2b-256 25879b24b40527065ef57cc6d1836afe213d762c7ffd0af68b91fdbce3ffce9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for osa_tool-0.2.1.tar.gz:

Publisher: release.yml on aimclub/OSA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file osa_tool-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: osa_tool-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for osa_tool-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 645ce1fdfd88fa4323cd15a40ad4b73f754e2cc6e22ba81d06041b115e3a8292
MD5 b09b628793f816afc7bdca8531010c2f
BLAKE2b-256 e6b6e36eccf7f08fbbced16931aac3cdeae46f39f641911151b85d35c5289120

See more details on using hashes here.

Provenance

The following attestation bundles were made for osa_tool-0.2.1-py3-none-any.whl:

Publisher: release.yml on aimclub/OSA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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