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 modeluurl- endpoint APIauth_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8dc0d39166a3bfc20be691c2716abc04c76664583cd935263388d0773ca2dbc
|
|
| MD5 |
2627b2238cd798787e4767d986101de1
|
|
| BLAKE2b-256 |
75a6c14e27944af2e3cc48ea55951483289f3779994b7fa675b43254671f02c2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4676cef2ada581c37179b6f47f42bfb9f83c0409dea1284c77d459d32bfe200
|
|
| MD5 |
7dd4f4d9074687a2622b0a114bebe821
|
|
| BLAKE2b-256 |
a1d44b8d05b50031aab32153b54b58e00422a0bfe00045aaa2252c47b028f923
|