Esegui ricerca SQL per linguaggio naturale
Invia un prompt in linguaggio naturale e lo schema del database a un modello, il quale restituisce una query SQL per ottenere un risultato dal database da utilizzare nella risposta.
Vedere anche
Opzioni
-
Nome account è un'espressione di testo dell'account AI per questa istruzione di script da utilizzare. Nel file corrente, utilizzare l'istruzione di script Configura account AI per configurare l'account e assegnargli questo nome in qualsiasi momento prima che questa istruzione di script venga eseguita.
-
Modello è il nome del modello di generazione di testo da utilizzare. Specificare il nome del modello come espressione di testo. Per i modelli supportati, vedere le Specifiche tecniche di FileMaker.
-
Prompt è un'espressione di testo per la richiesta o la domanda in linguaggio naturale da inviare al modello.
-
Opzioni specificate determina come sono configurate le altre opzioni per questa istruzione di script.
-
Da elenco: configurare le opzioni individualmente utilizzando le impostazioni seguenti.
-
Per dati JSON: configurare le seguenti opzioni fornendo un oggetto JSON. Questa opzione è utile per impostare i valori dinamicamente. L'oggetto JSON deve contenere coppie chiave-valore corrispondenti alle opzioni delle istruzioni di script e ai loro valori. Le chiavi per le opzioni supportate sono:
-
azione
: valore stringa corrispondente all'Azione desiderata:"query"
,"query per solo dati"
,"get sql"
,"get solo prima sql"
,"get ddl"
. -
tabelle dati
: un array JSON di stringhe, in cui ogni stringa è il nome di una tabella il cui schema dovrebbe essere incluso. Ad esempio:["Contatti", "Indirizzi"]
. -
flusso
: valore della stringa per l'opzione Flusso ("attivato" o "disattivato").
Ad esempio:
Copia{
"azione" : "get sql",
"tabelle dati" : [ "Prodotti", "Fatture" ],
"flusso" : "disattivato"
} -
-
-
Azione: specifica il tipo di risposta da recuperare dal modello.
-
Query: restituisce la risposta finale del modello al prompt dell'utente in linguaggio naturale.
-
Query per solo dati: restituisce solo i dati recuperati dall'ultima query SQL del modello eseguita da questa istruzione di script.
-
Get SQL: restituisce tutte le istruzioni SQL generate dal modello durante l'intera interazione.
-
Get solo prima SQL: restituisce solo la prima istruzione SQL generata dal modello.
-
Get DDL: restituisce lo schema del database (in Data Definition Language) che questa istruzione di script genera e invia al modello.
-
-
Tabelle dati: indica come si desidera specificare al modello lo schema del database per le tabelle. Viene inviato solo lo schema per le tabelle specificate.
-
Da elenco: seleziona tabelle specifiche da un elenco.
-
Per nome: fornire un elenco di nomi di tabelle come espressione di testo. Separare più nomi di tabella con ritorni a capo.
-
Per DDL: fornire un'espressione di testo DDL personalizzata. Ciò consente di controllare esattamente quali informazioni dello schema vengono inviate al modello.
-
-
Tabelle è dove si selezionano le tabelle quando Tabelle dati è Da elenco.
-
Flusso determina come viene fornita la risposta quando l'Azione è Query.
-
Attivato: la risposta viene recuperata e consegnata in modo incrementale (parola per parola o in blocchi). Questo può far sì che il client FileMaker si senta più reattivo.
-
Disattivato: viene recuperata l'intera risposta prima di essere resa disponibile. Ciò potrebbe far sembrare il client FileMaker non reattivo in attesa della risposta completa.
-
-
Parametri è un'espressione di testo per un oggetto JSON costituita da coppie chiave-valore per parametri aggiuntivi supportati dal fornitore del modello. Ad esempio:
{"temperature": 0.7, "seed": 42}
. Fare riferimento alla documentazione del fornitore del modello per i nomi delle chiavi dei parametri supportati e i relativi intervalli validi. -
Nome modello prompt specifica il nome di un modello di prompt personalizzato configurato utilizzando l'istruzione di script Configura modello di prompt. Utilizzare questa opzione per progettare un prompt aggiuntivo per aiutare a ottenere una risposta ottimale da un modello di AI.
-
Destinazione risposta specifica il campo o la variabile in cui deve essere memorizzato il risultato dell'istruzione di script.
-
Esegui JavaScript in visualizzatore Web specifica il codice JavaScript da eseguire in un Visualizzatore Web di destinazione dopo il completamento dell'istruzione di script. Questa opzione è simile ad eseguire l'istruzione di script istruzione di script Esegui JavaScript in visualizzatore Web come istruzione di script successiva, tranne che Destinazione risposta può essere passato alla funzione JavaScript e la risposta trasmessa attraverso un un flusso al visualizzatore Web quando l'opzione Flusso è su Attivato.
-
Visualizzatore Web specifica il nome dell'oggetto di un visualizzatore Web sul formato corrente.
-
Nome funzione è il nome della funzione JavaScript da richiamare nel visualizzatore Web.
-
Compatibilità
Prodotto | Supportata |
FileMaker Pro | Sì |
FileMaker Go | Sì |
FileMaker WebDirect | Sì |
FileMaker Server | In parte |
FileMaker Cloud | In parte |
FileMaker Data API | In parte |
Pubblicazione Web personalizzata | In parte |
Creata nella versione
22.0
Descrizione
Questa istruzione di script consente di interrogare il database utilizzando il linguaggio naturale anziché scrivere direttamente le istruzioni SQL. Utilizza un modello di AI per interpretare un prompt in linguaggio naturale, analizzare lo schema del database, generare query SQL appropriate, quindi dopo che questa istruzione di script esegue le query SQL, il modello può rispondere in linguaggio naturale con i risultati. Nessuno dei propri dati FileMaker deve essere inviato al modello.
L'interazione tra questa istruzione di script e il modello in genere segue questi passaggi:
-
Questa istruzione di script invia il Prompt e lo schema del database pertinente (DDL specificato da Tabelle dati) al Modello AI configurato (questo include i prompt forniti in un modello di prompt opzionale).
-
Il modello analizza il prompt e lo schema e genera una o più query SQL progettate per recuperare le informazioni richieste dal database.
-
Questa istruzione di script riceve le query SQL generate dal modello e le esegue.
-
Questa istruzione di script invia i risultati dell'esecuzione della query SQL al modello.
-
Se il modello determina che i risultati richiedono ulteriore elaborazione o perfezionamento per soddisfare completamente il prompt, può generare ulteriori query SQL (ripetendo i passaggi 2-4). Questo consente query complesse o il recupero dei dati in più fasi.
-
Una volta che il modello ha informazioni sufficienti, genera una risposta finale in base al prompt e ai risultati della query SQL che ha ricevuto.
-
Questa istruzione di script riceve la risposta finale e la memorizza in Destinazione risposta.
L'opzione Azione determina che cosa viene restituito a Destinazione risposta nelle diverse fasi di questo processo:
Azione | Operazione eseguita |
---|---|
Query |
Completa l'intero flusso di lavoro (passaggi 1-7), inclusi eventuali cicli di generazione ed esecuzione SQL ripetuti. Destinazione risposta riceve la risposta finale del modello in linguaggio naturale, che può includere i dati della query SQL integrata in una risposta conversazionale. |
Query per solo dati |
Esegue i passaggi 1-6, ma si ferma prima del passaggio 7. Destinazione risposta riceve solo i dati restituiti dall'ultima query. |
Per il debug: | |
Get SQL |
Esegue i passaggi 1-6, ma si ferma prima del passaggio 7. Destinazione risposta riceve il testo di tutte le istruzioni SQL generate dal modello durante l'interazione. |
Get solo prima SQL |
Esegue solo i passaggi 1-2 e si ferma. Destinazione risposta riceve il testo solo della prima istruzione SQL generata dal modello. Questa opzione contribuisce a ridurre l'utilizzo dei token durante il debug. |
Get DDL |
Esegue solo il passaggio 1 (generando il DDL in base all'opzione Tabelle dati). Non interagisce con il modello. Destinazione risposta riceve il testo del DDL generato. |
Le azioni di debug sono utili soprattutto per capire come l'istruzione di script interagisce con il modello e lo schema del database quando si testa lo script.
Note
-
Se si specifica un Nome modello prompt, questa istruzione di script utilizza il modello configurato tramite l'istruzione di script Configura modello di prompt. Questi modelli possono utilizzare costanti come
:schema:
,:question:
,:sql_query:
e:sql_results:
che vengono sostituiti dinamicamente durante l'esecuzione. Le costanti disponibili dipendono dal tipo di modello e dall'Azione attuale. -
I commenti dei campi inseriti nella finestra di dialogo Gestisci database sono inclusi nello schema del database inviato al modello. Per migliorare la capacità del modello di generare istruzioni SQL utili, è possibile utilizzare il commento per spiegare lo scopo del campo (ad esempio, quando un campo è una chiave esterna che identifica un record nella tabella correlata). Vedere Migliori metodologie operative per lo schema del database nella generazione di query DDL ed SQL.
-
Questa istruzione di script non può determinare quale sia l'ultimo ciclo di generazione ed esecuzione SQL fino a quando la risposta finale in linguaggio naturale non viene ricevuta dal modello.
-
Durante l'esecuzione delle azioni Query o Query per solo dati, questa istruzione di script riceve e memorizza tutte le istruzioni SQL generate dal modello e il risultato dell'ultima query SQL eseguita. Questi sono gli stessi risultati restituiti rispettivamente dalle azioni Get SQL e Query per solo dati.
-
Quando questa istruzione di script viene eseguita senza errori ma non vengono trovate informazioni rilevanti, viene restituito un messaggio in Destinazione risposta e la funzione funzione Get ( UltimoErrore ) restituisce l'errore 0 ("Nessun errore").
-
Negli script eseguiti da FileMaker Server, FileMaker Cloud, FileMaker Data API, OData API e Pubblicazione Web personalizzata, l'opzione Esegui JavaScript in visualizzatore Web non è supportata.
Esempio 1
Configura un account AI, quindi utilizza l'istruzione di script Esegui ricerca SQL per linguaggio naturale per porre una domanda sui dati nella tabella Contatti, che contiene dati nei campi Nome e Azienda. L'istruzione di script invia lo schema per la tabella Contatti e il prompt "Per quale azienda lavora Alea?" al modello. Il modello genera la query SQL necessaria e questa istruzione di script la esegue, quindi il modello fornisce una risposta in linguaggio naturale memorizzata nel campo Risposta.
Configura account AI [ Nome account: "my-account" ; Fornitore modello: OpenAI ; Chiave API: "sk-..." ]
Esegui ricerca SQL per linguaggio naturale [ Nome account: "my-account" ; Modello: "gpt-4o" ; Prompt: "Per quale azienda lavora Alea?" ; Opzioni specificate: Da elenco ; Azione: Query ; Tabelle dati: Da elenco ; Tabelle... ; Flusso ; Destinazione risposta: Contatti::Risposta ]
Possibile risposta memorizzata nel campo Contatti::Risposta:
Alea lavora per Acme Anvils, Inc.
Esempio 2
Pone all'utente una domanda in una finestra di dialogo personalizzata, dove il pulsante predefinito è "Query", il pulsante 2 è "Solo dati" e il pulsante 3 è "Annulla" e la domanda viene memorizzata nella variabile $$PromptUtente. Quindi imposta la variabile $opzioni in modo da riflettere la scelta dell'utente per l'azione
da eseguire: query
o query per solo dati
. Se l'utente ha inserito una domanda e non ha fatto clic su Annulla, esegue l'istruzione di script Esegui ricerca SQL per linguaggio naturale, trasferisce $$PromptUtente e $opzioni, quindi restituisce i risultati del modello in $$DatiRisultatoQuery, che viene visualizzato in un'altra finestra di dialogo personalizzata. Le query sono limitate alle tabelle Contatti e Dipendenti.
Configura account AI [ Nome account: "my-account" ; Provider modello: OpenAI ; Chiave API: "sk-..." ]
Mostra finestra personalizz. [ "Chiedi al database:" ; $$PromptUtente ]
Imposta variabile [ $opzioni ; Valore:
Dichiara ( [
$scelta = Get ( SceltaUltimoMessaggio ) ;
scelta_azione = Casi (
$scelta = 1 ; "query" ;
$scelta = 2 ; "query per solo dati"
)
] ;
JSONSetElement (
"";
[ "azione" ; scelta_azione ; JSONString ] ;
[ "tabelle dati" ; JSONMakeArray (
"Contatti¶Dipendenti" ;
"¶" ;
JSONString
) ;
JSONArray ] ;
[ "flusso" ; "off" ; JSONString ]
)
)
]
If [ not EVuoto ( $$PromptUtente ) and $scelta ≠ 3 ]
Esegui ricerca SQL per linguaggio naturale [ Nome account: "my-account" ; Modello: "gpt-4o" ; Prompt: $$PromptUtente ; Opzioni specificate: Per dati JSON ; Destinazione risposta: $$DatiRisultatoQuery ]
Mostra finestra personalizz. [ "Risultato dati:" ; $$DatiRisultatoQuery ]
End If
Possibile risposta memorizzata in $$DatiRisultatoQuery, supponendo che il prompt fosse "Per quale azienda lavora Alea?" e l'utente abbia fatto clic sul pulsante Solo dati:
Acme Anvils, Inc.
Esempio 3
Dimostra l'utilizzo delle azioni Get SQL e Get DDL per il debug. Lo script prima recupera il DDL generato per le tabelle Prodotti e Ordini, quindi recupera tutte le istruzioni SQL generate dal modello per un prompt specifico, memorizzando ciascuna di esse in variabili separate che è possibile analizzare.
Esegui ricerca SQL per linguaggio naturale [ Nome account: "my-account" ; Modello: "gpt-4o" ; Prompt: " " ; Opzioni specificate: Da elenco ; Azione: Get DDL ; Tabelle dati: Per nome ; "Prodotti¶Ordini" ; Destinazione risposta: $$DDLOrdiniProdotti ]
Esegui ricerca SQL per linguaggio naturale [ Nome account: "my-account" ; Modello: "gpt-4o" ; Prompt: "Trova il valore totale degli ordini per l'ID prodotto 101" ; Opzioni specificate: Da elenco ; Azione: Get SQL ; Tabelle dati: Per nome ; "Prodotti¶Ordini" ; Destinazione risposta: $$SQLGenerato ]
Mostra finestra di dialogo personalizz. [ "Informazioni di debug" ; "DDL generato:" & ¶ & $$DDLOrdiniProdotti & ¶ & ¶ & "SQL generato:" & ¶ & $$SQLGenerato ]
Possibile DDL memorizzato in $$DDLOrdiniProdotti:
CREATE TABLE "Products" (
"ProductID" int, /*Chiave primaria che identifica in modo univoco un prodotto*/
"ProductName" varchar(255), /*Nome descrittivo del prodotto*/
"Price" int, /*Prezzo del prodotto in USD*/
PRIMARY KEY (ProductID)
);
CREATE TABLE "Orders" (
"OrderID" int, /*Chiave primaria che identifica in modo univoco un ordine*/
"ProductID" int, /*Chiave esterna per una relazione molti a uno con la tabella Prodotti*/
"Quantity" int, /*Quantità di prodotti nell'ordine*/PRIMARY KEY (OrderID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
Possibile istruzione SQL memorizzata in $$SQLGenerato:
SELECT SUM("Quantity" * "Price") AS "TotalValue" FROM "Orders" JOIN "Products" ON "Orders"."ProductID" = "Products"."ProductID" WHERE "Orders"."ProductID" = 101