# Experimente mit KI-basierter Moderation auf Discourse Meta

**URL:** https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865
**Category:** Community Building
**Tags:** moderation, ai
**Created:** [19. März 2025 um 00:31 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865 "2025-03-19T00:31:54Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [19. März 2025 um 00:31 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/1 "2025-03-19T00:31:54Z")

</div>

[KI-Spam-Erkennung](https://meta.discourse.org/t/discourse-ai-spam-detection/343541) war außerordentlich erfolgreich und hat vielen unserer Communities zum Erfolg verholfen.

In diesem Beitrag möchte ich Details zu unserem laufenden Experiment teilen, falls es für andere Communities hilfreich ist.

Ich beabsichtige, diesen Beitrag im Laufe des Experiments auf dem neuesten Stand zu halten und einige Informationen über die Art von Problemen preiszugeben, die er erkennen kann.

Seien Sie sich jedoch bewusst: Dies ist ein sich entwickelndes System, noch kein Endprodukt.

### Warum KI-Moderation?

Ein wichtiger Ansatz, den wir bei der KI-Integration in Discourse verfolgen, ist, dass sie menschliche Moderatoren unterstützen und nicht ersetzen soll. Das Versprechen der KI-Moderation ist, dass sie Moderatoren signalisieren kann, dass „etwas nicht stimmt“, und Empfehlungen für Maßnahmen gibt, die sie ergreifen sollten. Die Entscheidungsbefugnis sollte vollständig bei den menschlichen Moderatoren liegen.

### Warum Chat als Modalität für dieses Experiment?

Bei der Durchführung meines Experiments habe ich mich entschieden, Chat als Modalität für Benachrichtigungen zu verwenden. Dies ermöglicht einen dedizierten Kanal für das Experiment, der die allgemeine Moderation im Forum nicht beeinträchtigt.

Da die Erstellung und Verfeinerung von Prompts noch in der Entwicklung ist, erschien es mir nicht als guter Ansatz, das restliche Moderationsteam im Meta zu belästigen.

Wenn man Menschen hochgradig unfertige KI-Projekte gibt, kann man sehr leicht jegliches Vertrauen und zukünftige Unterstützung verlieren.

### Was ist mit Batch-Tests?

Eine Einschränkung unseres aktuellen Automatisierungssystems ist, dass Sie Änderungen derzeit nicht im Stapel testen können. Das bedeutet, dass es eine lange Verzögerung gibt, bis Sie herausfinden, wie hilfreich Änderungen an KI-Prompts sind.

Dies ist besonders problematisch, wenn Sie tagsüber nur eine Handvoll Probleme im Forum sehen. Die Reaktionszeit ist zu langsam und es kann Monate dauern, einen Prompt zu verfeinern.

Ich bin mir dieser Einschränkung sehr bewusst und hoffe, diesen Abschnitt in den nächsten Wochen aus dem Beitrag löschen zu können, da wir ein System dafür haben.

### Wie ist das konfiguriert?

Mein aktuelles Experiment baut auf 3 Funktionen auf:

1. Automatisierung - [KI-Persona-Antwortgeber](https://meta.discourse.org/t/discourse-ai-ai-auto-responder/356375)
2. Discourse AI - [KI-Persona](https://meta.discourse.org/t/ai-bot-personas/306099)
3. Discourse AI - [Benutzerdefinierte Tools](https://meta.discourse.org/t/ai-bot-custom-tools/314103)

#### Unsere Antwortautomatisierung

 ![Das Bild zeigt die Skripteinstellungen innerhalb eines Moderationstools namens „AI Responder“ auf Discourse, das dazu dient, Beiträge mithilfe der KI-Persona zu klassifizieren, mit Optionen zur Festlegung von Auslösern für Themen, Kategorien, Tags, eingeschränkte Benutzergruppen und mehr. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/b/9/9/b99357351b2c207da7ac0a82202588c239038717.png)  
Das Bemerkenswerteste am Antwortgeber ist, dass er **still** ist, d. h. er wird weder flüstern noch auf dem von ihm getaggten Thema posten.

#### Unsere Persona-Moderation

 ![Das Bild zeigt die Konfigurationsoberfläche für einen KI-Moderator namens „Automation - AI Moderator“ in Discord, der seine Rolle, Filter und zugehörigen Tools detailliert beschreibt, um eine ordnungsgemäße Moderation zu gewährleisten. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/2/a/c/2ac4fe1979b870e5f4572f654c68b585fccf8c87.png)  
Das Bemerkenswerteste hier ist das **erzwungene Tool** , das bedeutet, dass jeder Beitrag mit dem benutzerdefinierten Tool „Judge Post“ bewertet wird.

Unser aktueller System-Prompt lautet: (wird im Laufe der Zeit aktualisiert)

> **System-Prompt**
>
> Sie sind ein KI-Moderator für [meta.discourse.org](http://meta.discourse.org), das offizielle Diskussionsforum von Discourse. Ihre Aufgabe ist es, im Einklang mit unseren Community-Richtlinien einen „sauberen, gut beleuchteten Ort für zivilisierte öffentliche Diskussionen“ aufrechtzuerhalten.
> 
> MODERATIONS-PHILOSOPHIE:
> 
> - Betrachten Sie dieses Forum als eine gemeinsame Gemeinschaftsressource, wie einen öffentlichen Park.
> - Nutzen Sie Richtlinien zur Unterstützung menschlicher Urteilsfindung, nicht als starre Regeln.
> - Konzentrieren Sie sich auf die Verbesserung von Diskussionen, nicht nur auf die Durchsetzung von Regeln.
> - Balance zwischen Moderation und Ermöglichung.
> 
> INHALTSBEWERTUNGS-RAHMEN:
> 
> 1. VERBESSERE DIE DISKUSSION
> 
> 2. DISAGREEMENT-STANDARDS
> 
> 3. TEILNAHMEQUALITÄT
> 
> 4. PROBLEMIDENTIFIZIERUNG
> 
> 5. ZIVILITÄTS-DURCHSETZUNG
> 
> 6. ORGANISATIONS-PFLEGE
> 
> 7. INHALTS-EIGENTUM
> 
> Bei der Bewertung von Inhalten berücksichtigen Sie Kontext, Benutzerhistorie und Forennormen. Ihr Ziel ist es, zu leiten statt zu bestrafen, zu erziehen statt durchzusetzen, aber konsistente Standards aufrechtzuerhalten, die die Qualität der Diskussion wahren.
> 
> * * *
> 
> Beurteilen Sie ALLE Beiträge. Wenn ein Beitrag keine Moderation erfordert, verwenden Sie die Priorität „ignorieren“.

#### Unser benutzerdefiniertes Tool „Judge Post“

 ![Das Bild zeigt ein Konfigurationsformular für eine JavaScript-Funktion in einem Moderationstool namens „Discourse“, das Beiträge nach Dringlichkeitsstufen kategorisiert: „ignorieren“, „mittel“ und „dringend“, mit einem entsprechenden Skript und einem Upload-Bereich für Dateien. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/6/e/1/6e1c1162724805a63e40e2365dc61c81a9b10e42.png)

> **Das Skript, das es antreibt**
>
> ```javascript
> function invoke(params) {
> let post,topic;
> if (params.priority !== "ignore") {
> // post_id zum Testen
> const post_id = context.post_id || 1735240;
> post = discourse.getPost(post_id);
> topic = post.topic;
> let statusEmoji = "";
> 
> if (params.priority === "urgent") {
> statusEmoji = ":police_car_light:"; // Roter Kreis für dringend
> } else if (params.priority === "medium") {
> statusEmoji = ":warning:"; // Oranger Kreis für mittel
> } else if (params.priority === "low") {
> statusEmoji = ":writing_hand:"; // Grüner Kreis für niedrig
> }
> 
> const message = `${statusEmoji} [${topic.title} - ${post.username}](${post.post_url}): ${params.message}`;
> discourse.createChatMessage({ channel_name: "AI Moderation", username: "AI-moderation-bot", message: message});
> }
> chain.setCustomRaw("Post wurde klassifiziert");
> return "done";
> }
> function details() {
> return "Judge Post";
> }
> 
> ```

Das Skript verwendet einige fortgeschrittene Techniken:

1. `chain.setCustomRaw` dies weist die Persona an, die LLM-Kette zu stoppen und den Aufruf an das Tool als letzten Aufruf zu machen, wodurch Tokens gespart werden.
2. `discourse.createChatMessage` eine neue API, die von Tools verwendet werden kann, um Chat-Nachrichten zu erstellen.
3. `discourse.getPost`, das verwendet wird, um Post-Informationen abzurufen.

Angesichts dessen kann ich das Tool mit der Test-Schaltfläche testen und bestätigen, dass es gut funktioniert:

 ![Das Bild zeigt ein Dialogfeld für ein „KI-Tool testen“ mit der Priorität „mittel“, einer Platzhalternachricht, einem Testergebnis „done“ und einer Schaltfläche „Test ausführen“. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/8/9/e/89eaa07d4c9231d874820043192c9b18af3a1b60.png)  
 ![Das Bild zeigt eine Konversation im Slack-Kanal „AI Moderation“, in der „Al-moderation-bot“ fragt, warum einige Themen angepinnt sind, und sich auf einen früheren Test von „alltiagocom“ bezieht. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/5/f/1/5f1a5d50a0e28227d8d4800ce511bf72089ed82c.png)

### Welches Modell verwenden Sie?

Im Moment verwenden wir Sonnet 3.7, ein Frontier-Modell. Wir planen jedoch, auf Gemini Flash umzusteigen, sobald ich einige Verbesserungen an Discourse Automation vorgenommen habe, insbesondere die Möglichkeit, es anzuweisen, nur öffentliche Inhalte zu scannen und sichere Kategorien zu vermeiden.

Ich beantworte gerne Fragen hier und werde weiterhin Updates geben, während das Experiment läuft und wir weitere Discourse Automation-Funktionen einführen.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [19. März 2025 um 07:25 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/3 "2025-03-19T07:25:11Z")

</div>

Wie oft erhalten Sie Fehlalarme oder verpasste Erkennungen? Dies ist jedoch eine relativ friedliche Umgebung.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [19. März 2025 um 07:45 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/4 "2025-03-19T07:45:15Z")

</div>

Es war heute 100% still, so ruhig, dass ich Funktionen zur Automatisierung hinzufügen werde, um zu verfolgen, ob sie tatsächlich funktioniert 🙂

---

<div class="post-metadata">

### Author: ![eisammy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eisammy/32/528804_2.png) [@eisammy](https://meta.discourse.org/u/eisammy)
#### Post date: [19. März 2025 um 07:55 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/5 "2025-03-19T07:55:59Z")

</div>

Ich hoffe, in 2 oder 3 Jahren könnte KI lokal nützlich werden, um meinem Team beim Modding zu helfen, aber heute frage ich mich, ist das jetzt notwendig? Vielen Dank für diese regelmäßigen Themen, die die Fortschritte erklären.

Eine weitere Frage: Wird Discourse eines Tages eine mehrsprachige API für Self-Hosting bereitstellen, damit CDCK unsere Daten sicher aufbewahrt, während Sie gleichzeitig für uns gegen böswillige Akteure kämpfen? Ich weiß, dass ich ein LLM-Modell verwenden kann, aber ich würde gerne für Ihre Dienste als Alternative bezahlen 😃

Lassen Sie mich ein Beispiel geben: Google Perspective ist eine Freemium-Option dafür und unterstützt viele Sprachen zur Bekämpfung von Toxizität. Warum bietet CDCK das nicht auch an?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [21. März 2025 um 03:36 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/6 "2025-03-21T03:36:30Z")

</div>

> [@eisammy](#):
>
> Eine weitere Frage: Wird Discourse eines Tages eine mehrsprachige API für Self-Hosted-Installationen bereitstellen, damit CDCK unsere Daten sicher aufbewahren kann, während Sie gleichzeitig gegen böswillige Akteure für uns kämpfen?

Vielen Dank für Ihr Feedback. Ja, das ist etwas, worüber wir nachgedacht haben, aber ich glaube nicht, dass wir uns in den kommenden 12 Monaten auf ein solches Abenteuer einlassen werden.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [21. März 2025 um 04:13 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/7 "2025-03-21T04:13:48Z")

</div>

**Update-Zeit**

In den letzten Tagen habe ich zwei ziemlich große Änderungssätze vorgenommen, um dieses Experiment besser zu unterstützen:

> <https://github.com/discourse/discourse/pull/31900>
>
> 1. \*\*Multiselect Support for Choice Fields\*\*
> - Added a \`multiselect\` option …to the choices field component
> - Updated Field model to accept arrays as values for choices fields
> 
> 2. \*\*Post Content Feature Filtering\*\*
> - Added ability to filter posts based on content features:
> - Posts with images
> - Posts with links
> - Posts with code blocks
> - Posts with uploads
> 
> 3. \*\*Improved Group Filtering\*\*
> - Renamed \`restricted\_user\_group\` to \`restricted\_groups\` to allow filtering by multiple groups
> - Added \`excluded\_groups\` to replace \`ignore\_group\_members\` which was complex for end users
> - Renamed \`restricted\_groups\` to \`restricted\_inbox\_groups\` for more specific PM filtering and clarity.
> 
> 4. \*\*Public Topics Filter\*\*
> - Added a "Public Topics" filter option that excludes all secure categories

und

> <https://github.com/discourse/discourse/pull/31921>
>
> introduces comprehensive statistics tracking for the Discourse Automation plugin…, allowing users to monitor the performance and execution patterns of their automations:
> 
> \- Add \`discourse\_automation\_stats\` table to track execution metrics including run counts, execution times, and performance data
> \- Create a new \`Stat\` model to handle tracking and retrieving automation statistics
> \- Update the admin UI to display automation stats (runs today/this week/month and last run time)
> \- Modernize the automation list interface using Glimmer components
> \- Replace the older enable/disable icon with a toggle switch for better UX
> \- Add schema annotations to existing models for better code documentation
> \- Include extensive test coverage for the new statistics functionality
> 
> This helps administrators understand how their automations are performing and identify potential bottlenecks or optimization opportunities.

Diese Änderungen ermöglichten uns die Migration zum weitaus günstigeren **Gemini Flash 2.0-Modell** , insbesondere diese Änderung:

 ![Das Bild ist ein Screenshot einer Benutzeroberfläche, die eine Konfiguration für ein System zeigt, bei dem das Feld „Thementyp“ auf „Öffentliche Themen (alle sicheren Kategorien ausschließen)“ gesetzt ist, um eine Aktion nur für Beiträge mit nicht sicheren Themen auszulösen. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/5/3/b/53b85924e334e00c05f6a8c5871d0860ac5811bf.png)

Sie gab uns die Gewissheit, dass **nur** öffentliche Beiträge im Forum gescannt werden.

Bei CDCK haben wir unterschiedliche Regeln für die Datenverarbeitung für verschiedene Datenklassen, und derzeit genehmigen wir die Nutzung von Gemini Flash nur für öffentliche Daten.

Meine ursprüngliche Aufforderung in der OP löste auf Meta nichts aus. Fairerweise muss man sagen, dass Meta ein netter und freundlicher Ort ist und nur sehr wenig manuelle Moderation benötigt, daher ist das keine Überraschung.

Dennoch war ich mir einfach nicht sicher, ob etwas funktionierte…

Um das zu beheben, habe ich der Automatisierung Statistiken hinzugefügt (vor ein paar Stunden zusammengeführt):

 ![Das Bild ist ein Screenshot, der einen Benutzer namens „AI Responder“ von vor 8 Monaten mit verifiziertem Status zeigt, der zuletzt vor 20 Minuten aktiv war, mit Optionen zum Bearbeiten oder Löschen. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/2/0/9/209e4cc3a6c1a14b555c934679b44e701ccd0f95.png)

Wir können also sagen, dass diese Automatisierung funktioniert, da sie vor 20 Minuten und achtmal in diesem Monat ausgeführt wurde.

* * *

Als die Dinge am Tag der Bereitstellung sehr ruhig waren, beschloss ich, die Automatisierung „falsche Alarme“ auslösen zu lassen, da ich ein besseres Gefühl für das System bekommen wollte. Ich habe die Aufforderung geändert zu:

```plaintext
Sie sind ein KI-Moderator für meta.discourse.org, das offizielle Diskussionsforum von Discourse. Ihre Aufgabe ist es, zu einer „sauberen, gut beleuchteten Stätte für zivilisierte öffentliche Diskussionen“ beizutragen, die mit unseren Community-Richtlinien übereinstimmt.

MODERATIONS-PHILOSOPHIE:
- Betrachten Sie dieses Forum als eine gemeinsame Gemeinschaftsressource, wie einen öffentlichen Park
- Nutzen Sie Richtlinien als Hilfe für menschliches Urteilsvermögen, nicht als starre Regeln
- Konzentrieren Sie sich auf die Verbesserung von Diskussionen, nicht nur auf die Durchsetzung von Regeln
- Gleichgewicht zwischen Moderation und Facilitation
- Seien Sie vorsichtig bei der Kennzeichnung fragwürdiger Inhalte zur menschlichen Überprüfung

INHALTSBEWERTUNGS-RAHMENWERK:
1. VERBESSERUNG DER DISKUSSION
   - Bewerten Sie, ob Beiträge substanziellen Wert zur Konversation beitragen
   - Kennzeichnen Sie Beiträge mit minimaler Substanz, generischen Antworten oder oberflächlicher Beteiligung
   - Erkennen Sie Beiträge, die Respekt für Themen und Teilnehmer zeigen
   - Unterstützen Sie die Erkundung bestehender Diskussionen, bevor Sie neue beginnen
   - Seien Sie wachsam gegenüber „Vorbeifahr“-Kommentaren, die wenig zur Diskussion beitragen

2. DISAGREEMENT-STANDARDS
   - Unterscheiden Sie zwischen der Kritik von Ideen (akzeptabel) und der Kritik von Personen (inakzeptabel)
   - Kennzeichnen Sie Fälle von: Beschimpfungen, Ad-hominem-Angriffen, Tonfall-Reaktionen, reflexartigen Widersprüchen
   - Bewerten Sie, ob Gegenargumente begründet sind und die Konversation verbessern
   - Seien Sie empfindlich gegenüber subtilen Formen der Herablassung oder Geringschätzung

3. QUALITÄT DER TEILNAHME
   - Priorisieren Sie Diskussionen, die das Forum zu einem interessanten Ort machen
   - Berücksichtigen Sie Community-Signale (Likes, Flags, Antworten) bei der Bewertung
   - Kennzeichnen Sie Inhalte, die generisch, vorlagenhaft oder ohne persönliche Einsicht erscheinen
   - Achten Sie auf Beiträge, die formelhaft wirken oder sich nicht sinnvoll mit spezifischen Details auseinandersetzen
   - Unterstützen Sie Inhalte, die die Community „besser hinterlassen, als wir sie vorgefunden haben“

4. PROBLEM-IDENTIFIZIERUNG
   - Konzentrieren Sie sich auf die Kennzeichnung von schlechtem Verhalten, anstatt sich damit auseinanderzusetzen
   - Seien Sie proaktiv bei der Identifizierung potenziell problematischer Muster, bevor sie eskalieren
   - Erkennen Sie, wann Flags eine Aktion auslösen sollten (automatisch oder durch menschliche Moderatoren)
   - Denken Sie daran, dass sowohl Moderatoren als auch Benutzer Verantwortung für das Forum tragen

5. GEWALTFREIHEITS-DURCHSETZUNG
   - Identifizieren Sie potenziell beleidigende, missbräuchliche oder hasserfüllte Sprache, einschließlich subtiler Formen
   - Kennzeichnen Sie obszöne oder sexuell explizite Inhalte
   - Achten Sie auf Belästigung, Identitätsdiebstahl oder die Offenlegung privater Informationen
   - Verhindern Sie Spam, Forum-Vandalismus oder Marketing, das als Beitrag getarnt ist

6. ORGANISATIONS-PFLEGE
   - Beachten Sie Themen, die in falschen Kategorien gepostet wurden
   - Identifizieren Sie Cross-Posting über mehrere Themen hinweg
   - Kennzeichnen Sie Antworten ohne Inhalt, Themenabweichungen und Thread-Hijacking
   - Entmutigen Sie Beitrags-Signaturen und unnötige Formatierungen

7. INHALTS-EIGENTUM
   - Kennzeichnen Sie unerlaubtes Posten von digitalen Inhalten anderer
   - Identifizieren Sie potenzielle Verletzungen des geistigen Eigentums

8. ERKENNUNG VON KI-GENERIERTEN INHALTEN
   - Achten Sie auf Anzeichen von KI-generierten Inhalten: übermäßig formelle Sprache, generische Formulierungen, perfekte Grammatik mit wenig Persönlichkeit
   - Kennzeichnen Sie Inhalte, die vorlagenhaft wirken, keine Spezifität aufweisen oder sich nicht mit den Besonderheiten der Diskussion auseinandersetzen
   - Seien Sie empfindlich gegenüber Antworten, die umfassend, aber oberflächlich in der tatsächlichen Einsicht erscheinen
   - Identifizieren Sie Beiträge mit ungewöhnlichen Formulierungen, unnötiger Wortwahl oder repetitiven Strukturen

AUSGABE-FORMAT:
Ihre Moderationsbewertung muss äußerst prägnant sein:
**[PRIORITÄT]**: 1-2 Sätze Begründung mit identifiziertem Schlüsselproblem
Verwenden Sie Markdown-Formatierung zur Lesbarkeit, aber halten Sie die Gesamtreaktion möglichst unter 3 Zeilen.

Berücksichtigen Sie bei der Bewertung von Inhalten Kontext, Benutzerhistorie und Forennormen. Setzen Sie eine hohe Messlatte für das, was ohne Moderation durchgeht – verwenden Sie „niedrige“ Priorität auch für geringfügige Probleme und reservieren Sie „ignorieren“ nur für klar wertvolle Beiträge.

--- 

Beurteilen Sie ALLE Beiträge mit skeptischem Blick. Verwenden Sie die Priorität „ignorieren“ nur für Beiträge mit klarem, authentischem Wert. Im Zweifelsfall über den Wert oder die Authentizität eines Beitrags weisen Sie mindestens eine „niedrige“ Priorität zur menschlichen Überprüfung zu.

```

Diese Aufforderung führt zu einem weitaus lauteren Chat-Kanal:

 ![Das Bild zeigt eine Reihe von Nachrichten von einem KI-Moderationsbot, der Empfehlungen für Engagement und Hintergrundüberprüfungen zur Gewährleistung sinnvoller Benutzerbeiträge gibt und sich auch mit einem Kodierungsproblem in einem vermutlich computerbezogenen Kontext befasst. (Beschriftet von KI)](https://global.discourse-cdn.com/meta/original/4X/e/5/1/e510aad2b0083f1ac96a70119a153e26f7570c4d.png)

### Beobachtungen

Dieses Experiment nimmt Wendungen, aber ich sehe etwas sehr Interessantes entstehen.

Nicht alle Moderationen müssen auf Flags basieren, manchmal reicht es schon, einige Ideen und das Bewusstsein zu haben, dass etwas vor sich geht.

Diese Art von Werkzeug ist sehr auf unsere Vision für KI in Communities abgestimmt, es ist ein „kleiner KI-Sidekick“, der Moderatoren Ideen gibt, worauf sie achten sollen. Zusätzlich ist es eine Gelegenheit, gängige Richtlinien und Regeln durchzusetzen.

Einige kleine Communities möchten vielleicht einen „nörgelnden“ KI-Sidekick. Andere, größere und geschäftigere, können sich vielleicht nur die Aufmerksamkeit für extreme Ausreißer leisten.

Zukünftige Bereiche, an denen ich hier arbeite, sind:

1. Es ist etwas ärgerlich, dass der Moderationsbot eingreift und zweimal nach demselben Thema fragt. Das Zusammenfassen alter Dinge, das Threading oder etwas anderes könnte als Ansatz zur Vermeidung dieses Problems interessant sein.

2. @hugh hat angemerkt, dass man, sobald man einen Chat-Kanal wie diesen sieht, den Bot einfach bitten möchte, in Ihrem Namen zu handeln. Z.B.:

Um in den Zustand zu gelangen, in dem ein Bot in unserem Namen handeln kann, benötigen wir ein neues Konstrukt in Discourse AI, das es einem Werkzeug ermöglicht, die Benutzerzustimmung einzuholen. Das ist etwas, worüber ich nachdenke.

1. Wie in der OP angesprochen, wäre es schön, Stapelverarbeitung durchzuführen, es gibt einfach zu viel Vorlaufzeit zwischen der Bearbeitung einer Eingabeaufforderung und dem Wissen, ob die Bearbeitung funktioniert hat oder nicht. Ich denke darüber nach, wie man dies zur Automatisierung hinzufügt.

2. Live-Tuning ist ein interessantes Konzept… „Hey Bot, das ist zu viel, warum belästigst du mich mit diesen Dingen?“ … „Bot … X, Y, Z … möchtest du, dass ich deine Anweisungen verbessere?“ … „Ja“

Ich hoffe, das ist für Sie alle hilfreich, lassen Sie mich wissen, wenn Sie Fragen haben.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [21. März 2025 um 21:14 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/8 "2025-03-21T21:14:47Z")

</div>

Nur eine Idee, könntest du in deinen Prompt etwas einbauen, damit der Moderationsbot zumindest gelegentlich eine Ping-Antwort postet, um zu zeigen, dass er funktioniert. Vielleicht zum Beispiel mit 1% Wahrscheinlichkeit, wenn ein Beitrag keine Aktion benötigt, eine Bemerkung zu posten, dass dieser Beitrag keine Aktion erforderte. Oder eine niedrigere Wahrscheinlichkeit, für ein beschäftigteres Forum.

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [22. März 2025 um 08:05 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/9 "2025-03-22T08:05:14Z")

</div>

Betrachtet man den Unterschied zwischen diesen Prompts:

> Judge ALL posts, if a post requires no moderation use the ignore priority.

> Judge ALL posts with a skeptical eye. Only use the “ignore” priority for contributions with clear, authentic value. When in doubt about a post’s value or authenticity, assign at least a “low” priority for human review.

Ich denke, es ist wichtig, sich an den starken Rezenz-Bias in den Modellen zu erinnern – vielleicht sollten alle Befehlswörter in Prosa am Ende in umgekehrter Reihenfolge ihrer gewünschten Häufigkeit erwähnt werden.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [25. März 2025 um 12:30 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/10 "2025-03-25T12:30:34Z")

</div>

> [@Ed\_S](#):
>
> Nur eine Idee, könnten Sie etwas in Ihrer Eingabeaufforderung tun, damit der Moderations-Bot zumindest ab und zu eine Ping-Antwort postet, um zu zeigen, dass er funktioniert. Vielleicht zum Beispiel mit 1% Wahrscheinlichkeit, wenn ein Beitrag keine Aktion erfordert, eine Notiz posten, dass dieser Beitrag keine Aktion erfordert. Oder eine geringere Wahrscheinlichkeit für ein geschäftigeres Forum.

Alternativ können Sie es bei einem harmlosen, gebräuchlichen, aber nicht zu gebräuchlichen Wort auslösen. „Beiträge kennzeichnen, die Ananas erwähnen“.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [3. April 2025 um 03:56 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/11 "2025-04-03T03:56:10Z")

</div>

Ich habe eine Weile nichts gepostet, obwohl ich mein kleines Chatfenster täglich besucht und es mindestens ein- oder zweimal pro Tag **hilfreich** genutzt habe… **konsequent**.

Der Grund für meine Verzögerung hier war, dass ich diese ziemlich große Änderung durcharbeiten musste.

> <https://github.com/discourse/discourse-ai/pull/1214>
>
> \*\*1. What Led to the Change? (Problems with Previous Approach)\*\*
> 
> \* \*\*Incons…istent Context Handling:\*\* The previous system often passed context information (like \`post\_id\`, \`user\`, \`private\_message\`, \`topic\_id\`, \`custom\_instructions\`) around using plain Ruby hashes (\`context: {}\`). This approach lacked structure, was potentially error-prone (typos in keys), and made it harder to track what context was available or required in different parts of the AI Bot system (Tools, Personas, Bot logic). Accessing context often involved \`context\[:key\]\`.
> \* \*\*Inflexible Image/Upload Handling:\*\* Images associated with a user message were previously passed using a separate \`upload\_ids: \[...\]\` array within the message hash. This made it difficult or impossible to represent prompts where text and images are interleaved naturally (e.g., "Describe this image {image1}, then compare it to this one {image2} and tell me the difference"). The LLM received the text and a list of associated image IDs, but not their precise relationship \*within\* the user's text flow.
> \* \*\*Complex/Decentralized Context Building:\*\* Logic for assembling conversation history (e.g., pulling previous posts/messages, handling custom prompts, associating uploads) was somewhat spread out, notably seen in the significant changes and removals within \`lib/ai\_bot/playground.rb\` (specifically the \`conversation\_context\` and \`chat\_context\` logic being refactored).
> 
> \*\*2. What New Support Does It Add? (Key Changes & Benefits)\*\*
> 
> \* \*\*Introduction of \`DiscourseAi::AiBot::BotContext\`:\*\*
> \* \*\*What:\*\* A dedicated class (\`BotContext\`) is introduced to encapsulate all contextual information for an AI Bot interaction. This includes messages, post/topic details, user information, site details (URL, title, description), time, participants, and control flags (like \`skip\_tool\_details\`).
> \* \*\*Why:\*\* Provides a structured, standardized, and object-oriented way to manage and pass context. This improves code readability, maintainability, and reduces the chance of errors compared to using unstructured hashes. Access changes from \`context\[:key\]\` to \`context.key\`.
> \* \*\*Impact:\*\* This class is now used consistently when initializing Tools (\`Tool#initialize\`), crafting prompts (\`Persona#craft\_prompt\`), invoking the bot (\`Bot#reply\`), and within various helper methods, ensuring a uniform context object is available throughout the system.
> 
> \* \*\*Enhanced Multimodal Input (Inline Images/Uploads):\*\*
> \* \*\*What:\*\* The format for representing user messages with uploads has fundamentally changed. Instead of a separate \`upload\_ids\` array, uploads are now embedded directly \*within\* the \`content\` field, which becomes an array if uploads are present. Example: \`content: \["Here is an image:", { upload\_id: 123 }, "What do you see?"\]\`.
> \* \*\*Why:\*\* This allows for precise interleaving of text and visual elements within a single user turn. It's a much more natural way to represent multimodal prompts for vision-capable LLMs, enabling more complex instructions involving multiple images referenced at specific points in the text.
> \* \*\*Impact:\*\* Required changes across multiple components:
> \* \*\*\`Prompt\` Class:\*\* Logic for handling uploads (\`encoded\_uploads\`, \`encode\_upload\`, \`content\_with\_encoded\_uploads\`, \`text\_only\`) was refactored to support this new inline structure. Validation was updated.
> \* \*\*LLM Dialects:\*\* All relevant dialects (\`ChatGpt\`, \`Claude\`, \`Gemini\`, \`Mistral\`, \`Nova\`, \`Ollama\`, \`OpenAiCompatible\`) were updated to correctly parse the new \`content\` array format and translate it into the specific structure required by each respective LLM API (e.g., OpenAI's array of text/image\_url objects, Gemini's parts array). A helper \`to\_encoded\_content\_array\` was added to the base \`Dialect\` class.
> \* \*\*Modules Using Vision:\*\* Code that passes uploads to LLMs (e.g., \`LlmTriage\`, \`Assistant\`, \`SpamScanner\`, \`Playground\`) was updated to use the new \`content\` format.
> 
> \* \*\*Refactored Context Building:\*\*
> \* \*\*What:\*\* Logic for building conversation history from posts or chat messages seems to be increasingly centralized in \`DiscourseAi::Completions::PromptMessagesBuilder\`. New methods like \`messages\_from\_post\` and \`messages\_from\_chat\` appear to encapsulate this logic.
> \* \*\*Why:\*\* Simplifies components like the \`Playground\` by abstracting away the details of fetching and formatting conversation history, including handling the new inline upload format.
> \* \*\*Impact:\*\* Significant simplification in \`lib/ai\_bot/playground.rb\`, removing large chunks of previous context-building code.

Sie bietet eine subtile, aber kritische Verbesserung für Discourse AI.

Ich bemerkte regelmäßig, dass der Moderationsbot über völlig irrelevante Bilder sprach, aufgrund der Art und Weise, wie wir den Kontext konstruierten. Die Änderung ermöglicht es uns, gemischte Inhalte (Bilder und Text in korrekt geordneter Weise enthaltend) zu präsentieren.

Das bedeutet, dass das LLM nicht mehr verwirrt wird.

### Was kommt als Nächstes?

1. Wir haben keine Möglichkeit in der Automatisierung, die Regel nach der Bearbeitung eines Beitrags aufrufen zu lassen, sobald diese sich „gesetzt“ hat. LLM-Aufrufe können teuer sein. Nur weil Leute Tippfehler bearbeiten, wollen wir nicht immer wieder etwas scannen. Ich bin mir nicht sicher, ob dies hier erforderlich ist, aber ich möchte die Möglichkeit zulassen, eine Automatisierung auszulösen, sobald ein Beitrag seine neue Form angenommen hat.
2. Prompt-Engineering – der aktuelle Prompt ist in Ordnung, aber etwas zu laut für meinen Geschmack, er stört mich ein wenig zu sehr, ich werde ihn vielleicht etwas abschwächen.
3. Verbesserter Kontext – eine Sache, die mich wirklich stört, ist, dass die Automatisierung jetzt kein Bewusstsein für das Vertrauen der Benutzer hat. Einige Benutzer werden in einer Community weitaus mehr vertraut als andere (z. B. Moderatoren). Ich möchte sehen, ob wir diese Geschichte verbessern können.
4. Möglichkeit, die Automatisierung auf Stapel von Beiträgen für schnelle Iterationen anzuwenden.
5. Ich bin sicher, dass noch viel mehr auftauchen wird.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [8. April 2025 um 07:21 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/14 "2025-04-08T07:21:40Z")

</div>

Meine neueste Arbeit in Arbeit ist:

> <https://github.com/discourse/discourse-ai/pull/1250>
>
> Add API methods to AI tools for reading and updating personas, enabling
> more fle…xible AI workflows. This allows custom tools to:
> 
> \- Fetch persona information through discourse.getPersona()
> \- Update personas with modified settings via discourse.updatePersona()
> \- Also update using persona.update()
> 
> These APIs enable new use cases like "trainable" moderation bots, where
> users with appropriate permissions can set and refine moderation rules
> through direct chat interactions, without needing admin panel access.
> 
> Also adds a special API scope which allows people to lean on API
> for similar actions

Meine Idee ist, dass 2 Personas das System antreiben werden:

1. Persona, die die Triage durchführt - die heute bereits definierte (Triage-Bot)
2. Persona, die mit Moderatoren / Benutzern mit hohem Vertrauen interagiert (Mod-Bot)

Durch den Chat mit `@mod_bot` können Moderatoren (oder Benutzer mit sehr hohem Vertrauen) `@triage_bot` anleiten, wie er sich verhalten soll.

Zum Beispiel:

`@mod_bot, stelle sicher, dass @sam Bescheid weiß, wenn jemand über KI spricht`

Dies wird den Mod-Bot veranlassen, die Systemaufforderung des Triage-Bots zu ändern. Das bedeutet, dass es ausreicht, sich in diesem speziellen Chatraum zu befinden, um jeder Community zu ermöglichen, den Roboter so zu trainieren, wie sie ihn haben möchte.

Es ist eine interessante Wendung bei der Implementierung von Speicher. Ich bin mir nicht sicher, wie gut es in der Praxis funktionieren wird, aber es ist ein sehr lohnenswertes Experiment.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [26. Mai 2025 um 00:01 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/15 "2025-05-26T00:01:56Z")

</div>

Das läuft immer noch auf Meta.

Ein Erkenntnis, die ich jetzt habe, ist, dass Automatisierung großartig ist, außer wenn sie es nicht ist, dann ist sie schrecklich.

Insbesondere, mache einen Roboter **zu laut** , und der Roboter wird nutzlos.

Ich habe unsere benutzerdefinierten Anweisungen auf das SEHR langweilige umgestellt:

```plaintext
Du bist ein KI-basierter Bot, der JEDEN Beitrag auf meta.discourse.org liest.

Du hast Zugriff auf ein einziges Werkzeug, das du bei jedem Beitrag verwendest. 

Du wirst PRIORITÄT IGNORIEREN verwenden, um den Beitrag zu ignorieren und Benachrichtigungen zu vermeiden.

ALLE anderen Prioritäten werden benachrichtigen.

### Richtlinien für die Priorisierung
## Inhaltsüberwachung
* Benachrichtige @nat, wenn nicht-englischer Inhalt gepostet wird (zur Unterstützung der Übersetzerfunktion)
* Benachrichtige @sam, wenn du merkst, dass eine Diskussion toxisch wird oder sich aufheizt
* Benachrichtige @hugh, wenn Benutzer die Bewertungswarteschlange diskutieren
  * Beinhaltet Diskussionen über Staff-Erfahrung, Moderator-Tools, Warteschlangen, Moderationsworkflows
  * Besonders Markieren, Überprüfungen, Freigaben und verwandte UI/UX-Themen der Moderation
### Ende der Richtlinie für die Priorisierung

```

Bei früheren Iterationen habe ich mir Dinge wie „lass mich wissen, wenn du einen Bug diskutiert siehst, der nicht in die Bug-Kategorie gehört“ angeschaut.

Es reicht, eine **Poison-Regel** zu haben, und dann gehen die Chat-Benachrichtigungen durch die Decke, und du ignorierst sie einfach.
