Skip to main content

A Python library for knit_space operations.

Project description

KnitSpace LLM Ranker: Automated LLM Testing Harness

KnitSpace is an automated testing harness designed to evaluate and compare the capabilities of various Large Language Models (LLMs) across a diverse set of tasks. It provides a comprehensive framework for researchers and developers to assess LLM performance in areas such as problem-solving, knowledge retrieval, coding proficiency, and safety.

🔑 Key Features

  • Multi-LLM Support: Integrates with OpenAI, Google, Cohere, Mistral, and more.
  • Diverse Test Suite: Includes mathematical reasoning, coding tasks, knowledge tests (MMLU), long-context, instruction-following, and obfuscation-based tests.
  • Elo Rating System: Scores models using task difficulty and a cognitive cost metric ("S-value") for nuanced benchmarking.
  • Secure Code Execution: Uses Docker containers to safely execute LLM-generated Python/JS code.
  • Text Obfuscation: Tests reasoning under character-mapped distortions.
  • Interactive Review: Launch a web-based viewer for test results.
  • Extensible: Easily add new LLM providers and new types of tests.

🧱 Core Components

📁 knit_space/models.py

  • Unified interface for all LLM providers.
  • Abstract Model class + subclasses like OpenAIModel, GeminiModel, etc.
  • Manages API initialization, inference calls, and model metadata.

📁 knit_space/tests/

  • Contains all test definitions.
  • base.py defines:
    • QAItem: A test prompt, answer, and scoring logic.
    • AbstractQATest: Base class for all test sets.
    • TestRegistry: Auto-discovers test modules.
  • Includes test types: math, coding, chess, long-context, MMLU, etc.

📁 knit_space/marker.py

  • Evaluates model responses.
  • Uses QAItem scoring logic and tracks correctness.
  • Implements Elo scoring using both test difficulty and S-value.
  • Launches Flask server to review test results interactively.

📁 knit_space/utils/code_executor.py

  • Runs Python and JS code from models inside Docker safely.
  • Accepts test cases (input/output pairs) for correctness validation.

📁 knit_space/obscurers/

  • Tools for generating challenging input variants.
  • CharObfuscator: Replaces characters using a bijective map to test reasoning under noise.

🐍 verify-auto.py

  • Main script to run tests.
  • Configures model, loads test classes, and executes tests.
  • Starts web server for results review.

⚙️ Setup

1. Prerequisites

  • Python 3.8+
  • Docker (for coding tasks)
  • Git

2. Installation

git clone [<repository_url>](https://github.com/C-you-know/Action-Based-LLM-Testing-Harness)
cd KnitSpace-LLM-Ranker

python -m venv venv
source venv/bin/activate  # (Windows: venv\Scripts\activate)

pip install -r requirements.txt  # Or manually install dependencies

3. API Key Setup

Set the following environment variables based on the providers you wish to use:

export OPENAI_API_KEY="..."
export GEMINI_API_KEY="..."
export MISTRAL_API_KEY="..."
export COHERE_API_KEY="..."
# Cloudflare-specific
export CLOUDFLARE_API_KEY="..."
export CLOUDFLARE_ACCOUNT_ID="..."

🚀 Running Tests

Run via verify-auto.py

  1. Configure:

    • Choose model/provider in verify-auto.py
    • Select tests in test_cases list
  2. Run:

    python verify-auto.py
    
  3. View:

    • Console logs test stats
    • Web UI opens at http://localhost:8000

Debug Test Inputs (optional)

Use QA-test.py to inspect generated test data without invoking an LLM:

python QA-test.py

🔌 Extending the Harness

➕ Adding New LLM Providers

  1. Subclass Model in knit_space/models.py

  2. Implement:

    • _initialize_client()
    • inference(...)
  3. Update:

    • PROVIDER_CLASS_MAP
    • _get_api_key_for_provider() and optionally _list_api_models()

🧪 Adding New Test Types

  1. Create a new file in knit_space/tests/
  2. Subclass AbstractQATest
  3. Implement generate() to yield QAItems
  4. Optionally register using @register_test()

📦 Install as a Package

You can also install this project as a pip package (once published):

pip install ks-llm-ranker

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

ks_llm_ranker-0.1.2.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

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

ks_llm_ranker-0.1.2-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file ks_llm_ranker-0.1.2.tar.gz.

File metadata

  • Download URL: ks_llm_ranker-0.1.2.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for ks_llm_ranker-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e47e1d843c448cce9805285fb2c1e0350093e1d2fb82b35675c6e12810969091
MD5 227991f1fe9ea831cf0a6a5ff757a7c1
BLAKE2b-256 28dd3a1634df2cdc0330c241d85eb01f88d57d60e941996903b7a3c6e930f6a1

See more details on using hashes here.

File details

Details for the file ks_llm_ranker-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ks_llm_ranker-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for ks_llm_ranker-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 55934276f67590572467054fce3f36ad917ffb5f58588f2166b819ccb0c7e700
MD5 e73c861534face3fafc9b722d0109226
BLAKE2b-256 b14bc1d8002876bff94b04395b0d1a5509ed0f65d091f57a29f72d05e06ec5cb

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