Discourse AI - Web Artefakte

Was sind KI-Artefakte?

KI-Artefakte sind leistungsstarke Werkzeuge, mit denen Benutzer dynamische webbasierte Komponenten direkt in einem Discourse-Beitrag erstellen, einbetten und mit ihnen interagieren können. Diese Komponenten können benutzerdefiniertes HTML, CSS und JavaScript enthalten, was eine Vielzahl von Anwendungsfällen ermöglicht, wie zum Beispiel:

  • Einbetten interaktiver Quizze oder Formulare.
  • Visualisieren von Daten mit reichhaltigen Grafiken und Animationen.
  • Integrieren von leichten Webanwendungen oder Werkzeugen.
  • 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 Surferlebnis gewährleisten.


Site-Einstellungen

Administratoren können mehrere 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: Deaktiviert das Artefaktsystem.
      • lax: Artefakte werden automatisch in Beiträgen angezeigt, ohne dass eine Benutzerinteraktion erforderlich ist.
      • strict: Benutzer müssen Artefakte in ihrem Browser explizit aktivieren, indem sie auf eine Schaltfläche „Anzeigen“ oder „Ausführen“ klicken. Diese Einstellung wird für sicherheitsbewusste Umgebungen empfohlen. (Standard)

3. Zugriff auf Artefaktersteller

  • Standardmäßig ist die Persona des Artefakterstellers nur für Staff-Benutzer eingeschränkt. Diese Einschränkung stellt sicher, dass nur vertrauenswürdige Personen Artefakte erstellen können, wodurch das Risiko unsachgemäßer oder bösartiger Nutzung minimiert wird.
  • Wenn ein breiterer Zugriff erforderlich ist, müssen Berechtigungen manuell von einem Website-Administrator konfiguriert werden.

Verwendung von KI-Artefakten in Beiträgen

Artefakte werden automatisch von der Persona des Artefakterstellers bei Bedarf erstellt.

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

Sobald sie erstellt sind, sind sie für Sie und die Persona des Artefakterstellers privat. Benutzer, die KI-Konversationen teilen können (diejenigen, die zu den ai bot public sharing allowed groups gehören), können ein Artefakt auch öffentlich machen, indem sie die Konversation teilen.

Sobald sie geteilt wurden, können Sie die folgende HTML-Markup verwenden, um sie in einem Beitrag darzustellen:

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

(wobei Version und Artefakt-ID Ihre versionierten Artefakte sind)

Sicherheitsüberlegungen

Da KI-Artefakte benutzerdefinierte HTML-, CSS- und JavaScript-Codes 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 Websites oder APIs.

2. Content Security Policy (CSP)

3. Sicherheitsmodus

  • Strenger Modus: 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 entsprechenden Berechtigungen, den zugehörigen Beitrag anzuzeigen (z. B. private Nachrichten).
  • Öffentliche Artefakte müssen explizit als solche gekennzeichnet werden, indem die KI-Konversation geteilt wird.

5. Längenbeschränkungen

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

Artefaktspeicherung

Web-Artefakte können optional pro Benutzer Daten speichern. Tun Sie dies, indem Sie den Artefaktersteller mit „Benutzerspeicher verwenden“ oder ähnlichem anweisen.

Dieses System ermöglicht die Speicherung von Schlüssel-Wert-Paaren:

  • Privat (nur für Administratoren und bestimmte Benutzer sichtbar)
  • Öffentlich (für alle Benutzer sichtbar, auch anonym)

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.

Zur Steuerung der Speicherung können Sie die versteckten Einstellungen verwenden:

  • ai_artifact_kv_value_max_length (Standardelemente dürfen nur 5000 Zeichen 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 Staff-Benutzer (z. B. Administratoren oder Moderatoren) Artefakte über die Persona des Artefakterstellers erstellen. Diese Persona vereinfacht den Prozess der Gestaltung interaktiver Web-Widgets mit HTML, CSS und JavaScript.

Was passiert, wenn ich auf ein Artefakt klicke?

  • Im lax-Modus werden Artefakte automatisch angezeigt.
  • Im strict-Modus aktiviert das Klicken auf die Schaltfläche „Ausführen“ das Artefakt und ermöglicht dessen Laden in Ihrem Browser.

Sind KI-Artefakte sicher?

Ja. KI-Artefakte laufen in streng kontrollierten Umgebungen:

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

Kann ich den Quellcode für Artefakte sehen?

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

Welche LLMs werden unterstützt?

Artefakte können mit jedem von Ihnen konfigurierten LLM generiert werden. Verschiedene LLMs sind jedoch spezialisiert und besser für die Artefaktersstellung abgestimmt.

Wir haben gute Ergebnisse mit o3, Anthropic Claude Sonnet 3.7 - 4.0, GPT-4.1, Gemini Pro 2.5 und mehr erzielt. Im Allgemeinen werden fortschrittlichere Modelle besser abschneiden.

Bei der Erstellung von Artefakten gibt es einen großen Anteil an Versuch und Irrtum, Experimentieren ist der Schlüssel.

21 „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