Zum Inhalt

KI im Editmode benutzen

Ein Prompt wird definiert (oder aus dem Lieferumfang verwendet), eine Processing-Instruction (PI) im Edittemplate löst ihn aus, und eine JavaScript-Callbackfunktion schreibt das Ergebnis in Metafelder.


Beispiel A – Einfach: „Zusammenfassung“ ohne Parameter

Hier der beispielhafte Prompt Summary. Er benötigt keine {P[n]}-Parameter, sondern liest die Seiten-Vorschau über das direkt verwendbare <!--XX-PREVIEW:page--> ein

Ziel: Zusammenfassung erzeugen und in ein Eingabefeld schreiben.

Der Prompt:

label: Summary
description: Simple summary of the previewed document
systemprompt: |
  You are an assistant that summarizes a given document.
  Return the result in JSON as {"summary": "..."}.
template: |
  Please provide a short summary of the following content:
  ```
  <!--XX-PREVIEW:page-->
  ```
transformer: DEFAULTAI
schema:
  type: object
  properties:
    summary:
      type: string
  required:
    - summary

Edittemplate (Ausschnitt):

<label for="page_summary">Zusammenfassung</label>
<textarea name="IMPERIA:page_summary" id="page_summary" rows="4"></textarea>

<?imperia aiprompt
    id: summarize_btn
    prompt: summary
    linktext: Zusammenfassung erzeugen
    _done_copy_summary: page_summary
    js: I.prompt.utils.copyResult
?>

Was passiert?

  • Die PI ruft den Prompt Summary auf.
  • Der Systemprompt mit dem template für die zu übergebenden Daten (Usernachricht) sowie des Schemas werden auf Klick an die KI übermittelt.
  • Der Callback copyResult erwartet im JSON einen Schlüssel summary und schreibt dessen Wert in das Metafeld page_summary.

Beispiel B – Parametrisiert: „Einfaches Englisch“ mit {P[n]}

Jetzt eine parametrisierte Variante mit Platzhalter: simplify_en (eingebauter Default-Prompt). Der Prompt enthält {P[0]} – dort soll der spezifische Inhalt eines Feldes aus dem Dokument landen.

Ziel: Freitext vereinfachen, Ergebnis nach vorheriger Prüfung direkt ins gleiche Feld zurückschreiben.

Der Prompt:

---
description: Simplify the provided text
label: Simplify
schema:
  properties:
    simplified_en:
      type: string
  required:
    - simplified_en
  strict: true
  type: object
systemprompt: 'Rewrite the provided text in plain English suitable for CEFR A2 readers. Use short sentences and everyday vocabulary, avoiding complex grammar. Keep any existing HTML markup unchanged. Return only the JSON {"simplified_en": "the simplified text"}.'
template: |-
  Here is the provided text:
  ```{P[0]}```
transformer: DEFAULTAI

Edittemplate (Ausschnitt):

<label for="complex">Introduction</label>
<textarea name="IMPERIA:complex" id="complex" rows="6"><!--XX-TEXT:complex--></textarea>

<?imperia aiprompt
    id: simplify_btn
    prompt: simplify_en
    linktext: Simplify Introduction Text
    _value_0: complex
    _done_review_simplified_en: complex
    js: I.prompt.utils.reviewResult
?>

Erläuterungen zur PI:

  • _value_0: complex → Positionsslot P[0] wird mit dem Wert des Metafelds complex befüllt.
  • Der Prompt verwendet {P[0]} im template (Usernachricht).
  • _done_review_simplified_en: complex → der Callback öffnet zuerst einen Review-Dialog (zum Vergleich Vorher-Nachher) und schreibt nach erfolgter Bestätigung in das gleiche Feld complex.

Beispiel C – Vorschlagslisten: „Tags/Teaser/Titel“

Das Sample Vorschläge / Suggestions liefert im Prompt definierte Arrays (hier: tags_de, teaser_50_de, teaser_100_de, titles_de). Der passende Callback ist I.prompt.utils.suggestResult. Er rendert Vorschlagslinks in ein *_suggestions-Element und schreibt den per Klick ausgewählten Wert in das zugehörige Feld.

Der Prompt:

---
description: Titel-, Tag- und Teaservorschläge
label: Vorschläge de
schema:
  properties:
    tags_de:
      items:
        type: string
      type: array
    teaser_100_de:
      items:
        type: string
      type: array
    teaser_50_de:
      items:
        type: string
      type: array
    titles_de:
      items:
        type: string
      type: array
  required:
    - tags_de
    - teaser_50_de
    - teaser_100_de
    - titles_de
  strict: true
  type: object
systemprompt: 'Sie sind ein Assistent, der Tags basierend auf der bereitgestellten Nachrichtenmeldung vorschlägt. Sie erstellen auch Vorschläge für Zusammenfassungen mit etwa 50 und 100 Token sowie Titelvorschläge. Geben Sie die Ergebnisse im JSON-Format zurück {"tags_": ["tag1", "tag2"], "teaser_50_":["KurzTeaser 1....","KurzTeaser 2...."], "teaser_100_": ["LangTeaser 1....","LangTeaser 2...."], "titles_":["Titelalternative 1","Titelalternative 2"]}.\n\nErstellen Sie wenn möglich je 3 Alternativen. Wenn Sie nicht genügend Informationen haben, generieren Sie leere Felder.\n\nAntworten Sie nur mit dem JSON!!!'
template: |-
  Hier ist der bereitgestellte Text:
  ```
  <!--XX-PREVIEW(de):page-->
  ```
transformer: DEFAULTAI

TODO: check multilang implementation

Edittemplate (Ausschnitt):

<label for="IMPERIA:tags">Tags</label>
<textarea name="IMPERIA:tags" id="tags" rows="2"></textarea>
<div id="tags_suggestions"></div>

<label for="IMPERIA:teaser">Teaser (kurz)</label>
<input name="IMPERIA:teaser" id="teaser" type="text">
<div id="teaser_suggestions"></div>

<?imperia aiprompt
    id: suggest_de
    prompt: Vorschläge
    linktext: Vorschläge erzeugen lassen
    _done_suggest_tags_de: tags
    _done_suggest_teaser_50_de: teaser
    js: I.prompt.utils.suggestResult
?>

Verhalten:

  • suggestResult erwartet Schlüssel mit Präfix suggest_….
  • Für jedes Array-Feld baut der Callback Links in den entsprechenden *_suggestions-Container.
  • Ein Klick füllt das konfigurierte Ziel-Formularfeld.