SQL-Abfrage in natürlicher Sprache ausführen
Sendet einen Prompt in natürlicher Sprache und ein Datenbankschema an ein Modell, das eine SQL-Abfrage zurücksendet, um ein Ergebnis aus der Datenbank zu erhalten, das in seiner Antwort verwendet werden kann.
Optionen
-
Kontoname ist ein Textausdruck des KI-Kontos, das für diesen Scriptschritt verwendet werden soll. Verwenden Sie in der aktuellen Datei den Scriptschritt „KI-Konto konfigurieren“, um das Konto einzurichten und ihm diesen Namen zuzuweisen, bevor dieser Scriptschritt ausgeführt wird.
-
Modell ist der Name des zu verwendenden Textgenerierungsmodells. Geben Sie den Modellnamen als Textausdruck an. Unterstützte Modelle finden Sie unter FileMaker – Technische Daten.
-
Prompt ist ein Textausdruck für die Anfrage oder Frage in natürlicher Sprache, die an das Modell gesendet werden soll.
-
Angegebene Optionen bestimmt, wie die anderen Optionen für diesen Scriptschritt konfiguriert werden.
-
Aus Liste: Konfigurieren Sie die Optionen einzeln mithilfe der folgenden Einstellungen.
-
Nach JSON-Daten: Konfigurieren Sie die folgenden Optionen, indem Sie ein JSON-Objekt angeben. Diese Option ist nützlich, um Werte dynamisch festzulegen. Das JSON-Objekt muss Schlüssel-Wert-Paare enthalten, die den Optionen des Scriptschritts und deren Werten entsprechen. Schlüssel für die unterstützten Optionen sind:
-
aktion
: String-Wert, der der gewünschten Aktion entspricht:"abfrage"
,"nur abfrage von daten"
,"sql abrufen"
,"nur erste sql-abfrage abrufen"
,"ddl abrufen"
. -
datentabellen
: Ein JSON-Array von Strings, wobei jeder String der Name einer Tabelle ist, deren Schema enthalten sein soll. Zum Beispiel:["Kontakte", "Adressen"]
. -
stream
: String-Wert für die Option „Stream“ („ein“ oder „aus“).
Beispiel:
Kopieren{
"aktion" : "sql abrufen",
"datentabellen" : [ "Produkte", "Rechnungen" ],
"stream" : "aus"
} -
-
-
Aktion gibt die Art der Antwort an, die aus dem Modell abgerufen werden soll.
-
Abfrage: Gibt die endgültige Antwort des Modells auf den Benutzer-Prompt in natürlicher Sprache zurück.
-
Nur Abfrage von Daten: Gibt nur die Daten zurück, die von der letzten SQL-Abfrage des Modells abgerufen wurden, die von diesem Scriptschritt ausgeführt wurde.
-
SQL abrufen: Gibt alle SQL-Anweisungen zurück, die vom Modell während der gesamten Interaktion generiert wurden.
-
Nur erste SQL-Abfrage abrufen: Gibt nur die erste vom Modell generierte SQL-Anweisung zurück.
-
DDL abrufen: Gibt das Datenbankschema (in Data Definition Language) zurück, das dieser Scriptschritt generiert und an das Modell sendet.
-
-
Datentabellen gibt an, wie Sie das Schema der Datenbank für Tabellen im Modell angeben möchten. Es wird nur das Schema für die angegebenen Tabellen gesendet.
-
Aus Liste: Wählen Sie bestimmte Tabellen aus einer Liste aus.
-
Nach Name: Geben Sie eine Liste von Tabellennamen als Textausdruck an. Trennen Sie mehrere Tabellennamen durch Absatzende-Zeichen.
-
Nach DDL: Stellen Sie einen benutzerdefinierten DDL-Textausdruck bereit. Auf diese Weise können Sie genau steuern, welche Schema-Informationen an das Modell gesendet werden.
-
-
Tabellen ist die Option, in der Sie Tabellen auswählen, wenn Datentabellen auf Aus Liste gesetzt ist.
-
Stream bestimmt, wie die Antwort übermittelt wird, wenn die Aktion Abfrage ist.
-
Ein: Die Antwort wird schrittweise abgerufen und übermittelt (Wort für Wort oder in Blöcken). Dadurch reagiert der FileMaker-Client möglicherweise schneller.
-
Aus: Die gesamte Antwort wird abgerufen, bevor sie verfügbar gemacht wird. Dies kann dazu führen, dass der FileMaker-Client nicht mehr reagiert, während er auf die vollständige Antwort wartet.
-
-
Parameter ist ein Textausdruck für ein JSON-Objekt, das aus Schlüssel-Wert-Paaren für zusätzliche Parameter besteht, die vom Modellanbieter unterstützt werden. Beispiel:
{"Temperatur": 0.7, "seed": 42}
. Die Namen der Schlüssel für die unterstützten Parameter und deren gültige Bereiche finden Sie in der Dokumentation des Modellanbieters. -
Prompt-Vorlagenname gibt den Namen einer benutzerdefinierten Prompt-Vorlage an, die mit dem Scriptschritt Scriptschritt „Prompt-Vorlage konfigurieren“ konfiguriert wurde. Verwenden Sie diese Option, um einen zusätzlichen Prompt zu erstellen, der dabei hilft, eine optimale Antwort von einem KI-Modell zu erhalten.
-
Antwortziel gibt das Feld oder die Variable an, in der das Ergebnis des Scriptschritts gespeichert werden soll.
-
JavaScript in Web Viewer ausführen gibt den JavaScript-Code an, der in einem Ziel-Web Viewer nach Abschluss des Scriptschritts ausgeführt werden soll. Diese Option ähnelt der Ausführung des Scriptschritts Scriptschritt „JavaScript in Web Viewer ausführen“ als nächsten Scriptschritt, mit dem Unterschied, dass Antwortziel an die JavaScript-Funktion übergeben und die Antwort an den Web Viewer gestreamt werden kann, wenn die Option Stream auf Ein gesetzt ist.
-
Web Viewer gibt den Objektnamen eines Web Viewers im aktuellen Layout an.
-
Funktionsname ist der Name der JavaScript-Funktion, die im Web Viewer aufgerufen werden soll.
-
Kompatibilität
Produkt | Unterstützt |
FileMaker Pro | Ja |
FileMaker Go | Ja |
FileMaker WebDirect | Ja |
FileMaker Server | Partiell |
FileMaker Cloud | Partiell |
FileMaker Data API | Partiell |
Custom Web Publishing | Partiell |
Ursprung in Version
22.0
Beschreibung
Mit diesem Scriptschritt können Sie Ihre Datenbank mit natürlicher Sprache abfragen, anstatt SQL-Anweisungen zu schreiben. Er verwendet ein KI-Modell, um einen Prompt in natürlicher Sprache zu interpretieren, das Schema der Datenbank zu analysieren, geeignete SQL-Abfragen zu generieren und, nachdem dieser Scriptschritt die SQL-Abfragen ausgeführt hat, mit den Ergebnissen in natürlicher Sprache zu antworten. Keine Ihrer FileMaker-Daten müssen an das Modell gesendet werden.
Die Interaktion zwischen diesem Scriptschritt und dem Modell erfolgt in der Regel wie folgt:
-
Dieser Scriptschritt sendet den Prompt und das relevante Datenbankschema (DDL angegeben durch Datentabellen) an das konfigurierte KI-Modell. (Dies schließt Prompts ein, die in einer optionalen Prompt-Vorlage bereitgestellt werden.)
-
Das Modell analysiert den Prompt und das Schema und generiert eine oder mehrere SQL-Abfragen, die die angeforderten Informationen aus der Datenbank abrufen.
-
Dieser Scriptschritt empfängt die generierten SQL-Abfragen aus dem Modell und führt sie aus.
-
Dieser Scriptschritt sendet die Ergebnisse der SQL-Abfrageausführung zurück an das Modell.
-
Wenn das Modell feststellt, dass die Ergebnisse weiter verarbeitet oder verfeinert werden müssen, um den Prompt vollständig zu bearbeiten, kann es zusätzliche SQL-Abfragen generieren (Wiederholung der Schritte 2 bis 4). Dies ermöglicht komplexe Abfragen oder mehrstufige Datenabrufe.
-
Nachdem das Modell über ausreichende Informationen verfügt, generiert es eine endgültige Antwort auf der Grundlage des Prompts und der empfangenen SQL-Abfrageergebnisse.
-
Dieser Scriptschritt empfängt die endgültige Antwort und speichert sie im Antwortziel.
Die Option Aktion bestimmt, was in den verschiedenen Phasen dieses Prozesses an das Antwortziel zurückgegeben wird:
Aktion | Ergebnis |
---|---|
Abfrage |
Schließt den gesamten Workflow (Schritte 1-7) ab, einschließlich aller wiederholten SQL-Generierungs- und Ausführungsrunden. Das Antwortziel empfängt die endgültige Antwort des Modells in natürlicher Sprache, wobei die Daten aus der SQL-Abfrage in eine dialogorientierte Antwort integriert sein können. |
Nur Abfrage von Daten |
Führt die Schritte 1 bis 6 aus, stoppt jedoch vor Schritt 7. Das Antwortziel empfängt nur die Daten, die von der letzten Abfrage zurückgegeben wurden. |
Für Debugging: | |
SQL abrufen |
Führt die Schritte 1 bis 6 aus, stoppt jedoch vor Schritt 7. Das Antwortziel empfängt den Text aller SQL-Anweisungen, die vom Modell während der Interaktion generiert werden. |
Nur erste SQL-Abfrage abrufen |
Führt nur die Schritte 1 und 2 aus und stoppt. Das Antwortziel empfängt nur den Text der ersten vom Modell generierten SQL-Anweisung. Diese Option hilft, den Einsatz von Tokens während des Debuggings zu reduzieren. |
DDL abrufen |
Führt nur Schritt 1 aus (Generieren der DDL basierend auf der Option Datentabellen). Interagiert nicht mit dem Modell. Das Antwortziel empfängt den Text der generierten DDL. |
Die Debugging-Aktionen sind in erster Linie nützlich, um zu verstehen, wie der Scriptschritt mit dem Modell und Ihrem Datenbankschema interagiert, während Sie Ihr Script testen.
Hinweise
-
Wenn Sie einen Prompt-Vorlagennamen angeben, verwendet dieser Scriptschritt die Vorlage, die über den Scriptschritt Scriptschritt „Prompt-Vorlage konfigurieren“ konfiguriert wurde. Diese Vorlagen können Konstanten wie
:schema:
,:frage:
,:sql_abfrage:
und:sql_ergebnisse:
verwenden, die während der Ausführung dynamisch ersetzt werden. Die verfügbaren Konstanten hängen vom Vorlagentyp und der aktuellen Aktion ab. -
Die Feldkommentare, die Sie im Dialogfeld „Datenbank verwalten“ eingeben, werden in das an das Modell gesendete Schema aufgenommen. Um die Fähigkeit des Modells zum Generieren nützlicher SQL-Anweisungen zu verbessern, können Sie den Kommentar verwenden, um den Zweck des Felds zu erläutern (z. B. wenn ein Feld ein Fremdschlüssel ist, der einen Datensatz in einer Bezugstabelle identifiziert). Siehe Bewährte Methoden für Datenbankschemata bei der Generierung von DDL- und SQL-Abfragen.
-
Dieser Scriptschritt kann nicht feststellen, welche Runde der SQL-Generierung und -Ausführung die letzte ist, bis die endgültige Antwort in natürlicher Sprache vom Modell empfangen wird.
-
Während der Ausführung der Aktionen Abfrage oder Nur Abfrage von Daten empfängt und speichert dieser Scriptschritt alle vom Modell generierten SQL-Anweisungen und das Ergebnis der zuletzt ausgeführten SQL-Abfrage. Dies sind dieselben Ergebnisse, die von den Aktionen SQL abrufen und Nur Abfrage von Daten zurückgegeben werden.
-
Wenn dieser Scriptschritt ohne Fehler ausgeführt wird, aber keine relevanten Informationen gefunden werden, wird eine Mitteilung im Antwortziel zurückgegeben und die Funktion „Hole ( LetzteFehlerNr )“ gibt den Fehler 0 („Kein Fehler“) zurück.
-
In Scripts, die von FileMaker Server, FileMaker Cloud, FileMaker Data API, OData API und Custom Web Publishing ausgeführt werden, wird die Option JavaScript in Web Viewer ausführen nicht unterstützt.
Beispiel 1
Konfiguriert ein KI-Konto und verwendet dann den Scriptschritt „SQL-Abfrage in natürlicher Sprache ausführen“, um eine Frage zu Daten in der Tabelle „Kontakte“ zu stellen, die Daten in den Feldern „Name“ und „Firma“ enthält. Der Scriptschritt sendet das Schema für die Tabelle „Kontakte“ und den Prompt „Für welches Unternehmen arbeitet Alea?“ an das Modell. Das Modell generiert die erforderliche SQL-Abfrage, die von diesem Scriptschritt ausgeführt wird. Anschließend liefert das Modell eine Antwort in natürlicher Sprache, die im Feld „Antwort“ gespeichert wird.
KI-Konto konfigurieren [ Kontoname: "mein-konto" ; Modellanbieter: OpenAI ; API-Schlüssel: "sk-..." ]
SQL-Abfrage in natürlicher Sprache ausführen [ Kontoname: "mein-konto" ; Modell: "gpt-4o" ; Prompt: "Für welches Unternehmen arbeitet Alea?" ; Angegebene Optionen: Aus Liste ; Aktion: Abfrage ; Datentabellen: Aus Liste ; Tabellen... ; Stream ; Antwortziel: Kontakte::Antwort ]
Mögliche Antwort gespeichert im Feld „Kontakte::Antwort“:
Alea arbeitet für Acme Anvils, Inc.
Beispiel 2
Fragt den Benutzer in einem eigenen Dialogfeld nach einer Antwort – wobei die Standardschaltfläche „Abfrage“ lautet, Schaltfläche 2 „Nur Daten“ und Schaltfläche 3 „Abbrechen“ –, und die Frage wird in der Variablen $$BenutzerPrompt gespeichert. Dann wird die Variable $optionen so gesetzt, dass sie die Auswahl des Benutzers für die auszuführende aktion
widerspiegelt: abfrage
oder nur abfrage von daten
. Wenn der Benutzer eine Frage eingegeben und nicht auf „Abbrechen“ geklickt hat, wird der Scriptschritt „SQL-Abfrage in natürlicher Sprache ausführen“ ausgeführt, $$BenutzerPrompt und $optionen werden übergeben und die Ergebnisse aus dem Modell werden in $$AbfrageErgebnisDaten zurückgegeben, was in einem anderen eigenen Dialogfeld angezeigt wird. Abfragen sind auf die Tabellen „Kontakte“ und „Mitarbeiter“ beschränkt.
KI-Konto konfigurieren [ Kontoname: "mein-konto" ; Modellanbieter: OpenAI ; API-Schlüssel: "sk-..." ]
Eigenes Dialogfeld anzeigen [ "Datenbank fragen:" ; $$BenutzerPrompt ]
Variable setzen [ $Optionen ; Wert:
SetzeVar ( [
$wahl = Hole ( LetzteMeldungswahl ) ;
aktion_wahl = Falls (
$wahl = 1 ; "abfrage" ;
$wahl = 2 ; "nur abfrage von daten"
)
] ;
JSONSetElement (
"";
[ "aktion" ; aktion_wahl ; JSONString ] ;
[ "datentabellen" ; JSONMakeArray (
"Kontakte¶Mitarbeiter" ;
"¶" ;
JSONString
) ;
JSONArray ] ;
[ "stream" ; "aus" ; JSONString ]
)
)
]
Wenn [ nicht IstLeer ( $$BenutzerPrompt ) and $wahl ≠ 3 ]
SQL-Abfrage in natürlicher Sprache ausführen [ Kontoname: "mein-konto" ; Modell: "gpt-4o" ; Prompt: $$BenutzerPrompt ; Angegebene Optionen: Nach JSON-Daten ; Antwortziel: $$AbfrageErgebnisDaten ]
Eigenes Dialogfeld anzeigen [ "Datenergebnis:" ; $$AbfrageErgebnisDaten ]
Ende (wenn)
Mögliche Antwort gespeichert in $$AbfrageErgebnisDaten, vorausgesetzt, der Prompt lautete „Für welches Unternehmen arbeitet Alea?“ und der Benutzer klickte auf die Schaltfläche „Nur Daten“:
Acme Anvils, Inc.
Beispiel 3
Demonstriert die Verwendung der Aktionen SQL abrufen und DDL abrufen zum Debuggen. Das Script ruft zunächst die für die Tabellen „Produkte“ und „Bestellungen“ generierte DDL ab, ruft dann alle vom Modell für einen bestimmten Prompt generierten SQL-Anweisungen ab und speichert diese zur Überprüfung in separaten Variablen.
SQL-Abfrage in natürlicher Sprache ausführen [ Kontoname: "mein-konto" ; Modell: "gpt-4o" ; Prompt: " " ; Angegebene Optionen: Aus Liste ; Aktion: DDL abrufen ; Datentabellen: Nach Name ; "Produkte¶Bestellungen" ; Antwortziel: $$ProdukteBestellungenDDL ]
SQL-Abfrage in natürlicher Sprache ausführen [ Kontoname: "mein-konto" ; Modell: "gpt-4o" ; Prompt: "Gesamtwert der Bestellungen für Produkt-ID 101 suchen" ; Angegebene Optionen: Aus Liste ; Aktion: SQL abrufen ; Datentabellen: Nach Name ; "Produkte¶Bestellungen" ; Antwortziel: $$GenerierteSQL ]
Eigenes Dialogfeld anzeigen [ "Debugging-Informationen" ; "Generierte DDL:" & ¶ & $$ProdukteBestellungenDDL & ¶ & ¶ & "Generierte SQL:" & ¶ & $$GenerierteSQL ]
Mögliche DDL gespeichert in $$ProdukteBestellungenDDL:
CREATE TABLE "Produkte" (
"ProduktID" int, /*Primärschlüssel, der ein Produkt eindeutig identifiziert*/
"ProduktName" varchar(255), /*Beschreibender Name des Produkts*/
"Preis" int, /*Preis des Produkts in USD*/
PRIMARY KEY (ProduktID)
);
CREATE TABLE "Bestellungen" (
"BestellID" int, /*Primärschlüssel, der eine Bestellung eindeutig identifiziert*/
"ProduktID" int, /*Fremdschlüssel für eine n:1-Beziehung mit der Tabelle Produkte*/
"Menge" int, /*Menge des Produkts in der Bestellung*/
PRIMARY KEY (BestellID),
FOREIGN KEY (ProduktID) REFERENCES Produkte(ProduktID)
);
Mögliche SQL-Anweisung gespeichert in $$GenerierteSQL:
SELECT SUM("Menge" * "Preis") AS "GesamtWert" FROM "Bestellungen" JOIN "Produkte" ON "Bestellungen"."ProduktID" = "Produkte"."ProduktID" WHERE "Bestellungen"."ProduktID" = 101