Diese Idee ein wenig erweitert: Benutzern die Interaktion mit Anwendungen in natürlicher Sprache zu ermöglichen, ist im Grunde mein Traum, was KI angeht. Mit Discourse und dem Data Explorer Plugin könnte es möglich sein, Ergebnisse aus Prompts wie “Liste Benutzer auf, die Interesse an Moderation gezeigt haben” zu erhalten. Oder noch besser: “Sende eine Einladung an die Gruppe community_moderation an alle Benutzer, die Interesse an Moderation gezeigt haben.”
Zurück zu dem, was jetzt möglich ist:
Beim Testen mit ChatGPT 3.0 und 3.5 habe ich gute Ergebnisse erzielt, wenn ich es gebeten habe, eine PostgreSQL-Abfrage zurückzugeben und die Struktur der Tabellen, an denen ich interessiert bin, in die Eingabeaufforderung kopiert habe. Zum Beispiel:
Zusammenfassung
Ich: Gib eine PostgreSQL-Abfrage zurück, die alle Benutzernamen von Benutzern auflistet, die sich in der Gruppe “community_moderators” befinden, für die folgende Datenbankstruktur:
# == Schema Information
#
# Table name: groups
#
# id :integer not null, primary key
# name :string not null
# == Schema Information
#
# Table name: group_users
#
# id :integer not null, primary key
# group_id :integer not null
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# username :string(60) not null
ChatGPT 3.5: Sicher, hier ist eine PostgreSQL-Abfrage, die alle Benutzernamen von Benutzern auflistet, die sich in der Gruppe “community_moderators” befinden, basierend auf der angegebenen Datenbankstruktur:
SELECT u.username
FROM users u
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators';
Diese Abfrage ruft die Benutzernamen aus der users-Tabelle ab, indem sie mit der group_users-Tabelle über die Benutzer-ID verknüpft wird, und dann mit der groups-Tabelle über die Gruppen-ID verknüpft wird. Sie filtert die Ergebnisse, um nur Benutzernamen für Benutzer einzuschließen, die sich in der Gruppe “community_moderators” befinden.
Ich: Hier ist die Struktur der Tabellen für Themen und Beiträge der Anwendung:
# == Schema Information
#
# Table name: topics
#
# id :integer not null, primary key
# title :string not null
# == Schema Information
#
# Table name: posts
#
# id :integer not null, primary key
# user_id :integer
# topic_id :integer not null
# post_number :integer not null
# raw :text not null
Gib eine Abfrage zurück, die alle Themen-IDs, Beitrags-IDs und Benutzernamen für alle Beiträge auflistet, die von Mitgliedern der Gruppe “community_moderators” erstellt wurden und die einen Hinweis darauf geben, dass der Poster an der Moderation polarisierender Diskussionen interessiert ist.
ChatGPT 3.5: Um dies zu erreichen, müssten Sie die Tabellen posts, topics, users und group_users basierend auf dem bereitgestellten Schema verknüpfen. Hier ist eine PostgreSQL-Abfrage, die die angeforderten Informationen abruft:
SELECT t.id AS topic_id, p.id AS post_id, u.username
FROM posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators'
AND (p.raw ILIKE '%moderate%' OR p.raw ILIKE '%polarizing%' OR p.raw ILIKE '%discussion%');
Diese Abfrage ruft die topic_id, post_id und username für alle Beiträge ab, die von Mitgliedern der Gruppe “community_moderators” erstellt wurden und bestimmte Schlüsselwörter enthalten, die auf ein Interesse an der Moderation polarisierender Diskussionen hinweisen. Der Operator ILIKE wird für die Groß-/Kleinschreibung unempfindliche Mustererkennung in der Spalte raw der Tabelle posts verwendet.
Bitte beachten Sie, dass diese Abfrage davon ausgeht, dass die von Ihnen angegebenen Schlüsselwörter auf die gewünschten Beiträge hinweisen. Möglicherweise müssen Sie die Schlüsselwörter basierend auf Ihren spezifischen Kriterien anpassen oder erweitern.
Ich: Schreibe eine Abfrage, die eine Zählung der Beiträge zurückgibt, die seit September 2022 in jeder wöchentlichen Periode erstellt wurden, von Mitgliedern der community_moderators-Gruppe, die ein gewisses Interesse an der Moderation polarisierender Diskussionen zeigen.
ChatGPT 3.5: Um dies zu erreichen, können Sie die folgende PostgreSQL-Abfrage verwenden, um eine Zählung der Beiträge zurückzugeben, die seit September 2022 in jeder wöchentlichen Periode erstellt wurden, von Mitgliedern der Gruppe “community_moderators”, die ein Interesse an der Moderation polarisierender Diskussionen zeigen:
SELECT
DATE_TRUNC('week', p.created_at) AS week_start,
COUNT(p.id) AS post_count
FROM
posts p
JOIN
users u ON p.user_id = u.id
JOIN
group_users gu ON u.id = gu.user_id
JOIN
groups g ON gu.group_id = g.id
WHERE
g.name = 'community_moderators'
AND (p.raw ILIKE '%moderate%'
OR p.raw ILIKE '%polarizing%'
OR p.raw ILIKE '%political%'
OR p.raw ILIKE '%contentious%'
OR p.raw ILIKE '%debate%'
OR p.raw ILIKE '%controversial%'
OR p.raw ILIKE '%discussion%')
AND p.created_at >= '2022-09-01' -- Startdatum: September 2022
GROUP BY
week_start
ORDER BY
week_start;
Diese Abfrage berechnet die Anzahl der Beiträge, die von Mitgliedern der Gruppe “community_moderators” seit September 2022 in jeder wöchentlichen Periode mit den angegebenen Schlüsselwörtern erstellt wurden. Sie gruppiert die Ergebnisse nach Woche und ordnet sie chronologisch an. Bitte stellen Sie sicher, dass Sie die Spaltennamen und Tabellenbeziehungen entsprechend Ihrem tatsächlichen Datenbankschema anpassen.
Die Ergebnisse scheinen mir gut und repräsentieren die Arten von Abfragen, deren Erstellung mich in der Vergangenheit viel Zeit gekostet hat. Ich gehe davon aus, dass es möglich wäre, ein Modell auf der Discourse-Datenbankstruktur zu trainieren, so dass Details über die Struktur aus den Prompts weggelassen werden könnten.