Skip to content

Commit e14d15e

Browse files
refactoring
1 parent e3c014a commit e14d15e

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

examples/benchmark_report.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ def main() -> None:
168168
rel = a.path.relative_to(out_dir) if out_dir in a.path.parents else a.path
169169
size = _sizeof(a.path)
170170
tok_est = _token_estimate_bytes(size)
171-
file_cell = f"`{rel}`" if isinstance(rel, Path) else f"`{rel}`"
171+
# Create clickable markdown link
172+
file_cell = f"[`{rel}`]({rel})" if isinstance(rel, Path) else f"[`{rel}`]({rel})"
172173
if a.path.exists():
173174
lines.append(f"| {a.label} | {file_cell} | {_fmt_bytes(size)} | {tok_est:,} | {a.description} |")
174175
else:

raport/README.md

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,106 @@ Wyniki z naszego *Project Benchmark* (Zdolność LLM do odtworzenia poprawnego s
145145

146146
![img.png](img.png)
147147

148-
149148
Format **TOON uzyskał imponujące 82.7%**, zostawiając JSON (73.5%) daleko w tyle. Jeszcze ciekawszy jest **LogicML**, który zużywa średnio zaledwie 245 tokenów na plik (10-krotnie mniej niż JSON!), a nadal utrzymuje wynik powyżej 76%.
150149

150+
#### Jak działa Project Benchmark
151+
152+
**Project Benchmark** to test, który ocenia jak dobrze różne formaty (YAML, TOON, LogicML) potrafią **reprodukować kod z całego projektu**. Test działa w czterech krokach:
153+
154+
1. **Analiza projektu** - Bierze 20 plików z `tests/samples/`
155+
2. **Ekstrakcja specyfikacji** - Dla każdego formatu tworzy specyfikację (np. YAML, TOON, LogicML)
156+
3. **Reprodukcja kodu** - Używa LLM do odtworzenia kodu na podstawie specyfikacji
157+
4. **Porównanie** - Mierzy podobieństwo oryginalnego kodu do odtworzonego
158+
159+
**Wyniki oznaczają:**
160+
- **toon: 62.56%** - Format TOON najlepiej odtworzył kod projektu z 20 plików testowych
161+
- **yaml: 59.87%** - Format YAML był drugi w jakości reprodukcji
162+
- **logicml: 59.17%** - Format LogicML miał najniższą skuteczność
163+
164+
**Score** to wskaźnik jakości (składnia, struktura, semantyka), **similarity** to podobieństwo tekstowe. TOON wygrał, bo lepiej zachowuje strukturę i informacje o typach w kompaktowej formie.
165+
166+
#### Jak uruchamiane są benchmarki i używany model LLM
167+
168+
Wszystkie benchmarki są uruchamiane automatycznie przez komendę `make benchmark`, która wykonuje serię testów:
169+
170+
```bash
171+
# Format Benchmark (porównanie jakości reprodukcji kodu)
172+
poetry run python examples/15_unified_benchmark.py \
173+
--type format \
174+
--folder tests/samples/ \
175+
--formats yaml toon logicml json markdown csv gherkin function.toon \
176+
--limit 20 --verbose \
177+
--output examples/output/benchmark_format.json
178+
179+
# Function Benchmark (reprodukcja pojedynczych funkcji)
180+
poetry run python examples/15_unified_benchmark.py \
181+
--type function \
182+
--file tests/samples/sample_functions.py \
183+
--limit 10 --verbose \
184+
--output examples/output/benchmark_function.json
185+
186+
# Token Efficiency Benchmark (efektywność zużycia tokenów)
187+
poetry run python examples/11_token_benchmark.py \
188+
--folder tests/samples/ \
189+
--formats yaml toon logicml json markdown csv gherkin function.toon \
190+
--limit 20 --verbose \
191+
--output examples/output/benchmark_token.json
192+
```
193+
194+
**Używany model LLM:**
195+
- **Provider:** OpenRouter
196+
- **Model:** `arcee-ai/trinity-large-preview:free`
197+
- **Czas wykonania:** ~2237.3 sekund (37 minut) dla Format Benchmark z 20 plikami
198+
199+
**Przykładowe wyniki Format Benchmark:**
200+
```
201+
============================================================
202+
FORMAT COMPARISON RESULTS
203+
============================================================
204+
Provider: openrouter
205+
Model: arcee-ai/trinity-large-preview:free
206+
Files: 20
207+
Time: 2237.3s
208+
209+
Format Avg Score Syntax OK
210+
----------------------------------------
211+
yaml 62.4% 100%
212+
json 62.4% 100%
213+
toon 62.2% 100%
214+
logicml 60.0% 100%
215+
csv 54.8% 100%
216+
markdown 51.2% 90%
217+
function.toon 45.8% 95%
218+
gherkin 36.5% 95%
219+
```
220+
221+
**Różnica między `toon` a `function.toon`:**
222+
- **`toon` (62.2%)** - Format project-level TOON zawierający klasy, moduły, funkcje i pełną strukturę projektu. Wyższy wynik, bo zawiera więcej kontekstu strukturalnego. **Rozmiar pliku: 71KB**
223+
- **`function.toon` (45.8%)** - Specjalizowany format function-logic TOON skupiony tylko na logice funkcji, bez kontekstu klas i modułów. Niższy wynik, bo mniejszy kontekst utrudnia LLM odtworzenie pełnej struktury. **Rozmiar pliku: 233KB**
224+
225+
**Rzeczywiste wielkości plików dla całego projektu:**
226+
- **JSON:** [418KB](../examples/output/project.json) (największy, najwięcej "szumu")
227+
- **YAML:** [274KB](../examples/output/project.yaml) (średnia wielkość, czytelny dla człowieka)
228+
- **TOON:** [71KB](../examples/output/project.toon) (najmniejszy, najbardziej kompaktowy)
229+
- **Function-logic TOON:** [233KB](../examples/output/project.functions.toon) (specjalizowany, więcej szczegółów funkcji)
230+
231+
**Komendy generujące poszczególne formaty:**
232+
```bash
233+
# JSON (pełna struktura z nawiasami i kluczami)
234+
code2logic ./ -f json --name project -o ./
235+
236+
# YAML (czytelna dla człowieka struktura)
237+
code2logic ./ -f yaml --compact --name project -o ./
238+
239+
# TOON (kompaktowy format project-level)
240+
code2logic ./ -f toon --compact --name project -o ./
241+
242+
# Function-logic TOON (specjalizowany format logiki funkcji)
243+
code2logic ./ -f toon --compact --no-repeat-module --function-logic function.toon --with-schema --name project -o ./
244+
```
245+
246+
**Konfiguracja:** Benchmarki używają domyślnej konfiguracji z 3 workerami równoległymi i limitem 4000 tokenów na generację kodu. Wyniki są zapisywane do plików JSON w `examples/output/` i agregowane w raporcie `BENCHMARK_REPORT.md`.
247+
151248
## Wnioski i wyzwania na przyszłość
152249

153250
Dane z benchmarków pokazały nam drogę, ale obnażyły też obszary do natychmiastowej poprawy:

0 commit comments

Comments
 (0)