Skip to main content

A Python package for interacting with AI models

Project description

TestLLM - System Testowania Modeli LLM 🧪

Kompleksowy system do testowania i porównywania modeli Large Language Models (LLM) w kontekście generowania kodu Python. Projekt umożliwia automatyczną ocenę jakości wygenerowanego kodu poprzez różne metryki i generuje szczegółowe raporty HTML.

✨ Funkcjonalności

  • Automatyczne testowanie multiple modeli LLM z konfigurowalnymi promptami
  • Ocena jakości kodu - sprawdzanie składni, wykonalności, stylu i funkcjonalności
  • Szczegółowe raporty HTML z metrykami, wykresami i porównaniami
  • Eksport wyników do CSV i JSON dla dalszej analizy
  • Konfigurowalność - łatwe dodawanie nowych modeli i testów
  • Wsparcie dla różnych API - Ollama, lokalnych serwerów, usług w chmurze
  • Ranking modeli na podstawie wydajności i jakości

🚀 Szybki Start

1. Instalacja

# Sklonuj projekt
git clone https://github.com/wronai/allama.git
cd testllm

# Zainstaluj zależności
pip install -r requirements.txt

# Lub użyj skryptu setup
python setup.py

2. Konfiguracja modeli

Edytuj plik models.csv aby skonfigurować swoje modele:

model_name,url,auth_header,auth_value,think,description
deepseek-coder:1.3b,http://192.168.188.108:8081/api/chat,,,false,DeepSeek Coder na lokalnym serwerze
mistral:latest,http://192.168.188.212:11434/api/chat,,,false,Mistral Latest na Ollama
gpt-4,https://api.openai.com/v1/chat/completions,Authorization,Bearer sk-...,false,OpenAI GPT-4

Kolumny w CSV:

  • model_name - nazwa modelu
  • url - endpoint API
  • auth_header - nagłówek autoryzacji (opcjonalny)
  • auth_value - wartość autoryzacji (opcjonalny)
  • think - czy model obsługuje parametr "think" (true/false)
  • description - opis modelu

3. Uruchomienie testów

# Podstawowe testy wszystkich modeli
python main.py

# Zaawansowane opcje
python test_runner.py --benchmark

# Test pojedynczego modelu
python test_runner.py --single-model "deepseek-coder:1.3b"

# Porównanie określonych modeli
python test_runner.py --compare "mistral:latest" "deepseek-coder:1.3b"

📊 Metryki Oceny

System ocenia wygenerowany kod według następujących kryteriów:

Podstawowe metryki (automatyczne)

  • Składnia poprawna - czy kod kompiluje się bez błędów
  • Wykonalność - czy kod uruchamia się bez błędów runtime
  • Słowa kluczowe - czy kod zawiera oczekiwane elementy z promptu

Metryki jakości kodu

  • 📝 Definicje funkcji/klas - poprawna struktura kodu
  • 🛡️ Obsługa błędów - try/catch, walidacja inputów
  • 📚 Dokumentacja - docstringi, komentarze
  • 📦 Importy - właściwe użycie bibliotek
  • 📏 Długość kodu - rozsądna ilość linii

System punktowy

  • Składnia poprawna: 3 punkty
  • Wykonuje się bez błędów: 2 punkty
  • Zawiera oczekiwane elementy: 2 punkty
  • Ma definicje funkcji/klas: 1 punkt
  • Ma obsługę błędów: 1 punkt
  • Ma dokumentację: 1 punkt
  • Maksymalnie: 10 punktów

🔧 Konfiguracja

Dostosowanie promptów

Edytuj plik config.py aby zmienić prompty testowe:

TEST_PROMPTS = [
    {
        "name": "Custom Function",
        "prompt": "Write a Python function that...",
        "expected_keywords": ["def", "function_name"],
        "expected_behavior": "function_definition"
    }
]

Własna konfiguracja JSON

Stwórz plik custom_config.json:

{
    "test_prompts": [
        {
            "name": "Custom Test",
            "prompt": "Your custom prompt here..."
        }
    ],
    "timeouts": {
        "request_timeout": 30,
        "execution_timeout": 5
    }
}

Użyj: python test_runner.py --config custom_config.json

📈 Raporty i Wyniki

Raport HTML

  • 🏆 Ranking modeli z ogólnymi metrykami
  • 📊 Szczegółowe wyniki dla każdego modelu i promptu
  • 💻 Wygenerowany kod z podświetlaniem składni
  • 🚀 Wyniki wykonania kodu
  • ⏱️ Czasy odpowiedzi i wydajność

Eksport danych

  • CSV - tabela wyników do analizy w Excel/Google Sheets
  • JSON - surowe dane do dalszego przetwarzania
  • Logi - szczegółowe informacje o przebiegu testów

🖥️ Użycie z Linii Komend

Podstawowe komendy

# Wszystkie testy z domyślną konfiguracją
python main.py

# Pełny benchmark z dodatkowymi raportami
python test_runner.py --benchmark

# Test tylko jednego modelu
python test_runner.py --single-model "model_name"

# Test z jednym promptem
python test_runner.py --single-model "model_name" --prompt-index 0

# Porównanie modeli
python test_runner.py --compare "model1" "model2" "model3"

# Własny plik wynikowy
python test_runner.py --output my_results.html

# Szczegółowe logowanie
python test_runner.py --verbose

Przykłady użycia

# Test wszystkich modeli Ollama na lokalnym serwerze
python test_runner.py --models ollama_models.csv

# Porównanie tylko modeli kodujących
python test_runner.py --compare "deepseek-coder:1.3b" "codellama:7b" --output coding_models_comparison.html

# Szybki test pojedynczego modelu z jednym promptem
python test_runner.py --single-model "mistral:latest" --prompt-index 0 --output quick_test.html

🔌 Integracja z Różnymi API

Ollama (lokalny)

llama3.2:3b,http://localhost:11434/api/chat,,,false,Llama 3.2

OpenAI API

gpt-4,https://api.openai.com/v1/chat/completions,Authorization,Bearer sk-your-key,false,OpenAI GPT-4

Anthropic Claude

claude-3,https://api.anthropic.com/v1/messages,x-api-key,your-key,false,Claude 3

Lokalny serwer

local-model,http://192.168.1.100:8080/generate,,,false,Lokalny model

📁 Struktura Projek

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

allama-0.1.6.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

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

allama-0.1.6-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file allama-0.1.6.tar.gz.

File metadata

  • Download URL: allama-0.1.6.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for allama-0.1.6.tar.gz
Algorithm Hash digest
SHA256 d9076e8db137c97a409efee718bf732bd4f6c161377138e16ae08b2175a02f89
MD5 9a7d0b25537e78c0d8bd6b4753f32346
BLAKE2b-256 ec2f14066f54299d8fa7614bb17e1478d1ea2c4349a02d9f8d10b983b6774d3b

See more details on using hashes here.

File details

Details for the file allama-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: allama-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for allama-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e40b3775388e5dd65802ac21fbc0da9054b45f0d44d085cf0f4f6503a4a183ec
MD5 5629209bc2098191d0d60bed62c72ed5
BLAKE2b-256 4738ce6f1abd51506fba5776d99a85b09fc9c27c3d59b4854c86f83f181641dd

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