Utför sökning med naturligt språk
Skickar en prompt på naturligt språk samt en lista med fält i den aktuella layouten till en modell som returnerar en FileMaker-sökpost och utför en sökning.
Tillval
-
Kontonamn är ett textuttryck för AI-kontot som det här scriptsteget ska använda. Använd Scriptsteget Konfigurera AI-konto i den aktuella filen för att konfigurera kontot och tilldela det namnet när som helst innan scriptsteget körs.
-
Modell är namnet på den textgenereringsmodell som ska användas. Ange modellnamnet som ett textuttryck. Information om vilka modeller som stöds finns i Tekniska specifikationer för FileMaker.
-
Prompt är ett textuttryck för den begäran eller fråga på naturligt språk som ska skickas till modellen.
-
Get anger vilken typ av svar som ska hämtas från modellen.
-
Hittade poster: Utför sökposten som genereras av modellen och uppdaterar de hittade posterna i det aktuella fönstret.
-
Hittade poster som JSON: Utför sökposten som genereras av modellen och returnerar data för hittade poster som ett JSON-objekt. Ändrar inte de hittade posterna i det aktuella fönstret.
-
Sökpost som JSON: Utför inte sökningen. Returnerar den FileMaker-sökpost som genererats av modellen som ett JSON-objekt.
-
-
Promptmallens namn anger namnet på en anpassad promptmall som konfigurerats med Scriptsteget Konfigurera promptmall. Använd det här alternativet om du vill utforma en ytterligare prompt för att uppnå ett optimalt svar från en AI-modell.
-
Parametrar är ett textuttryck för ett JSON-objekt som består av par av nyckel–värde för ytterligare parametrar som stöds av modelleverantören. Till exempel:
{"temperatur": 0,7, "frö": 42}
. Se modelleverantörens dokumentation för nyckelnamn på de parametrar som stöds och giltiga intervall.Nyckeln
context_prompt
är en speciell parameter som gör att du kan injicera ytterligare instruktioner eller kontext till modellen före huvudprompten. Till exempel:{"context_prompt": "Hantera 'i dag' som 2025-08-01"}
. -
Mål för svar anger det fält eller den variabel där scriptstegets resultat ska lagras.
Kompatibilitet
Produkt | Stöds |
FileMaker Pro | Ja |
FileMaker Go | Ja |
FileMaker WebDirect | Ja |
FileMaker Server | Ja |
FileMaker Cloud | Ja |
FileMaker Data API | Ja |
Anpassad webbpublicering | Ja |
Ursprungsversion
22.0
Beskrivning
Med det här scriptsteget kan du utföra FileMaker-sökposter på dina data på naturligt språk utan att ange sökvillkor som i Scriptsteget Utför sökning. Det använder en AI-modell för att tolka en prompt på naturligt språk, analysera de fält som är tillgängliga i den aktuella layouten och generera en lämplig FileMaker-sökpost (och sorteringsordning, om tillämpligt).
Interaktionen mellan det här scriptsteget och modellen följer vanligtvis följande steg:
-
Scriptsteget identifierar alla fält som är tillgängliga för en sökning i den aktuella layouten. Det skickar information om dessa fält (som liknar resultatet från Funktionen GetFieldsOnLayout) tillsammans med en prompt till angiven modell. (Det inkluderar promptar som tillhandahålls i en valfri promptmall och parametern
context_prompt
.) -
Modellen analyserar prompten och informationen om layoutens fält och genererar sedan en FileMaker-sökpost och en sorteringsordning som är utformad för att hämta de begärda posterna.
-
Det här scriptsteget tar emot den genererade sökposten och sorteringsordningen.
-
Scriptsteget utför en åtgärd utifrån alternativet Get.
Alternativet Get avgör vad som händer när modellen har genererat sökpost:
Get | ... ger följande resultat |
---|---|
Hittade poster |
Utför den genererade sökposten på den aktuella layouten och uppdaterar de hittade posterna i steg 4. Om modellen genererade en sorteringsordning sorteras också de hittade posterna enligt den. Mål för svar används inte när det här alternativet har valts. |
Hittade poster som JSON |
Utför den genererade sökposten och returnerar i steg 4 data från de resulterande hittade posterna som ett JSON-objekt i Mål för svar. JSON-strukturen är densamma som svaret på en sökpost som utförs via FileMaker Data API. Den innehåller data från de hittade posterna, information om data (till exempel antal hittade och totalt antal poster) och eventuella meddelanden (fel eller varningar). Se exemplet nedan och exemplet i Scriptsteget Utför FileMaker Data API. |
Sökpost som JSON |
Utför inte sökningen. I steg 4 returneras den genererade FileMaker-sökposten och sorteringsordningen som ett JSON-objekt i Mål för svar. Det här alternativ är främst användbart för felsökning för att se exakt vilken sökpost modellen genererade. JSON-strukturen liknar matriserna |
Kommentarer
-
Endast fält som är tillgängliga för en sökning i den aktuella layouten skickas till modellen. Mer information om de kriterier som används för att avgöra vilka fält som är tillgängliga för sökning finns i Funktionen GetFieldsOnLayout, som använder samma villkor som det här scriptsteget. Samma information som skickas till modellen (layoutnamn, fältnamn, typer och beskrivningar) returneras av GetFieldOnLayout.
-
Fältkommentarer som du anger i dialogrutan Hantera databas inkluderas med den fältinformation som skickas till modellen. För att förbättra modellens förmåga att generera användbara sökposter kan du använda kommentaren för att förklara syftet med fältet. Mer information finns i Definiera och ändra fält. Mer information om hur du styr vilka fälts kommentarer som skickas till modellen finns i Funktionen GetFieldsOnLayout.
-
Om du anger Promptmallens namn använder scriptsteget den mall som konfigurerats via Scriptsteget Konfigurera promptmall. Promptmallar kan använda konstanter som
:schema:
(ersätts med information om layoutens fält),:question:
(ersätts med Prompt) och:context:
(ersätts med parameterncontext_prompt
i Parametrar). -
Det här scriptsteg kan användas för flerspråkiga sökningar, eftersom AI-modeller kan användas för flera språk.
-
När inga relevanta poster hittas returneras ett meddelande i Mål för svar (om det används) och Funktionen Get ( SenasteFel ) returnerar fel 401 ("Inga poster matchar sökposten").
-
Det här scriptsteget kan inte utföra sökningar som kräver statistikfunktioner (till exempel att hitta posten med det högsta värdet i ett fält). Modellen kan dock returnera en sökpost som innehåller sorteringsvillkor för att identifiera sådana poster (till exempel sortera poster efter fältet Pris i fallande ordning).
Exempel 1
Konfigurerar ett AI-konto, går till layouten Kontakter och använder sedan det här scriptsteget för att söka efter kontakter med namnet "Alea" i den aktuella layouten. Det här scriptsteget skickar de sökbara fälten i den aktuella layouten och prompten "Sök efter kontakter med namnet Alea" till modellen. Modellen skickar tillbaka en sökpost (eventuellt en sökpost för "Alea" i fältet Namn), och det här scriptsteget utför sökningen och uppdaterar de hittade posterna i det aktuella fönstret.
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: OpenAI ; API-nyckel: "sk-..." ]
Gå till layout [ "Kontakter" (Kontakter) ; Animering: Ingen ]
Utför sökning med naturligt språk [ Kontonamn: "mitt-konto" ; Modell: "gpt-4o" ; Prompt: "Hitta kontakter med namnet Alea" ; Get: Hittade poster ]
Exempel 2
Konfigurerar ett AI-konto, ber användaren om en fråga och utför sedan sökningen och returnerar data för hittade poster som JSON i variabeln $$HittadePosterData. Frågor körs på den aktuella layouten.
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: OpenAI ; API-nyckel: "sk-..." ]
Gå till layout [ "Produkter" (Produkter) ; Animering: Ingen ]
Visa anpassad dialogruta [ "Hitta produkter:" ; $$Användarprompt ]
If [ not IsEmpty ( $$Användarprompt ) ]
Utför sökning med naturligt språk [ Kontonamn: "mitt-konto" ; Modell: "gpt-4o" ; Prompt: $$Användarprompt ; Get: Hittade poster som JSON ; Mål för svar: $$DataHittadePoster ]
Visa anpassad dialogruta [ "Data i hittade poster:" ; JSONFormatElements ( $$DataHittadePoster ) ]
End If
Möjligt resultat lagras i $$DataHittadePoster (formaterat med JSONFormatElements), förutsatt att prompten var "Hitta produkter med pris mindre än 6 och sortera dem i fallande ordning efter pris":
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"Pris" : 5,99,
"ProduktID" : 107,
"Produktnamn" : "Skyddsglasögon",
"Status" : "I lager"
},
"modId" : "0",
"portalData" : {},
"recordId" : "61"
},
{
"fieldData" :
{
"Pris" : 5,5,
"ProduktID" : 122,
"Produktnamn" : "Stålspackel",
"Status" : "I lager"
},
"modId" : "0",
"portalData" : {},
"recordId" : "76"
}
],
"dataInfo" :
{
"database" : "Ordersystem",
"foundCount" : 2,
"layout" : "Produkter",
"returnedCount" : 2,
"table" : "Produkter",
"totalRecordCount" : 42
}
}
}
Exempel 3
Konfigurerar ett AI-konto och konfigurerar sedan en anpassad promptmall som använder den fördefinierade prompten för en sökpost. Den fördefinierade prompten beskriver JSON-formatet för en sökpost och inkluderar följande: Använd följande information som kontext: \":context:\"
.
Efter att ha gått till layouten Produkter och angett variabeln $$Idag till en fras på naturligt språk som ska användas som kontext senare, ersätter scriptsteget konstanten :context:
som används i promptmallen med värdet i nyckeln context_prompt
i Parametrar. Sedan skickas det tillsammans med prompten "Hitta poster som har skapats idag sorterade efter produktnamn" till modellen.
Modellen returnerar sökposten som ett JSON-objekt i variabeln $$SökpostJSON, som du kan använda för felsökning.
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: OpenAI ; API-nyckel: "sk-..." ]
Konfigurera promptmall [ Mallnamn: "HittaIdag" ; Modelleverantör: OpenAI ; Malltyp: Sökpost ; Sökpostprompt: "Generera och returnera endast en JSON-layoutfråga för att utföra en sökpost …" ]
Gå till layout [ "Produkter" (Produkter) ; Animering: Ingen ]
Ange variabel [ $$Idag ; Värde: "Idag är " & Get ( AktuelltDatum ) ]
Utför sökning med naturligt språk [ Kontonamn: "mitt-konto" ; Modell: "gpt-4o" ; Prompt: "Hitta poster som skapats idag sorterade efter produktnamn" ; Get: Sökpost som JSON ; Parametrar: JSONSetElement ( "{}" ; "context_prompt" ; $$Idag ; JSONString ) ; Response Target: $$SökpostJSON ]
Visa anpassad dialogruta [ "Genererad sökpost" ; JSONFormatElements ( $$SökpostJSON ) ]
Möjliga utdata lagras i $$SökpostJSON (formaterat med JSONFormatElements), förutsatt att det aktuella datumet är 2025-08-01 och layouten har fälten SkapatDatum och Produktnamn:
{
"layouts" : "Produkter",
"query" :
[
{
"Produkter::SkapatDatum" : "2025-08-01"
}
],
"sort" :
[
{
"fieldName" : "Produkter::Produktnamn",
"sortOrder" : "ascend"
}
]
}