Neues Swift-Package mit lokalen LLM-Backends für alle nativen mana- e.V.-Apps. Lift der bisher Memoro-eigenen Files in `memoro-native/Sources/Core/AI/` plus zwei neue Layer: ManaSharedModels (App-Group-Container-Helper) und ManaLLM-Facade. Library-Products: - ManaLLM — Backend-Abstraktion (FoundationModels, Gemma 4 E2B/E4B, NoOp), Router mit Priority-Liste, High-Level-Facade `ManaLLM.summarize/generate/classify` mit fast/creative/deep Level. - ManaLLMShared — App-Group `group.ev.mana.models` Container, HF_HUB_CACHE-Setup, Legacy-Fallback wenn Group fehlt. Lift-Anpassungen ggü. memoro: - public-Marker auf protocol + types + actors - generischer `generate(prompt:instructions:maxTokens:)` zu LLMBackend-Protocol hinzu; `summarize` als Default-Impl auf Basis von generate - AppleFMBackend behält optimierten @Generable-Summary-Path - GemmaBackend nutzt ManaSharedModels.effectiveCacheURL() statt eigenen Application-Support-Pfad; allowsCellular kommt jetzt als Initializer-Param statt App-Settings-Lookup - LLMRouter: Memoro-spezifische User-Pref-Store-Logic durch Priority-Liste-API ersetzt - LLMLog-Subsystem `ev.mana.llm` statt App-eigenes `Log.ai` Build: `swift build` clean (76s, MLX-Toolchain-Resolution beim ersten Lauf). 4/4 Parser-Tests grün. Doku: ../mana/docs/MANA_LLM.md (Plattform-SOT), CLAUDE.md (Konventionen + Lift-Tabelle). Folge: L-4 Memoro auf ManaLLM umstellen, L-5 pageta-Pilot. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
47 lines
1.3 KiB
Markdown
47 lines
1.3 KiB
Markdown
# mana-swift-llm
|
|
|
|
Swift-Package mit lokalen LLM-Backends für alle nativen
|
|
[mana e.V.](https://mana-ev.ch) iOS-/macOS-Apps.
|
|
|
|
Zwei Library-Products:
|
|
|
|
- **`ManaLLM`** — Backend-Abstraktion + High-Level-Facade.
|
|
Backends: Apple Foundation Models, Gemma 4 E2B/E4B (via MLX-Swift),
|
|
NoOp-Fallback. Router wählt nach Capability automatisch.
|
|
|
|
- **`ManaLLMShared`** — App-Group-Container-Helper für
|
|
gemeinsamen HuggingFace-Cache. Apps mit dem `group.ev.mana.models`-
|
|
Entitlement teilen heruntergeladene Modelle — **eine** App lädt,
|
|
alle anderen lesen.
|
|
|
|
## Schnell-Start
|
|
|
|
```swift
|
|
import ManaLLM
|
|
|
|
@main
|
|
struct MeineApp: App {
|
|
init() {
|
|
// HF_HUB_CACHE auf den shared Container setzen.
|
|
ManaLLM.configure()
|
|
}
|
|
|
|
var body: some Scene {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
// Irgendwo später:
|
|
let summary = await ManaLLM.summarize(longText)
|
|
let story = await ManaLLM.generate(
|
|
prompt: "Schreib eine kurze Reise-Story über Konstanz.",
|
|
level: .creative
|
|
)
|
|
let tags = await ManaLLM.classify(text, into: ["#sport", "#kultur"])
|
|
```
|
|
|
|
## Plattform-Doku
|
|
|
|
- [`../mana/docs/MANA_LLM.md`](https://git.mana.how/mana/mana/src/branch/main/docs/MANA_LLM.md) — Architektur + Use-Case-Map
|
|
- [`../mana/docs/MANA_SWIFT.md`](https://git.mana.how/mana/mana/src/branch/main/docs/MANA_SWIFT.md) — Native-Plattform-SOT
|
|
- [`CLAUDE.md`](CLAUDE.md) — Repo-lokale Konventionen
|