mana-swift-llm/README.md
till fd376bbdce L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native
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>
2026-05-18 22:55:32 +02:00

1.3 KiB

mana-swift-llm

Swift-Package mit lokalen LLM-Backends für alle nativen mana e.V. 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

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