diff --git a/MODULE.de.md b/MODULE.de.md new file mode 100644 index 0000000..ab5661a --- /dev/null +++ b/MODULE.de.md @@ -0,0 +1,97 @@ +# text.summarize + +Ollama-basierte treue Zusammenfassung. Sendet Quelltext an +einen konfigurierten LLM-Endpunkt mit einem Treue-vor-Kreativität- +System-Prompt und liefert die Zusammenfassung plus +audit-taugliche Modell-Herkunfts-Felder. + +## Capability + +- `text.summarize@0.1.0` + +## Eingaben + +| Name | Typ | Beschreibung | +| ----------- | ---- | ---------------------------------------------------------------------------------- | +| `text` | text | Quelltext. | +| `style` | text | Optionaler Stil-Hinweis (z.B. `one paragraph`, `three bullet points`, `a tweet`). Default: `one paragraph`. | +| `language` | text | Optionaler Ziel-Sprache (z.B. `German`, `ja-JP`). Leer = Quellsprache. | +| `endpoint` | text | Ollama-förmiger `/api/chat`-Endpunkt. | +| `model` | text | Modell-ID am Endpunkt. | +| `api_key` | text | Optionaler Bearer-Token für Cloud-Endpunkte. | + +## Ausgaben + +| Name | Typ | Beschreibung | +| ---------------- | ---- | ------------------------------------------------------------------ | +| `summary` | text | Die Zusammenfassung. | +| `style` | text | Echo des Stil-Inputs. | +| `language` | text | Echo des Sprach-Inputs. | +| `model_endpoint` | text | URL, gegen die zusammengefasst wurde. | +| `model_name` | text | Modell-ID wie an die LLM-API gesendet. | +| `model_digest` | text | SHA-256-Digest des bedienenden Ollama-Modells (wenn erreichbar). | + +## Treue vor Kreativität + +Der System-Prompt ist so getrimmt, dass die Zusammenfassung +aus dem Quelltext herleitbar bleibt — keine Spekulation, kein +mitgedachter Kontext, keine „kreativen" Umformulierungen, die +abdriften. Geeignet für Compliance-Flows, in denen eine +halluzinierte Zusammenfassung schlimmer ist als eine +ausführliche. Das Modell behält die Freiheit, die das vom +Operator gewählte LLM ihm gibt; dieses Modul ist der Prompt ++ Audit-Rahmen, kein fine-tuned Modell. + +## Berechtigungen + +```yaml +permissions: + - "net: localhost" + - "net: 127.0.0.1" + - "net: api.openai.com" + - "net: api.anthropic.com" +``` + +Analog `text.translate` — lokales Ollama per Default, Cloud +per Operator-Policy zuschaltbar. + +## Grenzen in v0.1.0 + +- Single-Shot. Sehr lange Quelltexte (> 32k Tokens je nach + Modell) brauchen einen vorgeschalteten Chunker; v0.1.0 + macht noch keine automatische Chunked-Summarise+Reduce- + Pipeline. +- Keine strukturierte Ausgabe. `summary` ist Freitext. + JSON-formatierte Zusammenfassungen + (`{ key_points: [], conclusions: [] }`) sind ein + v0.2.0-Kandidat. + +## Beispiel-Flow + +```yaml +name: extract-summarise +inputs: + document: bytes +steps: + - id: extract + use: text.extract@^0 + with: + document: $inputs.document + - id: summarise + use: text.summarize@^0 + with: + text: $extract.extracted.pages[*].text + style: "three bullet points" + endpoint: "http://localhost:11434/api/chat" + model: "qwen2.5:14b" +outputs: + summary: $summarise.summary + audit_model: $summarise.model_digest +``` + +## Build + +```bash +cargo build --release --target wasm32-wasip2 +# Ausgabe: target/wasm32-wasip2/release/text_summarize.wasm +``` diff --git a/MODULE.md b/MODULE.md new file mode 100644 index 0000000..95d6d95 --- /dev/null +++ b/MODULE.md @@ -0,0 +1,94 @@ +# text.summarize + +Ollama-backed faithful summarisation. Sends source text to a +configured LLM endpoint with a fidelity-over-creativity system +prompt and emits the summary plus audit-grade +model-provenance fields. + +## Capability + +- `text.summarize@0.1.0` + +## Inputs + +| Name | Type | Description | +| ----------- | ---- | ---------------------------------------------------------------------------- | +| `text` | text | Source text to summarise. | +| `style` | text | Optional style hint (e.g. `one paragraph`, `three bullet points`, `a tweet`). Default: `one paragraph`. | +| `language` | text | Optional output-language hint (e.g. `German`, `ja-JP`). Empty = same as source. | +| `endpoint` | text | Ollama-shaped `/api/chat` endpoint URL. | +| `model` | text | Model identifier the endpoint serves. | +| `api_key` | text | Optional bearer token for cloud-hosted endpoints. | + +## Outputs + +| Name | Type | Description | +| ---------------- | ---- | ------------------------------------------------------------ | +| `summary` | text | The summary. | +| `style` | text | Echo of the input style. | +| `language` | text | Echo of the input language. | +| `model_endpoint` | text | URL the summary was generated against. | +| `model_name` | text | Model identifier as supplied to the LLM API. | +| `model_digest` | text | SHA-256 digest of the served Ollama model (when reachable). | + +## Fidelity over creativity + +The system prompt is tuned so the summary is derivable from +the source — no speculation, no implied context, no +"creative" rephrasing that drifts. Suitable for compliance +flows where a hallucinated summary is worse than a verbose +one. The model still has the freedom the operator's chosen +LLM gives it; this module is the prompt + audit harness, not +a fine-tuned model. + +## Permissions + +```yaml +permissions: + - "net: localhost" + - "net: 127.0.0.1" + - "net: api.openai.com" + - "net: api.anthropic.com" +``` + +Same shape as `text.translate` — local Ollama by default, +opt-in cloud via operator policy. + +## Limits in v0.1.0 + +- Single-shot. Very long source texts (>32k tokens depending + on the model) need an upstream chunker; v0.1.0 does not yet + do automatic chunked-summarise + reduce. +- No structured output. `summary` is free-form text. JSON- + formatted summaries (e.g. `{ key_points: [], conclusions: + [] }`) are a v0.2.0 candidate. + +## Example flow + +```yaml +name: extract-summarise +inputs: + document: bytes +steps: + - id: extract + use: text.extract@^0 + with: + document: $inputs.document + - id: summarise + use: text.summarize@^0 + with: + text: $extract.extracted.pages[*].text + style: "three bullet points" + endpoint: "http://localhost:11434/api/chat" + model: "qwen2.5:14b" +outputs: + summary: $summarise.summary + audit_model: $summarise.model_digest +``` + +## Build + +```bash +cargo build --release --target wasm32-wasip2 +# Output: target/wasm32-wasip2/release/text_summarize.wasm +```