Discourse AI – Web-Artifacts

Was sind KI-Artefakte?

KI-Artefakte sind leistungsstarke Tools, die es Benutzern ermöglichen, dynamische, webbasierte Komponenten direkt in einem Discourse-Beitrag zu erstellen, einzubetten und zu interagieren. Diese Komponenten können benutzerdefiniertes HTML, CSS und JavaScript enthalten und ermöglichen eine Vielzahl von Anwendungsfällen, wie zum Beispiel:

  • Einbetten interaktiver Quizze oder Formulare.
  • Visualisierung von Daten mit umfangreichen Grafiken und Animationen.
  • Integration von leichten Webanwendungen oder Tools.
  • Ein Werkzeug zum Erlernen von Web-Frameworks, JavaScript-Bibliotheken und mehr.

KI-Artefakte verbessern Discourse-Beiträge nahtlos, indem sie Interaktivität hinzufügen und gleichzeitig ein sicheres Surf-Erlebnis gewährleisten.


Site-Einstellungen

Administratoren können verschiedene Einstellungen konfigurieren:

1. Aktivieren der Funktion

  • Einstellung: discourse_ai_enabled
    • Stellen Sie sicher, dass diese globale Einstellung aktiviert ist, damit KI-Artefakte funktionieren.

2. Sicherheitsmodi

  • Einstellung: ai_artifact_security
    • Optionen:
      • disabled: Das Artefaktsystem wird deaktiviert.
      • lax: Artefakte erscheinen automatisch in Beiträgen, ohne dass eine Benutzerinteraktion erforderlich ist.
      • hybrid: Artefakte erfordern standardmäßig einen Klick zum Ausführen, aber Beitragsautoren können data-ai-artifact-autorun zum Einbettungs-Code hinzufügen, um bestimmte Artefakte sofort auszuführen.
      • strict: Benutzer müssen Artefakte in ihrem Browser explizit aktivieren, indem sie auf eine „Anzeigen“- oder „Ausführen“-Taste klicken. Diese Einstellung wird für sicherheitsbewusste Umgebungen empfohlen. (Standard)

3. Zugriff auf den Artefakt-Ersteller

  • Standardmäßig ist der Artefakt-Ersteller-Agent nur auf Mitarbeiter-Benutzer beschränkt. Diese Einschränkung stellt sicher, dass nur vertrauenswürdige Personen Artefakte erstellen können, wodurch das Risiko eines unsachgemäßen oder böswilligen Gebrauchs minimiert wird.
  • Wenn ein breiterer Zugriff erforderlich ist, müssen die Berechtigungen manuell von einem Site-Administrator konfiguriert werden.

Verwendung von KI-Artefakten in Beiträgen

Artefakte werden bei Bedarf automatisch vom Artefakt-Ersteller-Agenten erstellt.

Das obige Artefakt wurde mit GPT-4o und der anime.js-Bibliothek generiert

Sobald sie erstellt sind, sind sie privat für Sie und den Artefakt-Ersteller-Agenten. Benutzer, die KI-Gespräche teilen können (die zur Gruppe ai bot public sharing allowed groups gehören), können ein Artefakt auch öffentlich machen, indem sie das Gespräch teilen.

Sobald es geteilt wurde, können Sie den folgenden HTML-Code verwenden, um es in einem Beitrag darzustellen:

<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>

(wobei die Version und die Artefakt-ID Ihre versionierte Artefakt-ID sind)

Sicherheitsüberlegungen

Da KI-Artefakte benutzergeschriebenes HTML, CSS und JavaScript ausführen können, hat Discourse robuste Schutzmaßnahmen implementiert:

1. Sandboxing in iFrames

  • Artefakte werden in isolierten iframe-Containern mit sandbox-Attributen gerendert, um potenziell unsichere Operationen einzuschränken, wie zum Beispiel:
    • Cross-Site-Scripting.
    • Zugriff auf externe Seiten oder APIs.

2. Content Security Policy (CSP)

3. Sicherheitsmodus

  • Strict Mode: Dies wird für Umgebungen empfohlen, in denen Artefakte nicht vollständig vertrauenswürdig sind. Benutzer müssen Artefakte in ihrem Browser manuell aktivieren, bevor sie gerendert werden.

4. Zugriff und Berechtigungen

  • Artefakte sind nur sichtbar für:
    • Ihren Ersteller.
    • Benutzer mit den richtigen Berechtigungen, um den zugehörigen Beitrag anzusehen (z. B. persönliche Nachrichten).
  • Öffentliche Artefakte müssen explizit durch Teilen der KI-Konversation als solche markiert werden.

5. Längenbegrenzungen

  • Die Größe von HTML, CSS und JavaScript in einem Artefakt ist jeweils auf 64 KB begrenzt. Dies stellt sicher, dass Komponenten leichtgewichtig bleiben und Benutzer oder Systeme nicht belasten.

Artefakt-Speicher

Web-Artefakte können optional pro Benutzer-Daten speichern. Geben Sie dem Artefakt-Ersteller dazu den Hinweis „Benutzerspeicher verwenden“ oder Ähnliches.

Dieses System ermöglicht das Speichern von Schlüssel-Wert-Paaren:

  • Privat (nur für Administratoren und bestimmte Benutzer sichtbar)
  • Öffentlich (für alle Benutzer sichtbar, einschließlich anonymer)

Schlüssel-Wert-Paare sind gegen den Beitrag gesichert, aus dem das Artefakt stammt. Wenn Sie jedoch ein Artefakt öffentlich teilen, dürfen alle Schlüssel hinzufügen.

Um den Speicher zu steuern, können Sie die versteckten Einstellungen verwenden:

  • ai_artifact_kv_value_max_length (Standard: Elemente dürfen nur 5000 Zeichen lang oder kürzer sein)
  • ai_artifact_max_keys_per_user_per_artifact (Standard: 100)

FAQ

Wer kann KI-Artefakte erstellen?

Standardmäßig können nur Mitarbeiter-Benutzer (z. B. Administratoren oder Moderatoren) Artefakte über den Artefakt-Ersteller-Agenten erstellen. Dieser Agent vereinfacht den Prozess des Entwurfs interaktiver Web-Widgets mit HTML, CSS und JavaScript.

Was passiert, wenn ich auf ein Artefakt klicke?

  • Im lax-Modus erscheinen Artefakte automatisch.
  • Im hybrid-Modus erfordern Artefakte standardmäßig einen Klick, können aber automatisch ausgeführt werden, wenn die Einbettung data-ai-artifact-autorun enthält.
  • Im strict-Modus aktiviert das Klicken auf die Taste „Ausführen“ das Artefakt und ermöglicht das Laden im Browser.

Sind KI-Artefakte sicher?

Ja. KI-Artefakte laufen in streng kontrollierten Umgebungen:

  • Sie sind gesandboxt und können nicht direkt mit der Discourse-Anwendung oder dem Benutzerkontext interagieren, sondern nur über iFrame-Nachrichten.
  • Der Strict-Modus gibt Ihnen die Kontrolle über die Aktivierung.
  • Artefakte sind standardmäßig privat; Sie müssen aktiv teilen, um globalen Zugriff zu gewähren.

Kann ich den Quellcode für Artefakte einsehen?

Ja. Wenn Discourse AI Artefakte generiert, wird der vollständige Markup-, CSS- und JavaScript-Code enthalten sein.

Welche LLMs werden unterstützt?

Artefakte können mit jedem von Ihnen konfigurierten LLM generiert werden. Allerdings sind verschiedene LLMs spezialisiert und besser auf die Erstellung von Artefakten abgestimmt.

Wir haben gute Ergebnisse mit o3, Anthropic Claude Sonnet 3.7 - 4.0, GPT-4.1, Gemini Pro 2.5 und weiteren gesehen. Im Allgemeinen leisten fortschrittlichere Modelle bessere Arbeit.

Bei der Erstellung von Artefakten spielt viel Ausprobieren eine Rolle; Experimentieren ist der Schlüssel.

23 „Gefällt mir“

Es wäre wirklich toll, etwas mehr Kontrolle über die Artefakt-Privatsphäre zu haben, damit sie nur mit bestimmten Gruppen geteilt werden können. Ähnlich wie die Berechtigungen für Kategorien derzeit funktionieren :smiley:

Ich denke, wenn du die Gruppe zum Bot-PM hinzufügst, könnte es funktionieren?

1 „Gefällt mir“

Ich werde es ausprobieren und hier berichten. Ich habe einen speziellen Anwendungsfall, der erfordert, dass Artefakte nur für eine Gruppe in einer privaten Kategorie zugänglich sind.

1 „Gefällt mir“

Ich habe den Web Artifact Creator Bot in einem neuen Thema in einer privaten Kategorie markiert, auf die die Gruppe Zugriff hat, damit er ein Artefakt erstellen kann, das nur für mich und diese spezielle Gruppe sichtbar ist. Das Artefakt-iframe-Fenster zeigt jedoch nur das Standard-„Hoppla! Diese Seite existiert nicht oder ist privat.“ an, das erscheint, wenn ein Benutzer keinen Zugriff auf eine bestimmte Seite hat.

Ich habe also eine Data Explorer-Abfrage erstellt, um zu überprüfen, wer diese Thema anzeigen kann, und die Benutzer in dieser Gruppe, die das Artefakt sehen können sollten, werden laut Datenbank tatsächlich dazu in der Lage angezeigt.

Vielleicht ist das also ein Fehler?

Meine SQL-Abfrage
-- [params]
-- int :artifact_id = 22

WITH artifact_info AS (
  SELECT
    a.id,
    a.user_id as creator_id,
    a.post_id,
    p.topic_id,
    t.category_id,
    t.archetype,
    c.read_restricted,
    t.title as topic_title
  FROM ai_artifacts a
  LEFT JOIN posts p ON a.post_id = p.id
  LEFT JOIN topics t ON p.topic_id = t.id
  LEFT JOIN categories c ON t.category_id = c.id
  WHERE a.id = :artifact_id
),
users_with_access AS (
  -- Creator hat immer Zugriff
  SELECT
    ai.creator_id as user_id,
    'Creator' as access_reason
  FROM artifact_info ai

  UNION

  -- Benutzer mit Zugriff auf private Nachrichten
  SELECT
    tau.user_id,
    'Private Message Access' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_users tau ON ai.topic_id = tau.topic_id
  WHERE ai.archetype = 'private_message'

  UNION

  -- Gruppenmitglieder mit Zugriff auf private Nachrichten
  SELECT
    gu.user_id,
    'Private Message Group Access' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_groups tag ON ai.topic_id = tag.topic_id
  JOIN group_users gu ON tag.group_id = gu.group_id
  WHERE ai.archetype = 'private_message'

  UNION

  -- Benutzer mit Zugriff auf eingeschränkte Kategorien
  SELECT
    gu.user_id,
    'Category Group Access' as access_reason
  FROM artifact_info ai
  JOIN category_groups cg ON ai.category_id = cg.category_id
  JOIN group_users gu ON cg.group_id = gu.group_id
  WHERE ai.read_restricted = true
    AND ai.archetype != 'private_message'
    AND cg.permission_type IN (1, 2) -- voller Zugriff oder Erstellen/Antworten/Anzeigen

  UNION

  -- Alle Benutzer, wenn das Thema öffentlich ist (nicht eingeschränkt und keine private Nachricht)
  SELECT
    u.id as user_id,
    'Public Access' as access_reason
  FROM artifact_info ai
  CROSS JOIN users u
  WHERE (ai.read_restricted = false OR ai.read_restricted IS NULL)
    AND (ai.archetype != 'private_message' OR ai.archetype IS NULL)
    AND u.active = true
)

SELECT
  u.id as user_id,
  u.username,
  u.name,
  u.trust_level,
  uwa.access_reason,
  ai.topic_title
FROM users_with_access uwa
JOIN users u ON uwa.user_id = u.id
CROSS JOIN artifact_info ai
WHERE u.active = true
ORDER BY u.username