airust 0.1.2

Trainierbare, modulare KI-Engine in Rust mit Compile-Zeit-Wissen
Documentation
# airust

🧠 **airust** ist eine modulare, trainierbare KI-Bibliothek in Rust.  
Sie unterstützt Compile-Zeit-Wissen über JSON-Dateien und erlaubt einfache Vorhersage-Engines für natürliche Spracheingaben.

## 🚀 Features

- 🧩 Modularer Aufbau mit `TrainableAgent`-Trait
- 🧠 Mehrere eingebaute Agenten:
  - `SimpleAgent` (exakte Übereinstimmung)
  - `FuzzyAgent` (Levenshtein-Ähnlichkeit)
  - `ContextAgent` (berücksichtigt Gesprächskontext)
  - `TfidfAgent` (nutzt BM25-Algorithmus für bessere Ähnlichkeitssuche)
  - `StructuredAgent` (unterstützt strukturierte Antwortformate)
- 💾 Compile-Zeit-Wissen via `knowledge/train.json`
- ⚖️ Gewichtete Trainingsdaten für präzisere Antworten
- 📋 Erweiterbare dynamische Wissensbasis zur Laufzeit
- 🔍 Erweiterte Texterkennung mit TF-IDF und BM25
- 🏷️ Unterstützung für strukturierte Antworten (Text, Markdown, JSON)
- 📦 Leicht in andere Projekte einbindbar
- 🖥️ CLI-Testprogramm inklusive

## 🔧 Verwendung

### In deinem Projekt

```toml
[dependencies]
airust = { path = "../airust" }
```

### Beispielcode

```rust
use airust::simple_agent::SimpleAgent;
use airust::knowledge::TRAINING_DATA;
use airust::agent::TrainableAgent;

fn main() {
    let mut ai = SimpleAgent::new();
    ai.train(&TRAINING_DATA);
    let antwort = ai.predict("Was ist airust?");
    println!("Antwort: {}", antwort);
}
```

## 📂 Trainingsdaten

Die Datei `knowledge/train.json` unterstützt nun auch Gewichtungen:

```json
[
  {
    "input": "Was ist GEL?",
    "output": "Ein leichtes Versionskontrollsystem.",
    "weight": 1.0
  },
  {
    "input": "Was ist airust?",
    "output": "Ein modularer KI-Agent in Rust.",
    "weight": 2.0
  }
]
```

Diese Datei wird automatisch bei Build-Zeit in das Binary eingebunden (`build.rs` kümmert sich darum).

## 🖥️ CLI-Nutzung

```bash
# Verschiedene Agenten testen
cargo run --bin cli -- simple "Was ist GEL?"
cargo run --bin cli -- fuzzy "Was ist Gel"
cargo run --bin cli -- tfidf "Erkläre mir airust"
cargo run --bin cli -- context "Folge-Frage zum Thema"
```

## 🧪 Testen der erweiterten Funktionen

### Kontext-Agent testen

```bash
# Interaktiven Kontext-Test starten
cargo run --bin context_test
```

Der Kontext-Agent speichert vorherige Fragen und Antworten, um bessere Ergebnisse bei zusammenhängenden Gesprächen zu liefern.

### Dynamische Wissensbasis

```bash
# Testen der dynamischen Wissensdatenbank
cargo run --bin knowledge_test
```

Mit der dynamischen Wissensbasis können Sie zur Laufzeit:

- Neue Trainingsdaten hinzufügen
- Die Wissensbasis speichern und laden
- Änderungen an Trainingsdaten vornehmen

### Strukturierte Antworten

Der `StructuredAgent` unterstützt verschiedene Antwortformate:

- Einfacher Text
- Markdown-formatierter Text
- JSON-strukturierte Daten

```bash
# Testen der strukturierten Antworten
cargo run --bin structured_test
```

## 📊 Fortgeschrittene Verwendung

### BM25-Algorithmus für bessere Trefferquoten

Der `TfidfAgent` verwendet den BM25-Algorithmus, eine Erweiterung des TF-IDF-Verfahrens, um die semantische Ähnlichkeit zwischen Fragen besser zu erkennen:

```rust
use airust::tfidf_agent::TfidfAgent;
use airust::knowledge::TRAINING_DATA;
use airust::agent::TrainableAgent;

fn main() {
    let mut ai = TfidfAgent::new();
    ai.train(&TRAINING_DATA);
    // Findet Antworten auch bei anders formulierten Fragen
    let antwort = ai.predict("Erkläre mir, was airust kann");
    println!("{}", antwort);
}
```

## 📃 Lizenz

MIT

---

> Entwickelt mit ❤️ in Rust.  
> Dieses Crate ist offen für Beiträge und Erweiterungen.