Discourse AI + Data Explorer?

Ich habe beschlossen, dass ich heute eine besondere Abfrage wollte. Da ich meine Ingenieure nicht (zu sehr) belästigen wollte, habe ich beschlossen, ChatGPT zu bitten, mir eine Datenexplorationsabfrage zu schreiben, basierend auf dem, was ich wusste, und dem, was ich wusste, dass ich wollte. Ich war ziemlich überwältigt, dass es alles richtig gemacht hat (abgesehen davon, dass es ein Semikolon am Ende hinzugefügt hat, das es nicht hätte tun sollen).

Hier ist die Abfrage, die es für mich erstellt hat, als ich ihm einige Parameter gab und es bat, mir eine Abfrage zu erstellen, die mir eine laufende Gesamtzahl aller Benutzer nach Monat liefert:

SELECT 
    timeframe "Monat, Jahr",
    user_count as "In diesem Monat beigetretene Benutzer",
    SUM(user_count) OVER (ORDER BY TO_DATE(timeframe, 'Month, YYYY'))::integer as "Benutzer (laufende Summe)"
FROM (
    SELECT 
        TO_CHAR(u.created_at, 'Month, YYYY') as "timeframe",
        count(u.id) as "user_count"
    FROM 
        users u
    GROUP BY 
        timeframe
    ORDER BY
        timeframe
) subquery
ORDER BY 
    TO_DATE(timeframe, 'Month, YYYY')

Gab es Überlegungen zur Integration von KI in den Bereich des Datenexplorers? :slight_smile:

12 „Gefällt mir“

Ein Beitrag wurde in ein neues Thema aufgeteilt: Könnten wir das Thema wieder öffnen, um Explorer-Abfragen zu teilen?

Möchten Sie die Eingabeaufforderung, die Version von ChatGPT und das in ChatGPT verwendete Modell mitteilen? :slightly_smiling_face:

Zum Beispiel


ChatGPT August 3 Version
Modell: GPT-3.5
Eingabeaufforderung

Was ist Discourse Data Explorer?

Abschluss

Bis zu meinem letzten Update im September 2021 gibt es kein bestimmtes Tool oder Produkt namens „Discourse Data Explorer“, das mir bekannt ist. Ich kann jedoch eine allgemeine Erklärung auf der Grundlage der bis zu diesem Zeitpunkt verfügbaren Informationen geben.

Discourse ist eine Open-Source-Software für moderne Foren, die es Online-Communities ermöglicht, Diskussionen und Interaktionen zu führen. Sie wird häufig für die Ausrichtung von Diskussionen, Frage-und-Antwort-Foren und Support-Communities verwendet. Discourse bietet eine Fülle von Funktionen zur Verwaltung von Diskussionen, Benutzerinteraktionen und Moderation.

Ein „Data Explorer“ bezeichnet typischerweise ein Tool oder eine Funktion, mit der Benutzer Daten innerhalb eines Systems oder einer Plattform abfragen und untersuchen können. Es wird oft im Kontext von Datenbanken oder Datenanalysetools verwendet.

Angesichts der beiden Komponenten könnte „Discourse Data Explorer“ potenziell ein hypothetisches Tool oder Plugin sein, das es Benutzern ermöglicht, Daten innerhalb eines Discourse-Forums zu untersuchen und abzufragen. Dies könnte für Community-Administratoren oder Datenanalysten hilfreich sein, die Einblicke in Benutzerverhalten, Inhaltstrends oder andere Metriken im Zusammenhang mit den Diskussionen im Forum gewinnen möchten.

Es ist wichtig zu beachten, dass meine Informationen veraltet sein können und nach meinem letzten Update neue Entwicklungen stattgefunden haben könnten. Wenn „Discourse Data Explorer“ tatsächlich ein reales Produkt oder eine Funktion ist, empfehle ich, nach den neuesten Informationen zu suchen, um genaue Details zu seinen Funktionen und seiner Verwendung zu erhalten.


Der Grund für die Frage ist, dass Sie eine ausgezeichnete Idee haben und es schön war, sie geteilt zu sehen, aber in Zukunft könnten andere versuchen, eine andere Eingabeaufforderung zu stellen, und das Teilen der Eingabeaufforderung, des Abschlusses und der Details von ChatGPT ist erforderlich, wenn Hilfe benötigt wird, um Probleme zu verstehen.

Hinweis: Ich bin ein Kategorie-Moderator im OpenAI Discourse-Forum und habe daher viel Erfahrung mit denen, die Hilfe bei ChatGPT-Eingabeaufforderungen suchen. (ref)


Die Version von ChatGPT finden Sie unten rechts, dort wo eine Eingabeaufforderung eingegeben wird

Das Modell finden Sie oben auf der Seite in der Mitte

image

1 „Gefällt mir“

Ich…mag diesen Bot nicht.

1 „Gefällt mir“

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.

4 „Gefällt mir“

Oh, das ist großartig, ich hatte gemischte Ergebnisse mit den SQL-Abfragen des ChatGPT-Datenexplorers, aber auf diese Weise macht es so viel Sinn. Ich habe nicht einmal daran gedacht, die Tabellenstruktur anzugeben und nach PostgreSQL-Abfragen zu fragen. :woman_facepalming:t2: Danke für den Tipp @simon :slight_smile:

1 „Gefällt mir“

Gibt es irgendwo ein vollständiges Schema der Discourse-Datenbank(en)?

1 „Gefällt mir“

Hallo @so-jordan-violet, ich benutze einfach das ausklappbare Tabellen-Tool (ich weiß nicht, wie es heißt! lol) auf der rechten Seite in der Abfrage-Bearbeitungsoberfläche des Daten-Explorers:

2 „Gefällt mir“

Wenn wir ein textbasiertes Dokument erhalten könnten (insbesondere im SQL CREATE TABLE-Format), könnten wir dieses als Anweisungen bereitstellen und wahrscheinlich ziemlich zuverlässige Ergebnisse erzielen.

1 „Gefällt mir“

Ja, wir haben diesen Punkt seit Anfang des Jahres auf der Agenda des KI-Teams. Die Idee ist, das gesamte (oder den wichtigen Teil) des Discourse-Schemas in den Prompt aufzunehmen, damit dieser beliebige Abfragen erstellen kann.

Wir haben GitHub - discourse/data-explorer-examples: Examples for Discourse Data Explorer erstellt, um dem Modell Beispiele zu liefern, damit es besser fundiert ist.

7 „Gefällt mir“

Ich wünschte, ich hätte mehr Zeit, die Codebasis zu durchforsten, aber haben Sie die SQL-Schemas für die Crest-Tabelle irgendwo (öffentlich) gespeichert?

Ich arbeite gerade an LLM-Projekten für mein eigenes Produkt/Unternehmen und würde gerne damit experimentieren.

1 „Gefällt mir“

Oh, das ist großartig. Danke für den Link, Falco! :slight_smile:

3 „Gefällt mir“

Ich generiere das direkt aus dem Schema

Etwas wie das hier sollte dir den Einstieg erleichtern:


Ich habe alle möglichen Ansätze erforscht, um das zum Laufen zu bringen. Ein Problem ist jedoch, dass GPT 3.5 einfach so gut steuerbar ist, dass es verwirrt wird.

Ihm ein Schema zu geben hilft sicherlich, aber ich stelle fest, dass ich bei Beispielen extrem strategisch vorgehen muss.

Allein die Erzählung einer Geschichte darüber, “wie man archivierte Themen für einen Benutzer zählt”, lenkt eine Abfrage wie “wie viele Beiträge hatte ein Benutzer” in Richtung archivierter Themen.

Ich dachte:

graph TD
A[Allgemeine hilfreiche Informationen hinzufügen] --> B[Embeddings für die Frage generieren]
B --> C[Ähnlichkeitssuche über Beispiele durchführen]
C --> D[3 Beispiele zum Prompt hinzufügen]
D --> E[Schema zum Prompt hinzufügen]
E --> F[Frage stellen]
F --> G[SQL erhalten]

Aber es stellt sich heraus, dass die Dinge schlecht werden, es sei denn, die Beispiele sind spektakulär und du nimmst keine Gegenbeispiele auf…

Ich fange an zu denken, dass das Beste, was wir im Moment haben, darin besteht, ihm einfach das Schema und eine Einleitung zu geben. Vielleicht noch einen Schritt am Ende für die Abfragevalidierung und Wiederholung hinzufügen.

5 „Gefällt mir“

Hätten Sie ein vollständiges Schema, das Datentypen zeigt?

Bin mir nicht sicher, ob es ins Token-Budget passt, ich werde es versuchen

With ChatCPT 3.5 I’m getting unexpected results when I provide the full schema. For example, it keeps trying to find the topic author in the topic_users table.

I get successful results by limiting the information in the prompt to the tables and columns that are required to write the query. Also by adding some additional information about how the columns are used. For example:

# Table name: user_actions
#
#  id              :integer          not null, primary key
#  action_type     :integer          not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
#  user_id         :integer          not null (the user who is to be credited with the action)
#  target_topic_id :integer
#  acting_user_id  :integer (the user who performed the action, for example, a staff user can perform an action on behalf of a regular user)
#  created_at      :datetime         not null

Another way to look at getting this to work with the Data Explorer plugin would be to have users fill out a dynamically generate form that lists the data they are looking for, and what conditions they want to apply to the data. The prompt could be generated programmatically by Discourse, then sent to the LLM to have the query written.

Edit: @jordan-violet, this might be a useful starting point. Here’s an annotated partial schema that’s working for me. It works well as long as I limit my queries so that they can be answered by the provided schema. I’ve added additional details to the schema to clarify details that seem to confuse ChatGPT. The obvious downside of this approach is that a fully annotated schema will exceed ChatGPT 3.5’s token limit. I’ve included some information in the schema that could be omitted to reduce the number of tokens that are used.

Summary
# == Schema Information
#
# Table name: application_requests
#
#  id       :integer          not null, primary key
#  date     :date             not null
#  req_type :integer          not null ("http_total"=>0,"http_2xx"=>1,"http_background"=>2,"http_3xx"=>3,"http_4xx"=>4,"http_5xx"=>5,"page_view_crawler"=>6,"page_view_logged_in"=>7,"page_view_anon"=>8,"page_view_logged_in_mobile"=>9,"page_view_anon_mobile"=>10,"api"=>11,"user_api"=>12)
#  count    :integer          default(0), not null
#
# Table name: users
#
#  id                        :integer          not null, primary key
#  username                  :string(60)       not null
#  created_at                :datetime         not null
#  updated_at                :datetime         not null
#  name                      :string           (the user's real name)
#  last_posted_at            :datetime
#  active                    :boolean          default(FALSE), not null
#  username_lower            :string(60)       not null
#  last_seen_at              :datetime
#  admin                     :boolean          default(FALSE), not null
#  trust_level               :integer          not null
#  approved                  :boolean          default(FALSE), not null
#  approved_by_id            :integer
#  approved_at               :datetime
#  previous_visit_at         :datetime
#  suspended_at              :datetime
#  suspended_till            :datetime
#  date_of_birth             :date
#  ip_address                :inet
#  moderator                 :boolean          default(FALSE)
#  title                     :string
#  locale                    :string(10)
#  primary_group_id          :integer
#  registration_ip_address   :inet
#  staged                    :boolean          default(FALSE), not null
#  first_seen_at             :datetime
#  silenced_till             :datetime
#
# Table name: topics
#
#  id                        :integer          not null, primary key
#  title                     :string           not null
#  last_posted_at            :datetime
#  created_at                :datetime         not null
#  updated_at                :datetime         not null
#  views                     :integer          default(0), not null
#  posts_count               :integer          default(0), not null
#  user_id                   :integer          (the id of the user who created the topic)
#  last_post_user_id         :integer          not null (the id of the user who created the last post in the topic)
#  reply_count               :integer          default(0), not null
#  deleted_at                :datetime
#  highest_post_number       :integer          default(0), not null
#  like_count                :integer          default(0), not null
#  category_id               :integer
#  visible                   :boolean          default(TRUE), not null
#  moderator_posts_count     :integer          default(0), not null
#  closed                    :boolean          default(FALSE), not null
#  archived                  :boolean          default(FALSE), not null
#  bumped_at                 :datetime         not null
#  archetype                 :string           default("regular"), not null (can be set to either "regular" or "private_message")
#  slug                      :string
#  deleted_by_id             :integer          (the id of the user who deleted the topic)
#  participant_count         :integer          default(1)
#  word_count                :integer
#  excerpt                   :string
#  highest_staff_post_number :integer          default(0), not null
#
# Table name: posts
#
#  id                      :integer          not null, primary key
#  user_id                 :integer          (the id of the user who created the post)
#  topic_id                :integer          not null
#  post_number             :integer          not null (indicates the post's order in its topic)
#  raw                     :text             not null (the post's content)
#  created_at              :datetime         not null
#  updated_at              :datetime         not null
#  reply_to_post_number    :integer          (the post_number that the post is a reply to)
#  reply_count             :integer          default(0), not null
#  deleted_at              :datetime
#  like_count              :integer          default(0), not null
#  bookmark_count          :integer          default(0), not null
#  reads                   :integer          default(0), not null (the number of times the post has been read)
#  post_type               :integer          default(1), not null (:regular=>1, :moderator_action=>2, :small_action=>3, :whisper=>4)
#  last_editor_id          :integer          (the id of the user who last edited the post)
#  hidden                  :boolean          default(FALSE), not null
#  hidden_reason_id        :integer          (:flag_threshold_reached=>1,:flag_threshold_reached_again=>2,:new_user_spam_threshold_reached=>3,:flagged_by_tl3_user=>4,:email_spam_header_found=>5,:flagged_by_tl4_user=>6,:email_authentication_result_header=>7,:imported_as_unlisted=>8)
#  edit_reason             :string
#  word_count              :integer
#  wiki                    :boolean          default(FALSE), not null
#
# Table name: categories
#
#  id                                        :integer          not null, primary key
#  name                                      :string(50)       not null
#  topic_id                                  :integer          (the id of the topic that is used for the category's description)
#  topic_count                               :integer          default(0), not null
#  created_at                                :datetime         not null
#  updated_at                                :datetime         not null
#  user_id                                   :integer          not null (the id of the user who created the topic)
#  topics_year                               :integer          default(0)
#  topics_month                              :integer          default(0)
#  topics_week                               :integer          default(0)
#  slug                                      :string           not null
#  description                               :text
#  text_color                                :string(6)        default("FFFFFF"), not null
#  read_restricted                           :boolean          default(FALSE), not null
#  auto_close_hours                          :float
#  post_count                                :integer          default(0), not null
#  latest_post_id                            :integer
#  latest_topic_id                           :integer
#  position                                  :integer
#  parent_category_id                        :integer
#  posts_year                                :integer          default(0)
#  posts_month                               :integer          default(0)
#  posts_week                                :integer          default(0)
#  topics_day                                :integer          default(0)
#  posts_day                                 :integer          default(0)
#
# Table name: groups
#
#  id                                 :integer          not null, primary key
#  name                               :string           not null
#  created_at                         :datetime         not null
#  automatic                          :boolean          default(FALSE), not null
#  user_count                         :integer          default(0), not null
#  title                              :string
#  bio_raw                            :text             (the group's description)
#  allow_membership_requests          :boolean          default(FALSE), not null
#  full_name                          :string
#  visibility_level                   :integer          default(0), not null (who can see the group :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  messageable_level                  :integer          default(0) (who can message the group :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  mentionable_level                  :integer          default(0) (who can mention the group :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  members_visibility_level           :integer          default(0), not null (who see the group's members :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#
# Table name: group_users
#
#  id                 :integer          not null, primary key
#  group_id           :integer          not null
#  user_id            :integer          not null
#  created_at         :datetime         not null
#
# Table name: user_actions
#
#  id              :integer          not null, primary key
#  action_type     :integer          not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
#  user_id         :integer          not null (the user who is to be credited with the action)
#  target_topic_id :integer
#  target_post_id  :integer
#  target_user_id  :integer          (for example, the id of the user whose post was liked)
#  acting_user_id  :integer          (the user who performed the action, for example, a staff user can perform an action on behalf of a regular user)
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#
# Table name: topic_views
#
#  topic_id   :integer          not null
#  viewed_at  :date             not null
#  user_id    :integer         (will be set if the topic was viewed by a logged in user)
#  ip_address :inet            (will be set if the topic was viewed by an anonymous user)
#
# Table name: user_visits
#
#  id         :integer          not null, primary key
#  user_id    :integer          not null
#  visited_at :date             not null
#  posts_read :integer          default(0)
#  mobile     :boolean          default(FALSE) (will be set to TRUE if the user visited on a mobile device)
#  time_read  :integer          default(0), not null (the value returned is the number of seconds of the visit)

Here’s a link to a chat session where I tried it out: https://chat.openai.com/share/d108c104-3aa3-45d9-9161-6da21d5b3a77

If you want to try expanding on this list, the easiest way to do it is to copy the schema from the bottom of the model you’re interested in, directly from the Discourse code: discourse/app/models at main · discourse/discourse · GitHub.

3 „Gefällt mir“

Es wäre großartig, genau das zu bekommen, aber eine umfassende Liste jeder Tabelle. Woher hast du das?

EDIT: Ah, ich sehe deinen Link unten, Entschuldigung. Ich werde wahrscheinlich keine Zeit haben, sie alle zusammenzufügen. Ich hatte gehofft, es gäbe ein Master-SQL-Schema irgendwo :confused:

Das Problem ist, dass die Bereitstellung des Schemas allein nicht ausreicht, um ChatGPT Informationen zu geben. Sie müssen ihm Details zu Dingen wie Folgendem zur Verfügung stellen:

  • wofür die Integer-Codes von req_type in application_requests stehen
  • wofür die Spalte user_id in topics verwendet wird
  • wofür die Codes von action_type in der Tabelle user_actions stehen und was der Unterschied zwischen den Spalten user_id, target_user_id und acting_user_id dieser Tabelle ist

Mit diesen Details scheint GPT 3.5 ohne zusätzliches Training gute Arbeit zu leisten. Das Problem ist dann, dass die Bereitstellung dieser Detailtiefe über die gesamte Datenbank dazu führt, dass die Eingabeaufforderung das Token-Limit von ChatGPT (4096 Tokens, einschließlich des Eingabeaufforderungstexts und der generierten Ausgabe) überschreitet. Wenn dieser Ansatz verwendet würde, müsste es eine Möglichkeit geben, die in die Eingabeaufforderung aufgenommenen Informationen basierend auf den Informationen zu begrenzen, die der Benutzer aus der Data Explorer-Abfrage erhalten wollte.

1 „Gefällt mir“

Das war überhaupt nicht meine Erfahrung. Ich hatte heute Abend eine ziemlich angenehme Erfahrung damit. Ich werde später einige Ergebnisse teilen.

Es gibt mir das Gefühl einer kompetenten, aber sehr einsteigerfreundlichen/juniorigen Rolle. Es kommt den Dingen nahe, ich sage ihm, was er falsch gemacht hat, und er korrigiert es. Wiederholen.

Ich genieße es wirklich, was es mir liefert, und die Zeit, die es mir heute Abend spart, basierend auf meiner Nutzung.

1 „Gefällt mir“

GPT 3.5 erledigt 16k heute problemlos

Die Probleme treten auf, wenn die Anfragen kompliziert werden, Randfälle berücksichtigt werden und so weiter

1 „Gefällt mir“