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.7.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.7-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: allama-0.1.7.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.7.tar.gz
Algorithm Hash digest
SHA256 c8dc0d39166a3bfc20be691c2716abc04c76664583cd935263388d0773ca2dbc
MD5 2627b2238cd798787e4767d986101de1
BLAKE2b-256 75a6c14e27944af2e3cc48ea55951483289f3779994b7fa675b43254671f02c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: allama-0.1.7-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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d4676cef2ada581c37179b6f47f42bfb9f83c0409dea1284c77d459d32bfe200
MD5 7dd4f4d9074687a2622b0a114bebe821
BLAKE2b-256 a1d44b8d05b50031aab32153b54b58e00422a0bfe00045aaa2252c47b028f923

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