text-translate/MODULE.de.md
flemming-it c54c14b28a
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Failing after 2s
sign-bundle / sign (push) Failing after 1m51s
feat: selectable wire format — ollama (default), openai (vLLM etc.), anthropic
Port the multi-API client from llm.chat (llm.rs kept in lockstep):
the optional api input selects the dialect, default stays the
unchanged v0.1.x Ollama behavior. openai covers vLLM, LM Studio,
LiteLLM and cloud OpenAI; api-specific error hints; api_key sent
as Bearer (ollama/openai) or x-api-key (anthropic). model_digest
stays an Ollama-only best-effort probe and is documented as such.

Proven end-to-end against a hermetic OpenAI-wire fake (request
shape validated, response parsed) via a hub flow run.

Signed-off-by: flemming-it <sf@flemming.it>
2026-08-20 16:32:59 +02:00

3.8 KiB

text.translate

LLM-basierte Übersetzung zwischen Sprachen (Ollama, vLLM, jeder OpenAI-kompatible Server oder Anthropic). Sendet Quelltext an einen konfigurierten LLM-Endpunkt mit einem Übersetzungs-System-Prompt und liefert die Übersetzung plus audit-taugliche Modell-Herkunfts-Felder.

Capability

  • text.translate@0.1.0

Eingaben

Name Typ Beschreibung
text text Quelltext.
target_language text Zielsprache in einfachem Englisch (z.B. German, French, ja-JP).
source_language text Optionaler Hinweis auf die Ausgangssprache. Leer = Modell erkennt selbst.
endpoint text Chat-Endpunkt passend zum gewählten api (Ollama /api/chat, OpenAI-kompatibel /v1/chat/completions — vLLM u. a., Anthropic /v1/messages).
api text Optionales Wire-Format: ollama (Default), openai, anthropic.
model text Modell-ID am Endpunkt (z.B. qwen2.5:14b).
api_key text Optionaler Bearer-Token für Cloud-Endpunkte.

Ausgaben

Name Typ Beschreibung
translation text Die Übersetzung.
source_language text Echo der Eingabe (oder erkannte Sprache bei Auto).
target_language text Echo der Eingabe.
model_endpoint text URL, gegen die übersetzt wurde.
model_name text Modell-ID wie an die LLM-API gesendet.
model_digest text SHA-256-Digest des bedienten Modells — nur bei Ollama, sonst leer.

Die drei model_*-Ausgaben sind das Audit-Primitiv: jede Übersetzung im Flow-Log lässt sich auch Monate später dem exakten Modell-Hash zuordnen, der sie erzeugt hat.

Berechtigungen

permissions:
  - "net: localhost"
  - "net: 127.0.0.1"
  - "net: api.openai.com"
  - "net: api.anthropic.com"

Default-Policy erlaubt lokales Ollama und die zwei großen Hosted-Anbieter. Mit privatem LLM-Endpunkt: Hostname in die Operator-Policy-Ceiling aufnehmen; das Modul prüft seine Berechtigungen gegen diese Ceiling bei der Installation.

Für regulierte Umgebungen gebaut

Der Ollama-Endpunkt steht per Default auf einem lokalen Daemon — Quelltext verlässt nie den Rechner. Cloud-Anbieter sind Opt-in über die URL + Operator-Policy. Das model_digest-Feld ist der kryptographische Vertrauensanker für die Übersetzungs-Herkunft: zwei Ausgaben mit gleichem Digest stammen vom selben Modell-Gewicht, Punkt.

Grenzen in v0.1.0

  • Single-Shot. Lange Dokumente mit Chunking + Überlapp- Stitching folgt in v0.2.0.
  • Keine Glossar-/Terminologie-Listen. Aktuell verlässt sich das Modul auf das Allgemeinwissen des Modells; ein glossary- Input ist auf der v0.2.0-Roadmap.

Beispiel-Flow

name: translate-to-german
inputs:
  source: text
steps:
  - id: translate
    use: text.translate@^0
    with:
      text: $inputs.source
      target_language: "German"
      endpoint: "http://localhost:11434/api/chat"
      model: "qwen2.5:14b"
outputs:
  translation: $translate.translation
  audit_model: $translate.model_digest

Build

cargo build --release --target wasm32-wasip2
# Ausgabe: target/wasm32-wasip2/release/text_translate.wasm