Skip to main content

CS Assistant

Project description

CS Assistant

CS Assistant is a command-line tool that helps solve computer science problems by leveraging large language models. It can generate algorithmic explanations, pseudocode, code implementations in multiple programming languages, and visual diagrams.

Features

  • Generate verbal explanations of algorithms in multiple languages
  • Create pseudocode representations of solutions
  • Implement complete code solutions in various programming languages (Python, Java, etc.)
  • Generate Mermaid diagrams visualizing the solution
  • Support for multiple LLM providers (OpenAI, Google, Anthropic)
  • Configurable output directory and formatting options

Installation

Prerequisites

  • Python 3.8 or higher
  • API keys for at least one of the supported LLM providers (OpenAI, Google, Anthropic)

Option 1: Install from PyPI (Recommended)

Install the package directly from PyPI:

pip install cs-assistant

The first run will automatically create a .config/cs_assistant/.csarc template file in your home directory.

Option 2: Install from Source

  1. Clone the repository
  2. Run the setup script:
./setup.sh

This will:

  • Create a virtual environment
  • Install all dependencies
  • Create a template .env file for your API keys
  1. Activate the virtual environment:
source venv/bin/activate
  1. Edit the .env file with your API keys (The first run of the application will also automatically create a .config/cs_assistant/.csarc template file)

Option 3: Manual installation

  1. Clone the repository
  2. Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install the dependencies:
pip install -r requirements.txt
  1. The first run of the application will automatically create a .config/cs_assistant/.csarc file in your home directory. Edit this file with your API keys:
OPENAI_API_KEY="your_openai_api_key_here"
GOOGLE_API_KEY="your_google_api_key_here"
ANTHROPIC_API_KEY="your_anthropic_api_key_here"

Usage

Basic Commands

If installed from PyPI:

# Create a default configuration file
cs-assistant create-config -o config.json

# Solve a coding problem
cs-assistant solve-issue "Write an algorithm to find the longest common subsequence of two strings"

# Solve a problem with specific configuration file
cs-assistant -c config.json solve-issue "Implement a binary search tree"

If installed from source:

# Create a default configuration file
python -m src.main create-config -o config.json

# Solve a coding problem
python -m src.main solve-issue "Write an algorithm to find the longest common subsequence of two strings"

# Solve a problem with specific configuration file
python -m src.main -c config.json solve-issue "Implement a binary search tree"

Command Line Options

usage: CS Assistant [-h] [-c CONFIG] [-o OUTPUT_DIRECTORY] {create-config,solve-issue} ...

options:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Path to the configuration file (config.json). If provided, command-line arguments will be ignored.
  -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
                        Directory where solution files will be saved.

Available commands:
  {create-config,solve-issue}
    create-config       Create a new configuration file with default settings.
    solve-issue         Solve a given coding issue.

Solve Issue Command Options

usage: CS Assistant solve-issue [-h] [-m LLM_MODEL] [-t TEMPERATURE] [-v | --verbal-algorithm | --no-verbal-algorithm]
                             [-l VERBAL_ALGORITHM_LANGUAGES [VERBAL_ALGORITHM_LANGUAGES ...]]
                             [-p | --verbal-algorithm-include-pseudocode | --no-verbal-algorithm-include-pseudocode]
                             [-d | --include-mermaid-diagram | --no-include-mermaid-diagram]
                             [-i | --code-implementations | --no-code-implementations]
                             [-L CODE_IMPLEMENTATIONS_LANGUAGES [CODE_IMPLEMENTATIONS_LANGUAGES ...]]
                             issue_description

positional arguments:
  issue_description     The description of the coding issue.

options:
  -h, --help            show this help message and exit
  -m LLM_MODEL, --llm-model LLM_MODEL
                        The identifier for the large language model to be used. Format: 'vendor/model_name' where vendor (e.g., 'google', 'openai') represents
                        the company providing the LLM.
  -t TEMPERATURE, --temperature TEMPERATURE
                        Controls the randomness of the model's output (0.0 to 1.0).

Verbal Algorithm Options:
  -v, --verbal-algorithm, --no-verbal-algorithm
                        Enable/disable verbal algorithm explanations.
  -l VERBAL_ALGORITHM_LANGUAGES [VERBAL_ALGORITHM_LANGUAGES ...], --verbal-algorithm-languages VERBAL_ALGORITHM_LANGUAGES [VERBAL_ALGORITHM_LANGUAGES ...]
                        List of languages for verbal explanations.
  -p, --verbal-algorithm-include-pseudocode, --no-verbal-algorithm-include-pseudocode
                        Include/exclude pseudocode in the output.

  -d, --include-mermaid-diagram, --no-include-mermaid-diagram
                        Include/exclude a Mermaid diagram in the output.

Code Implementation Options:
  -i, --code-implementations, --no-code-implementations
                        Enable/disable code implementation generation.
  -L CODE_IMPLEMENTATIONS_LANGUAGES [CODE_IMPLEMENTATIONS_LANGUAGES ...], --code-implementations-languages CODE_IMPLEMENTATIONS_LANGUAGES [CODE_IMPLEMENTATIONS_LANGUAGES ...]
                        List of programming languages for code implementations.

Example

# Generate a solution for finding prime numbers in Python and JavaScript
cs-assistant solve-issue -L Python JavaScript "Write an algorithm to find all prime numbers up to n using the Sieve of Eratosthenes"

Configuration

You can customize the behavior of CS Assistant using a configuration file. Create a default configuration with:

cs-assistant create-config -o config.json

This will generate a JSON file with default settings that you can modify:

{
  "solve_issue": {
    "llm_config": {
      "model_config_name": "openai/gpt-4o",
      "temperature": 0.7
    },
    "verbal_algorithm": {
      "languages": [
        "en"
      ],
      "include_pseudocode": true
    },
    "include_mermaid_diagram": true,
    "code_implementations": {
      "languages": [
        "Python"
      ]
    }
  },
  "output_directory": "cs-assistant-output"
}

Output

The tool creates a directory structure for each problem in the specified output directory:

cs-assistant-output/
└── find_prime_numbers/
    ├── verbal_algorithm.md      # Contains algorithm explanation and pseudocode
    ├── sieve_of_eratosthenes.py # Python implementation
    ├── SieveOfEratosthenes.js   # JavaScript implementation
    └── find_prime_numbers-diagram.md # Contains Mermaid diagram

API Keys

You need to set up API keys for the LLM providers you want to use. These can be provided in one of two ways:

  1. In a .csarc file located at ~/.config/cs_assistant/.csarc
  2. As environment variables

Example .csarc file:

OPENAI_API_KEY="sk-..."
GOOGLE_API_KEY="..."
ANTHROPIC_API_KEY="sk-ant-..."

The first run of the application will automatically create this file with template values that you can replace with your actual API keys.

License

See the LICENSE file for details.

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

cs_assistant-0.1.3.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

cs_assistant-0.1.3-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file cs_assistant-0.1.3.tar.gz.

File metadata

  • Download URL: cs_assistant-0.1.3.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.5

File hashes

Hashes for cs_assistant-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c92838429f87e68c46c398b4d742fb6015db76d86c47d7463b45b93d8c21e465
MD5 d9c473914973550e11998debc6c67bd5
BLAKE2b-256 01b86f6b1aca216a5db6ca55957337ca2637b4973abc6463cdf05bbc37682350

See more details on using hashes here.

File details

Details for the file cs_assistant-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: cs_assistant-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.5

File hashes

Hashes for cs_assistant-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c01c9ea6e8792ee9a0b3699df195a7c31d2ae9fc0da2f22ed2f8b03012163508
MD5 4d052382afb384068b2e9c3ee810142d
BLAKE2b-256 3afc90d79c89114a597286166bf1884453ea0f85355431925b9ef2cb840677e0

See more details on using hashes here.

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