Zoeken op natuurlijke taal uitvoeren

Verzendt een prompt in natuurlijke taal en een lijst met velden in de huidige lay-out naar een model, dat een FileMaker-zoekopdracht retourneert en een zoekopdracht uitvoert.

Opties 

  • Accountnaam is een tekstexpressie van het AI-account dat voor deze scriptstap moet worden gebruikt. Gebruik in het huidige bestand de scriptstap AI-account configureren scriptstap om het account in te stellen en deze naam toe te wijzen op elk moment voordat deze scriptstap wordt uitgevoerd.

  • Model is de naam van het te gebruiken tekstgeneratiemodel. Geef de modelnaam op als tekstexpressie. Zie de technische specificaties van FileMaker voor ondersteunde modellen.

  • Prompt is een tekstexpressie voor het verzoek of de vraag in natuurlijke taal die naar het model moet worden verzonden.

  • Get geeft het type antwoord aan dat van het model moet worden opgehaald.

    • Gevonden reeks: voert de zoekaanvraag uit die door het model is gegenereerd en werkt de gevonden reeks in het huidige venster bij.

    • Gevonden reeks als JSON: voert de zoekaanvraag uit die door het model is gegenereerd en retourneert de gegevens van de gevonden reeks als een JSON-object. Wijzigt de gevonden reeks in het huidige venster niet.

    • Zoekopdracht als JSON: de zoekopdracht wordt niet uitgevoerd. Retourneert de FileMaker-zoekopdracht dat door het model is gegenereerd als een JSON-object.

  • Naam van promptsjabloon specificeert de naam van een aangepaste prompt template die is geconfigureerd met behulp van de scriptstap Promptsjabloon configureren scriptstap. Gebruik deze optie om een extra prompt te ontwerpen om een optimale respons van een AI-model te bereiken.

  • Parameters is een tekstexpressie voor een JSON-object dat bestaat uit sleutel-waarde-paren voor aanvullende parameters die worden ondersteund door de modelprovider. Bijvoorbeeld: {"temperatuur": 0,7, "zaad": 42}. Raadpleeg de documentatie van de modelprovider voor sleutelnamen van ondersteunde parameters en hun geldige bereiken.

    De sleutel context_prompt is een speciale parameter waarmee u extra instructies of context in het model kunt injecteren vóór de hoofdprompt. Bijvoorbeeld: {"context_prompt": "Treat 'today' as 06-DD-JJJJ"}.

  • Antwoorddoel geeft het veld of de variabele aan waar het resultaat van de scriptstap moet worden opgeslagen.

Compatibiliteit 

Product Ondersteund
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Afkomstig uit versie 

22.0

Beschrijving 

Met deze scriptstap kunt u FileMaker verzoeken op uw gegevens zoeken in natuurlijke taal zonder zoekcriteria op te geven, zoals in de Zoekopdracht uitvoeren scriptstap. Het maakt gebruik van een AI-model om een prompt in natuurlijke taal te interpreteren, de beschikbare velden in de huidige lay-out te analyseren en een geschikte FileMaker-zoekopdracht te genereren (en sorteervolgorde, indien van toepassing).

De interactie tussen deze scriptstap en het model volgt meestal de volgende stappen:

  1. Deze scriptstap identificeert alle velden die toegankelijk zijn voor een zoekopdracht in de huidige lay-out. Het verzendt informatie over deze velden (vergelijkbaar met de uitvoer van de functie GetFieldsOnLayout functie) samen met de Prompt naar het opgegeven Model. (Dit geldt ook voor prompts in een optionele promptsjabloon en de parameter context_prompt).

  2. Het model analyseert de informatie van het prompt- en lay-outveld en genereert vervolgens een FileMaker-zoekopdracht en -sorteervolgorde om de gevraagde records op te halen.

  3. Deze scriptstap ontvangt de gegenereerde zoekopdracht en sorteervolgorde.

  4. De scriptstap voert een actie uit op basis van de Get-optie.

De Get-optie bepaalt wat er gebeurt nadat het model het zoekverzoek heeft gegenereerd:

Ophalen Doet het volgende

Gevonden reeks

Voert de gegenereerde zoekaanvraag uit in de huidige lay-out en werkt in stap 4 de gevonden reeks bij. Als het model een sorteervolgorde heeft gegenereerd, wordt de gevonden reeks ook dienovereenkomstig gesorteerd. Het Responsdoel wordt niet gebruikt wanneer deze optie is geselecteerd.

Gevonden reeks als JSON

Hiermee wordt het gegenereerde zoekverzoek uitgevoerd en worden in stap 4 de gegevens van de resulterende gevonden reeks geretourneerd als een JSON-object in het Responsdoel. De JSON-structuur is hetzelfde als het antwoord op een zoekopdracht die wordt uitgevoerd via de FileMaker Data API. Het omvat de gegevens van de gevonden reeks, gegevens (zoals gevonden aantal en totaal aantal records) en eventuele berichten (fouten of waarschuwingen). Zie het onderstaande voorbeeld en het voorbeeld in de FileMaker Data API uitvoeren scriptstap.

Zoekopdracht als JSON

Voert de zoekopdracht niet uit. Retourneert bij stap 4 de gegenereerde FileMaker-zoekopdracht en de sorteervolgorde als een JSON-object in het Responsdoel. Deze optie is vooral handig voor debuggen om precies te zien welke zoekopdracht het gegenereerde model heeft. De JSON-structuur is vergelijkbaar met de arrays query en sort die in de FileMaker Data API-aanroep worden gebruikt om een zoekverzoek uit te voeren. Zie het onderstaande voorbeeld en voer een zoekopdracht uit in de FileMaker Data API Handleiding.

Opmerkingen 

  • Alleen velden die toegankelijk zijn voor een zoekopdracht in de huidige lay-out, worden naar het model verzonden. Zie de functie GetFieldsOnLayout functie voor meer informatie over de criteria die worden gebruikt om te bepalen welke velden toegankelijk zijn voor Zoeken. Deze functie gebruikt dezelfde criteria als deze scriptstap. Dezelfde informatie die naar het model wordt verzonden (lay-outnaam, veldnamen, typen en beschrijvingen) wordt geretourneerd door GetFieldsOnLayout.

  • Veldopmerkingen die u invoert in het dialoogvenster Database beheren worden opgenomen in de veldinformatie die naar het model wordt verzonden. Om de mogelijkheid van het model om nuttige zoekopdrachten te genereren te verbeteren, kunt u de opmerking gebruiken om het doel van het veld uit te leggen. Raadpleeg Velden definiëren en wijzigen. Zie de functie GetFieldsOnLayout functie voor meer informatie over het bepalen van de opmerkingen van velden die naar het model worden verzonden.

  • Als u een promptsjabloonnaam opgeeft, wordt in deze scriptstap de sjabloon gebruikt die is geconfigureerd via de Promptsjabloon configureren scriptstap. Prompt templates kunnen constanten gebruiken zoals: Schema: (Vervangen door layout veld informatie), :Question: (Vervangen door Prompt), en :Context: (Vervangen door de parameter context_prompt in Parameters).

  • Deze scriptstap kan worden gebruikt voor meertalige zoekopdrachten, aangezien AI-modellen kunnen werken op meerdere talen.

  • Als er geen relevante records worden gevonden, wordt er een bericht geretourneerd in het Responsdoel (indien gebruikt) en geeft de Get (LaatsteFout) functie fout 401 ("Geen records komen overeen met het verzoek").

  • Met deze scriptstap kunnen geen zoekopdrachten worden uitgevoerd waarvoor aggregatiefuncties vereist zijn (bijvoorbeeld het vinden van de record met de hoogste waarde in een veld). Het model kan echter een zoekopdracht retourneren met sorteercriteria om dergelijke records te identificeren (bijvoorbeeld records sorteren op het veld Prijs in aflopende volgorde).

Voorbeeld 1 

Hiermee configureert u een AI-account, gaat u naar de indeling Contactpersonen en gebruikt u deze scriptstap om te zoeken naar contacten met de naam "Alea" in de huidige lay-out. Met deze scriptstap worden de velden met vindbare gegevens in de huidige lay-out en de prompt "Zoeken naar contactpersonen met de naam Alea" naar het model verzonden. Het model stuurt een zoekopdracht terug (mogelijk een verzoek voor "Alea" in het veld Naam), en deze scriptstap voert de zoekactie uit en werkt de gevonden reeks in het huidige venster bij.

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: OpenAI ; API key: "sk-..." ]

Ga naar lay-out [ "Contacten" (Contacten) ; Animatie: Geen ]

Zoeken op natuurlijke taal uitvoeren [ Accountnaam: "my-account" ; Model: "gpt-4o" ; Prompt: "Zoeken naar contactpersonen met de naam Alea" ; Get: Gevonden reeks ]

Voorbeeld 2 

Hiermee configureert u een AI-account, vraagt u de gebruiker om een query, voert u de zoekactie uit en retourneert u de gegevens van de gevonden reeks als JSON in de variabele $$FoundSetData. Query's worden uitgevoerd in de huidige lay-out.

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: OpenAI ; API-sleutel: "sk-..." ]

Ga naar lay-out [ "Producten" (Producten) ; Animatie: Geen ]

Aangepast dialoogvenster tonen [ "Producten zoeken:" ; $$UserPrompt ]

If [ not IsEmpty ( $$UserPrompt ) ]

    Zoeken op natuurlijke taal uitvoeren [ Accountnaam: "my-account" ; Model: "gpt-4o" ; Prompt: $$UserPrompt ; Get: Gevonden reeks als JSON ; Responsdoel: $$FoundSetData ]
    
    Aangepast dialoogvenster tonen [ "Gevonden reeks gegevens:" ; JSONFormatElements ( $$FoundSetData ) ]
    
End If

Mogelijke uitvoer opgeslagen in $$FoundSetData (geformatteerd met JSONFormatElements), ervan uitgaande dat de prompt "Zoek producten met een prijs lager dan 6 was, en sorteer ze in aflopende volgorde op prijs":

Kopiëren
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "Price" : 5.99,
                    "ProductID" : 107,
                    "ProductName" : "Safety Glasses",
                    "Status" : "In Stock"
                },
                "modId" : "0",
                "portalData" : {},
                "recordId" : "61"
            },
            {
                "fieldData"
                {
                    "Price" : 5.5,
                    "ProductID" : 122,
                    "ProductName" : "Putty Knife",
                    "Status" : "In Stock"
                },
                "modId" : "0",
                "portalData" : {},
                "recordId" : "76"
            }
        ],
        "dataInfo"
        {
            "database" : "Ordering System",
            "foundCount" : 2,
            "layout" : "Products",
            "returnedCount" : 2,
            "table" : "Products",
            "totalRecordCount" : 42
        }
    }
}

Voorbeeld 3 

Hiermee configureert u een AI-account en configureert u vervolgens een aangepaste promptsjabloon die de vooraf gedefinieerde prompt voor een zoekopdracht gebruikt. De vooraf gedefinieerde prompt beschrijft de JSON-indeling voor een zoekverzoek en bevat het volgende: Gebruik de volgende informatie als context: \":context:\".

Nadat u naar de lay-out Producten hebt gegaan en de variabele $$Today hebt ingesteld op een natuurlijke taalzin die u later voor context wilt gebruiken, vervangt deze scriptstap de constante :context: die in de promptsjabloon wordt gebruikt door de waarde van de sleutel context_prompt in Parameters. Vervolgens wordt dit samen met de prompt "Vind vandaag aangemaakte records gesorteerd op productnaam" naar het model verzonden.

Het model retourneert de zoekopdracht als een JSON-object in de variabele $$FindRequestJSON, die u kunt gebruiken voor foutopsporingsdoeleinden.

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: OpenAI ; API-sleutel: "sk-..." ]

Promptsjabloon configureren [ Sjabloonnaam: "FindToday" ; Modelprovider: OpenAI ; Sjabloontype: Zoekopdracht ; Zoekopdrachtprompt: "Genereer en retourneer alleen een JSON-layoutquery om een ​​zoekopdracht uit te voeren..." ]

Ga naar lay-out [ "Producten" (Producten) ; Animatie: Geen ]

Variabele instellen [ $$Today ; Waarde: "Vandaag is " & Get ( CurrentDate ) ]

Zoeken op natuurlijke taal uitvoeren [ Accountnaam: "my-account" ; Model: "gpt-4o" ; Prompt: "Vind vandaag aangemaakte records gesorteerd op productnaam" ; Get: Zoekopdracht als JSON ; Parameters: JSONSetElement ( "{}" ; "context_prompt" ; $$Today ; JSONString ) ; Responsdoel: $$FindRequestJSON ]

Aangepast dialoogvenster tonen [ "Gegenereerde zoekopdracht" ; JSONFormatElements ( $$FindRequestJSON ) ]

Mogelijke uitvoer opgeslagen in $$FindRequestJSON (geformatteerd met JSONFormatElements), ervan uitgaande dat de huidige datum 06-DD-JJJJ is en de lay-outvelden CreationDate en ProductName bevat:

Kopiëren
{
    "layouts" : "Producten",
    "query"
    [
        {
            "Products::CreationDate" : "06-DD-JJJJ"
        }
    ],
    "sort"
    [
        {
            "fieldName" : "Products::ProductName",
            "sortOrder" : "ascend"
        }
    ]
}