Caveman
<p><strong>🚀 Funzionalità</strong> <strong>Fino al 70% di riduzione dei token:</strong> Riduci i costi delle API e accelera l'inferenza locale. <strong>Multilingue:</strong> Supporto per oltre 50 lingue (inglese, italiano, francese, ecc.) tramite i modelli Catalyst. <strong>Livelli di compressione:</strong> Scegli tra Light, Semantic o Aggressive (Lemmatizzazione). <strong>Integrazione LLM con Semantic Kernel:</strong> Ottimizzato per modelli di nuova generazione che comprendono perfettamente il linguaggio contratto.</p><p><strong>🛠️ Installazione</strong> <code>dotnet add package Caveman --version 1.0.2</code></p><p><strong>Quick Start</strong></p><p>csharp</p><div class="ql-code-block-container" spellcheck="false"><div class="ql-code-block" data-language="plain">var compressor = new CavemanCompressionService();</div><div class="ql-code-block" data-language="plain">string input = "Vorrei sapere se è possibile ricevere informazioni su ristoranti economici a Roma.";</div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain">// Comprimi il testo e calcola il risparmio energetico</div><div class="ql-code-block" data-language="plain">var result = await compressor.CompressAsync(input, CavemanCompressionLevel.Semantic);</div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain">Console.WriteLine("Compressed: result.CompressedText");</div><div class="ql-code-block" data-language="plain">Console.WriteLine($"Efficiency: {result.EfficiencyPercentage:F1}%");</div><div class="ql-code-block" data-language="plain">Console.WriteLine($"🌿 Energia risparmiata: {result.EstimatedEnergySavedMWh:F3} mWh");</div></div><p><strong>🌿 Sostenibilità: perché è importante</strong> Ogni token generato o processato da un LLM ha un costo ambientale. Caveman v1.1 introduce un estimatore integrato basato su medie di settore:</p><p><strong>Consumo energetico:</strong> Stimato in 5 mWh per token. <strong>Impronta di carbonio:</strong> Stimata in 0,4 mg di CO₂ per mWh.</p><p>Comprimendo un prompt da 1000 a 400 token, si risparmiano circa 3 mWh di energia. Su scala di milioni di richieste, Caveman contribuisce a costruire un ecosistema AI più sostenibile.</p><p><strong>📊 Livelli di compressione NLP</strong></p><table><tbody><tr><td data-row="1"><strong>LivelloLogica applicataTag POS rimossi (Filtri)Risparmio</strong></td></tr><tr><td data-row="2">Light</td><td data-row="2">Rimozione stopword</td><td data-row="2">DET, ADP, CCONJ, SCONJ, PRON, PUNCT</td><td data-row="2">~25–30%</td></tr><tr><td data-row="3">Semantic</td><td data-row="3">Selezione contenuto chiave</td><td data-row="3">Mantiene solo NOUN, VERB, ADJ, PROPN, ADV</td><td data-row="3">~50%</td></tr><tr><td data-row="4">Aggressive</td><td data-row="4">Lemmatizzazione</td><td data-row="4">Mantiene solo NOUN, VERB, PROPN (forma base)</td><td data-row="4">~70%</td></tr></tbody></table><p><br></p><p><br></p><p><strong>🔍 Dettaglio tecnico tag (mappatura Catalyst)</strong></p><table><tbody><tr><td data-row="1"><strong>Tag POSCategoriaEsempi (ENG/ITA)Trattamento</strong></td></tr><tr><td data-row="2">DET</td><td data-row="2">Determinanti</td><td data-row="2">the, a / il, lo</td><td data-row="2">Rimosso (in Light)</td></tr><tr><td data-row="3">ADP</td><td data-row="3">Preposizioni</td><td data-row="3">of, at / di, a</td><td data-row="3">Rimosso (in Light)</td></tr><tr><td data-row="4">CCONJ</td><td data-row="4">Congiunzioni coordinanti</td><td data-row="4">and, or / e, o</td><td data-row="4">Rimosso (in Light)</td></tr><tr><td data-row="5">SCONJ</td><td data-row="5">Congiunzioni subordinanti</td><td data-row="5">that, if / che, se</td><td data-row="5">Rimosso (in Light)</td></tr><tr><td data-row="6">PRON</td><td data-row="6">Pronomi</td><td data-row="6">I, you / io, tu</td><td data-row="6">Rimosso (in Light)</td></tr><tr><td data-row="7">NOUN</td><td data-row="7">Sostantivi</td><td data-row="7">house, pizza / casa, pizza</td><td data-row="7">Sempre mantenuto</td></tr><tr><td data-row="8">VERB</td><td data-row="8">Verbi</td><td data-row="8">eat, runs / mangiare, corre</td><td data-row="8">Sempre mantenuto</td></tr><tr><td data-row="9">ADV</td><td data-row="9">Avverbi</td><td data-row="9">not, quickly / non, molto</td><td data-row="9">Mantenuto in Semantic</td></tr></tbody></table><p><br></p><p><br></p><p><strong>💡 Esempio di trasformazione</strong></p><table><tbody><tr><td data-row="1"><strong>StatoTesto del promptToken / Caratteri</strong></td></tr><tr><td data-row="2">Originale</td><td data-row="2">"I would like to know if it is possible to have a margherita pizza immediately."</td><td data-row="2">100% (78 ch)</td></tr><tr><td data-row="3">Light</td><td data-row="3">"like know possible have margherita pizza immediately"</td><td data-row="3">~70% (54 ch)</td></tr><tr><td data-row="4">Semantic</td><td data-row="4">"know possible have margherita pizza immediately"</td><td data-row="4">~55% (48 ch)</td></tr><tr><td data-row="5">Aggressive</td><td data-row="5">"know possible have margherita pizza"</td><td data-row="5">~40% (38 ch)</td></tr></tbody></table><p><br></p><p><br></p><p><strong>💡 Nuova funzionalità introdotta in versione 1.0.2: Caveman.Wiki</strong></p><p><strong>Scopo</strong> Generare automaticamente documentazione in markdown ottimizzata per AI per qualsiasi progetto software, comprimendo semanticamente i contenuti per ottimizzare il contesto dei prompt LLM.</p><p><strong>Come funziona</strong></p><ol><li data-list="bullet"><span class="ql-ui" contenteditable="false"></span><strong>Analisi del progetto:</strong> Rileva automaticamente il tipo di progetto (C#, Python, Node.js, ecc.) scansionando i file di configurazione (.csproj, requirements.txt, package.json, ecc.).</li><li data-list="bullet"><span class="ql-ui" contenteditable="false"></span><strong>Scansione file:</strong> Attraversa ricorsivamente la cartella, applicando filtri intelligenti per escludere file binari, cartelle di build e dipendenze esterne.</li><li data-list="bullet"><span class="ql-ui" contenteditable="false"></span><strong>Estrazione dipendenze:</strong> Analizza i file di progetto per estrarre pacchetti e versioni, organizzandoli per fonte (NuGet, PyPI, npm, ecc.).</li><li data-list="bullet"><span class="ql-ui" contenteditable="false"></span><strong>Compressione contenuti:</strong> Per file >2KB, utilizza CavemanCompressionService con livello Semantic per ridurre il numero di token preservando il significato.</li><li data-list="bullet"><span class="ql-ui" contenteditable="false"></span><strong>Output Markdown:</strong> Genera un documento strutturato con:</li><li data-list="bullet" class="ql-indent-1"><span class="ql-ui" contenteditable="false"></span>Metadati del progetto in formato YAML</li><li data-list="bullet" class="ql-indent-1"><span class="ql-ui" contenteditable="false"></span>Elenco delle dipendenze organizzato</li><li data-list="bullet" class="ql-indent-1"><span class="ql-ui" contenteditable="false"></span>Vista ad albero della struttura dei file</li><li data-list="bullet" class="ql-indent-1"><span class="ql-ui" contenteditable="false"></span>Contenuti dei file con evidenziazione della sintassi</li><li data-list="bullet" class="ql-indent-1"><span class="ql-ui" contenteditable="false"></span>Riepilogo statistico</li></ol><p><strong>Vantaggi per l'AI</strong> ✅ Contesto completo in formato leggibile ✅ Ottimizzato in token tramite compressione semantica ✅ Struttura prevedibile per parsing automatico ✅ Metadati leggibili dalle macchine per sistemi RAG</p><p><strong>Esempio d'uso</strong></p><p>csharp</p><div class="ql-code-block-container" spellcheck="false"><div class="ql-code-block" data-language="plain">// Uso base</div><div class="ql-code-block" data-language="plain">var wiki = new CavemanWiki();</div><div class="ql-code-block" data-language="plain">string context = await wiki.GenerateAsync(@"C:\Users\Dev\MyAwesomeProject");</div><div class="ql-code-block" data-language="plain">await File.WriteAllTextAsync("AI_CONTEXT.md", context);</div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain">// Uso avanzato con parametri personalizzati</div><div class="ql-code-block" data-language="plain">string context = await wiki.GenerateAsync(</div><div class="ql-code-block" data-language="plain"> projectFolderPath: @"..\MyProject",</div><div class="ql-code-block" data-language="plain"> maxFileSizeBytes: 50 * 1024, // 50KB max per file</div><div class="ql-code-block" data-language="plain"> compressionLevel: CavemanCompressionLevel.Aggressive // Compressione più aggressiva</div><div class="ql-code-block" data-language="plain">);</div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain">// Integrazione con sistema di prompt AI</div><div class="ql-code-block" data-language="plain">var prompt = $@"You are an expert assistant for the project described below.</div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain"><project_context> {context} </project_context></div><div class="ql-code-block" data-language="plain"><br></div><div class="ql-code-block" data-language="plain">Answer questions based SOLELY on this context.";</div></div><p><strong>🤝 Contribuire</strong> Le pull request sono benvenute! Per modifiche importanti, apri prima un issue per discutere cosa vorresti cambiare.</p><p>Le pull request sono benvenute! Per modifiche importanti, apri prima un issue per discuterne.</p>
Vedi Progetto