Skip to main content

Add your description here

Project description

Harmony LLM Benchmark

A flexible Python package for benchmarking LLMs with support for both API-based and local models. Test how different content formatting affects LLM response rates.

Features

  • Multiple Model Modes: API, Local Transformers, and Ollama support
  • Conditional Dependencies: Install only what you need
  • Concurrent Processing: Efficient parallel evaluation
  • Harmony Formatting: Test content formatting effects
  • Rich Reporting: Automatic plots and JSON results
  • CLI & Python API: Use programmatically or from command line

Installation

API Mode (Lightweight - ~50MB)

uv add hhack

With Local Transformers Support (~2GB+)

uv add 'hhack[local]'

With Ollama Support

uv add 'hhack[ollama]'

Full Local Support (All Options)

uv add 'hhack[full-local]'

Quick Start

Command Line Usage

# API mode with OpenRouter
hhack dataset.json --mode api --api-key sk-xxx

# Local Transformers
hhack dataset.json --mode local_transformers --local-model microsoft/DialoGPT-medium

# Local Ollama
hhack dataset.json --mode local_ollama --ollama-model llama2

Python API Usage

from hhack import HarmonyBenchmark, BenchmarkConfig, ModelMode

# Sample dataset
dataset = [
    {
        "original": "What is machine learning?",
        "transformed_analysis": "Machine learning is a subset of AI..."
    }
]

# Configure for API mode
config = BenchmarkConfig(
    mode=ModelMode.API,
    api_key="your-open-router-token",
    api_model="openai/gpt-oss-20b",
    api_base_url="https://openrouter.ai/api/v1/chat/completions",
    max_workers=5,
    show_plots=True
)

# Run benchmark
benchmark = HarmonyBenchmark(config)
benchmark.load_dataset()
# to use custom dataset
benchmark.load_dataset(dataset)
results = benchmark.run_benchmark()

Dataset Format

Your dataset should be a JSON array with objects containing:

[
  {
    "original": "Original question or prompt",
    "transformed_analysis": "Processed/analyzed version of the content"
  }
]

Configuration Options

API Mode

config = BenchmarkConfig(
    mode=ModelMode.API,
    mode=ModelMode.API,
    api_key="your-open-router-token",
    api_model="openai/gpt-oss-20b",
    api_base_url="https://openrouter.ai/api/v1/chat/completions",
    max_workers=5,
    show_plots=True
)

Local Transformers Mode

config = BenchmarkConfig(
    mode=ModelMode.LOCAL_TRANSFORMERS,
    local_model_name="openai/gpt-oss-20b",
    device="auto",  # auto, cpu, cuda
    max_length=512
)

Local Ollama Mode

config = BenchmarkConfig(
    mode=ModelMode.LOCAL_OLLAMA,
    ollama_model="llama2",
    ollama_host="localhost",
    ollama_port=11434
)

Environment Variables

  • OPENROUTER_API_KEY: OpenRouter API key

CLI Reference

hhack [OPTIONS] DATASET_FILE

Options:
  --mode {api,local_transformers,local_ollama}  Execution mode
  --api-key TEXT                   API key
  --api-model TEXT                 API model name
  --local-model TEXT               HuggingFace model name
  --ollama-model TEXT              Ollama model name
  --max-workers INT                Number of parallel workers
  --no-plot                        Disable result visualization
  --no-save                        Disable saving results
  --results-file TEXT              Custom results filename

What It Tests

The benchmark evaluates LLM response rates across four content types:

  1. Original Content: Raw input as-is
  2. Original + Harmony: Raw input with Harmony formatting
  3. Transformed Content: Processed/analyzed input
  4. Transformed + Harmony: Processed input with Harmony formatting

Results show how content formatting affects model responsiveness.

Results Output

The benchmark generates:

  • Console Summary: Response rates and statistics
  • Visual Plot: Bar chart comparing response rates
  • JSON Results: Detailed results saved to file

Performance Considerations

API Mode

  • Lightweight installation
  • Network dependent
  • Rate limited by API
  • Cost per request

Local Transformers

  • Large installation (~2GB+)
  • GPU recommended
  • No network required
  • One-time download cost

Local Ollama

  • Medium installation
  • Requires Ollama server
  • No network for inference
  • Easy model management

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

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

hhack-0.1.3.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

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

hhack-0.1.3-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hhack-0.1.3.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hhack-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7eb1b47ffc508c255f2f5dc87cb949c94d82291f42320d0baf3183b1dcb3c9df
MD5 195381df5b3e21af801a679266c964ec
BLAKE2b-256 427c3e98c920a7d6cc346b3b45ddcbd78ed151114499384926414e8529cd890e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhack-0.1.3.tar.gz:

Publisher: release.yml on APerson101/hhack

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

File details

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

File metadata

  • Download URL: hhack-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hhack-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e8e375894b80911f3c7e32288c757d5f0da62a662d0f65efa41ff4df0c35798e
MD5 d5341bd222414875655fd3657b4f908f
BLAKE2b-256 1ccc5f7c9c3562157a208915b8167e6b6475bed612532975e8163a38fbb5a3b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhack-0.1.3-py3-none-any.whl:

Publisher: release.yml on APerson101/hhack

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