Genera risposta dal modello

Ricava una risposta di testo da un modello AI, dato un prompt utente.

Opzioni 

  • Nome account è un'espressione di testo per il nome dell'account AI 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 utente è un'espressione di testo per la richiesta o domanda in linguaggio naturale da inviare al modello; di solito è la richiesta effettuata dall'utente.

  • Modalità agentica controlla come questa istruzione di script gestisce le interazioni automatizzate degli strumenti:

    • Attivata: abilita l'interazione automatizzata in più fasi in cui il modello può effettuare chiamate ripetute agli strumenti fino al raggiungimento di un risultato finale.

    • Disattivata: esegue una sola interazione e si interrompe dopo la prima chiamata dello strumento senza eseguire la chiamata dello strumento o restituire un risultato in Risposta, consentendo la gestione e il debug manuali. Se non vengono effettuate chiamate di strumenti, restituisce il risultato del modello in Risposta.

  • Risposta specifica il campo o la variabile in cui andrà memorizzato il risultato dell'istruzione di script. Se si specifica un campo e si seleziona Flusso, il campo deve essere sul formato corrente.

  • Istruzioni è un'espressione di testo che fornisce un contesto aggiuntivo o linee guida di comportamento per il modello.

  • Messaggi specifica il campo o la variabile contenenti la cronologia dei messaggi per fornire al modello il contesto dalle interazioni precedenti. I messaggi sono un array di oggetti JSON. Ogni oggetto JSON deve contenere coppie chiave-valore per il testo del messaggio (content) e per chi ha fornito il contenuto (role): l'utente ("user") o il modello ("assistant"). Ad esempio:

    Copia

      {
        "content": "Quale temperatura c'è a Cupertino?",
        "role": "user"
      },
      {
        "content": "La temperatura di Cupertino è di 72 gradi Fahrenheit.",
        "role": "assistant"
      }
    ]
  • Salva cronologia messaggi in specifica la variabile in cui l'istruzione di script memorizza la cronologia dei messaggi. Il formato è lo stesso di Messaggi, con la coppia di messaggi dell'esecuzione corrente di questa istruzione di script aggiunta alla fine.

    Se si desidera che la cronologia dei messaggi venga mantenuta dopo la fine dello script corrente, utilizzare una variabile globale (che viene conservata fino al termine della sessione del client FileMaker) oppure memorizzare il valore della variabile in un campo. Vedere Utilizzo di variabili o l'istruzione di script Imposta campo.

  • Conteggio cronologia messaggi è un'espressione numerica che controlla il numero delle coppie di messaggi precedenti (domanda dell'utente e risposta dell'assistente) da includere nella variabile specificata da Salva cronologia dei messaggi in.

  • Temperatura controlla la casualità o la creatività della risposta di un modello a un prompt. Valori bassi producono risultati più deterministici e fattuali. Valori elevati generano risultati più creativi, inaspettati o meno coerenti. Fare riferimento alla documentazione del fornitore del modello per gli intervalli validi per il modello specifico che si sta utilizzando.

  • Definizioni strumenti specifica un array JSON di strumenti disponibili che il modello può chiamare durante l'elaborazione. Vedere "Definizioni degli strumenti" di seguito.

  • Chiamate strumenti dal modello specifica dove memorizzare le informazioni sulle chiamate di strumenti effettuate dal modello. Può essere utile per il debug o per verificare l'uso degli strumenti da parte del modello.

  • Flusso controlla come viene fornita la risposta:

    • Attivato: la risposta viene recuperata e consegnata in modo incrementale (parola per parola o in frasi). Questo può far sì che il client FileMaker appaia 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.

  • 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 all'esecuzione dell'istruzione di script Esegui JavaScript in visualizzatore Web come istruzione di script successiva, tranne che la risposta può essere passata alla funzione JavaScript e trasmessa attraverso 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
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
Pubblicazione Web personalizzata

Creata nella versione 

22.0

Descrizione 

Questa istruzione di script facilita l'interazione in più fasi tra l'app personalizzata e i modelli di AI, consentendo al modello di accedere e manipolare i dati tramite chiamate di strumenti quando necessario. L'istruzione di script opera in due modalità distinte, in base all'opzione Modalità agentica, ognuna delle quali fornisce diversi livelli di automazione e controllo sull'interazione.

L'interazione tra questa istruzione di script e il modello in genere segue questi passaggi:

  1. Questa istruzione di script invia il Prompt utente, eventuali Istruzioni, il contesto conversazionale dei Messaggi e le Definizioni strumenti disponibili al Modello configurato.

  2. Il modello analizza il prompt e stabilisce se può fornire una risposta diretta o se deve utilizzare strumenti per raccogliere ulteriori informazioni o eseguire azioni.

  3. Se sono necessari strumenti, il modello genera chiamate di strumenti con parametri appropriati in base alle definizioni degli strumenti disponibili e alla richiesta dell'utente.

  4. Questa istruzione di script riceve le chiamate di strumenti dal modello e il client FileMaker le esegue. L'esecuzione degli strumenti può includere gli strumenti predefiniti, come query SQL o chiamate alle proprie funzioni personalizzate.

  5. Questa istruzione di script reinvia i risultati dell'esecuzione dello strumento al modello, fornendo a quest'ultimo i dati o la conferma di cui ha bisogno per continuare l'elaborazione.

  6. Se il modello stabilisce che sono necessari strumenti aggiuntivi per rispondere completamente al prompt, potrebbe generare più chiamate di strumenti (ripetendo i passaggi 3-5). Questo processo iterativo continua fino a quando il modello non dispone di informazioni sufficienti per fornire una risposta completa.

  7. Dopo che il modello ha completato tutte le interazioni con gli strumenti necessarie, genera una risposta finale che incorpora i risultati degli strumenti e risponde al prompt originale dell'utente.

  8. Questa istruzione di script riceve la risposta finale, la memorizza nella destinazione Risposta specificata e, a scelta, aggiorna la cronologia delle interazioni in Salva cronologia messaggi in.

L'opzione Modalità agentica determina come viene gestita l'interazione:

  • Attivata: abilita l'interazione automatizzata in più fasi con gli strumenti, eseguendo automaticamente l'intero flusso di lavoro (passaggi 1-8). Quando il modello di AI determina che sono necessari strumenti per soddisfare la richiesta, chiama automaticamente gli strumenti appropriati e continua l'elaborazione fino al raggiungimento di un risultato finale. Il modello può effettuare le chiamate di strumenti a più riprese secondo necessità, basandosi di volta in volta sui risultati delle esecuzioni degli strumenti precedenti. Questa modalità è destinata ad attività complesse che richiedono più interazioni con gli strumenti, come l'analisi dei dati in più tabelle, la generazione di resoconti o l'esecuzione di operazioni in più fasi.

  • Disattivata: esegue una singola interazione con il modello di AI, eseguendo solo i passaggi 1-3 e interrompendosi dopo la prima chiamata dello strumento. Se il modello stabilisce che sono necessari strumenti, l'istruzione di script si interrompe e restituisce le informazioni sulla chiamata dello strumento in Chiamate strumenti dal modello piuttosto che eseguire automaticamente gli strumenti. Questa modalità è utile per eseguire il debug delle interazioni degli strumenti, per capire quali strumenti vuole utilizzare il modello o quando si desidera avere un controllo manuale sull'esecuzione degli strumenti. È possibile esaminare le chiamate di strumenti e poi decidere se eseguirle manualmente o modificare l'approccio.

Il flusso di informazioni tra questa istruzione di script e il modello garantisce che i dati sensibili rimangano al sicuro abilitando al contempo funzionalità basate sull'intelligenza artificiale. Il modello riceve solo le informazioni fornite esplicitamente tramite i prompt, le istruzioni e i risultati degli strumenti, ma non ha accesso diretto al database o ai file FileMaker. Le chiamate di strumenti vengono eseguite all'interno dell'ambiente FileMaker controllato, consentendo all'utente di mantenere il pieno controllo dell'accesso ai dati e delle operazioni sui dati tramite account e privilegi FileMaker, sfruttando al contempo le capacità analitiche e di ragionamento del modello.

Definizioni degli strumenti

L'uso di strumenti (indicato anche come function calling o chiamata di funzioni da alcuni fornitori di modelli) consente al modello di richiamare l'app FileMaker Pro per fare o fornire qualcosa di cui il modello ha bisogno per generare la risposta finale. In modalità agentica, il modello può chiamare più strumenti ripetutamente finché non ha finito. Nell'opzione Definizioni strumenti è possibile definire i seguenti strumenti:

  • execute_sql: strumento predefinito che esegue la query SQL specificata, in grado di eseguire un'istruzione SQL passata dal modello allo stesso modo dell'istruzione di script Esegui ricerca SQL per linguaggio naturale.

  • retrieve_image: strumento predefinito che recupera un'immagine dal campo Contenitore specificato da una query SQL, un nome di tabella e un nome campo Contenitore.

  • Funzioni personalizzate: qualsiasi funzione personalizzata definita nel file. Vedere Utilizzo delle funzioni personalizzate.

Le definizioni degli strumenti sono specificate utilizzando il formato JSON richiesto dal fornitore del modello. In generale, la definizione è un array di oggetti, ciascuno dei quali specifica il nome di uno strumento, una descrizione dettagliata di ciò che fa lo strumento e quali regole dovrebbe seguire il modello quando lo utilizza e, per ogni parametro di input, il suo nome, il tipo di dati e la descrizione. Le descrizioni dovrebbero essere il più dettagliate possibile affinché il modello utilizzi lo strumento in modo affidabile. Se si utilizzano gli strumenti predefiniti, iniziare utilizzando le definizioni fornite di seguito. Se necessario, modificarle per ottenere risultati ottimali per i modelli utilizzati.

Per facilitare il debug delle definizioni degli strumenti, impostare l'opzione Chiamate strumenti dal modello su un campo o una variabile in cui si possa vedere come o se il modello ha chiamato gli strumenti. Questo può essere utile a mettere in evidenza che cosa potrebbe essere necessario aggiungere o modificare nelle descrizioni fornite nelle definizioni degli strumenti.

Per il formato JSON specifico utilizzato per le definizioni degli strumenti e le chiamate di strumenti, vedere la documentazione del fornitore del modello, ad esempio Anthropic, Cohere e OpenAI.

execute_sql

Nome funzione

execute_sql

 

Descrizione della funzione

Respond to the user’s questions by executing the appropriate SQL query using this function. Strictly follow these rules:\r 1. The input should be a fully formed SQL query.\r 2. Perform separate SQL instead of one nested SQL.\r 3. Escaping special characters for SQL query.\r 4. If the result of the toolCall is a raw string that reads 'empty' or 'null', the answer should contain the quoted raw string, which is case sensitive.\r 5. Convert the user’s request into an SQL query using standard SQL syntax only. Ensure that table names and field names match exactly as they appear in the database schema.

 

Nome del parametro

sql_query

 

Descrizione del parametro

Generate a fully formed SQL query based on following rules:\r 1. Enclose all table and field names in double quotes.\r 2. Format dates as \"DATE 'YYYY-MM-DD'\", times as \"TIME 'HH:MM:SS'\" and timestamps as \"TIMESTAMP 'YYYY-MM-DD HH:MM:SS'\".\r 3. Return queries in plain text (not JSON).\r 4. Use \"FETCH FIRST n ROW ONLY\" instead of \"LIMIT\".\r 5. Support single queries only.\r 6. No semicolon is needed at the end of SQL query.\r 7. Don't generate nested SQL queries.\r 8. Use \"LIKE\" instead of \"ILIKE\".\r 9. Keep all comparisons case-sensitive.\r 10. Do not include fields that are not included in the question.\r 11. Use unquoted ROWID in queries.\r 12. Only utilize the following database schema:\r

Aggiungere lo schema che si desidera che venga utilizzato dal modello alla fine di questa descrizione. Fornire lo schema in Data Definition Language (DDL) così come restituito dalla funzione GetTableDDL per le ricorrenze di tabella che si desidera includere.

 

Restituisce: il risultato della query SQL come stringa.

retrieve_image

Nome funzione

retrieve_image

 

Descrizione della funzione

This function MUST be called whenever the user asks for any image-related data, such as photos, profile pictures, avatars, or any visual representation stored in the database. Use this to fetch image data by constructing an SQL query that returns the ROWID (unquoted) of the relevant row. Always prefer this over other functions for image retrieval.

 

Nome del parametro 1

sql_query

 

Descrizione del parametro 1

An SQL query used to locate the ROWID of the row containing the desired image. Example: SELECT ROWID FROM \"Contacts\" WHERE \"Last Name\" = 'Smith'. \r\r Only utilize the following database schema:\r

Aggiungere lo schema che si desidera che venga utilizzato dal modello alla fine di questa descrizione. Fornire lo schema in Data Definition Language (DDL) così come restituito dalla funzione GetTableDDL per le ricorrenze di tabella che si desidera includere.

 

Nome del parametro 2

Tabella

 

Descrizione del parametro 2

Il nome della tabella contenente il campo immagine.

 

Nome del parametro 3

Campo

 

Descrizione del parametro 3

Il campo Contenitore in cui è memorizzata l'immagine.

 

Restituisce: dati JSON nel seguente formato, contenenti l'immagine come stringa con codifica Base64.

Copia
[
  {
    "data": "/9j/4AAQ...//2Q=="
  }
]

Funzioni personalizzate

Seguire queste linee guida per le definizioni degli strumenti per richiamare le funzioni personalizzate:

  • Per la funzione:

    • Nella chiave name, utilizzare esattamente il nome della funzione personalizzata come definito nella finestra di dialogo Modifica funzione personalizzata.

    • Nella chiave description fornire una descrizione dettagliata di ciò che fa la funzione personalizzata e di quali regole il modello dovrebbe seguire quando la utilizza.

  • Per i parametri:

    • Definire esattamente lo stesso numero di parametri rispettando lo stesso ordine dei parametri definiti nella finestra di dialogo Modifica funzione personalizzata. I nomi dei parametri non devono essere gli stessi.

    • Nella chiave description inserire una descrizione dettagliata di ciò che il modello deve fornire nel parametro.

    • Impostare il valore della chiave type su "string" (i parametri sono sempre trattati come testo).

Note 

  • Messaggi di errore comuni includono "Nessuna chiamata strumenti esistente per il prompt" quando il modello non è in grado di determinare gli strumenti adatti da utilizzare e "Funzione non trovata" quando una definizione di strumento fa riferimento a una funzione personalizzata che non esiste.

Esempio 1 

Configura un account AI, va al formato Contatti, quindi visualizza una finestra di dialogo in cui l'utente può inserire una domanda. L'istruzione di script Genera risposta dal modello invia quindi il prompt e la cronologia dei messaggi recenti al modello e trasmette il risultato al campo Risposta. Per un'interazione semplice di domanda e risposta come questa, Modalità agentica non è selezionato. Per mantenere il contesto con il modello durante la sessione corrente del client FileMaker, l'istruzione di script memorizza i 10 messaggi più recenti nella variabile globale $$Messaggi tramite l'opzione Salva cronologia messaggi in. Tramite l'opzione Messaggi, l'istruzione di script invia il valore della variabile $$Messaggi al modello quando questo script viene eseguito successivamente nella stessa sessione. Poiché l'opzione Definizioni strumenti non viene utilizzata, il modello non sarà in grado di rispondere a domande sui dati.

Copia
Configura account AI [ Nome account: "my-account" ; Fornitore modello: OpenAI ; Chiave API: Globale::Chiave_API ] ] 

Vai al formato [ "Contatti" (Contatti) ]

Mostra finestra personalizz. [ "Inserire una domanda" ; $PromptUtente ]

Genera risposta dal modello [ Nome account: "my-account" ; Modello: Globale::NomeModello ; Prompt utente: $PromptUtente ; Risposta: Contatti::Risposta ; Messaggi: $$Messaggi ; Salva cronologia messaggi in: $$Messaggi ; Conteggio cronologia messaggi: 10 ; Flusso ]

Esempio 2 

Configura un account AI, va al formato Contatti, quindi invia un prompt in cui si chiedono informazioni sui dati della tabella Contatti al modello, il quale utilizza strumenti per generare una risposta. Poiché tramite $$Messaggi vengono salvati fino a 10 messaggi nel campo globale Messaggi, il contesto viene conservato nelle sessioni del client FileMaker.

Copia
Configura account AI [ Nome account: "my-account" ; Fornitore modello: OpenAI ; Chiave API: Globale::Chiave_API ] 

Vai al formato [ "Contatti" (Contatti) ]

Imposta variabile [ $Istruzioni ; Valore: "Sei un assistente utile, in grado di effettuare query sulle informazioni del database. Fornisci sempre risposte chiare e formattate". ]

Imposta variabile [ $PromptUtente ; "Quanti contatti abbiamo di Acme Anvils e quali sono i loro nomi e indirizzi e-mail? Aggiungi un asterisco dopo i contatti che si trovano in una città in cui abbiamo un ufficio vendite". ]

Genera risposta dal modello [ Nome account: "my-account" ; Modello: Globale::NomeModello ; Prompt utente: $PromptUtente ; Risposta: Contatti::Risposta ; Chiamate strumenti dal modello: $$ChiamateStrumenti ; Istruzioni: $Istruzioni ; Messaggi: Globale::Messaggi ; Salva cronologia messaggi in: $$Messaggi ; Conteggio cronologia messaggi: 10 ; Definizioni strumenti: Globale::DefinizioniStrumenti; Flusso ]

Imposta campo [ Globale::Messaggi ; $$Messaggi ]

Il campo DefinizioniStrumenti contiene quanto segue utilizzando il formato JSON per il fornitore di modelli OpenAI:

Copia
[
  {
    "function": {
      "description": "Respond to the user’s questions by executing the appropriate SQL query using this function. Strictly follow these rules:\r 1. The input should be a fully formed SQL query.\r 2. Perform separate SQL instead of one nested SQL.\r 3. Escaping special characters for SQL query.\r 4. If the result of the toolCall is a raw string that reads 'empty' or 'null', the answer should contain the quoted raw string, which is case sensitive.\r 5. Convert the user’s request into an SQL query using standard SQL syntax only. Ensure that table names and field names match exactly as they appear in the database schema.",
        "name": "execute_sql",
        "parameters": {
          "properties": {
            "sql_query": {
              "description": "Generate a fully formed SQL query based on following rules:\r 1. Enclose all table and field names in double quotes.\r 2. Format dates as \"DATE 'YYYY-MM-DD'\", times as \"TIME 'HH:MM:SS'\" and timestamps as \"TIMESTAMP 'YYYY-MM-DD HH:MM:SS'\".\r 3. Return queries in plain text (not JSON).\r 4. Use \"FETCH FIRST n ROW ONLY\" instead of \"LIMIT\".\r 5. Support single queries only.\r 6. No semicolon is needed at the end of SQL query.\r 7. Don't generate nested SQL queries.\r 8. Use \"LIKE\" instead of \"ILIKE\".\r 9. Keep all comparisons case-sensitive.\r 10. Do not include fields that are not included in the question.\r 11. Use unquoted ROWID in queries.\r 12. Only utilize the following database schema:\rCREATE TABLE \"Contacts\" (\r\"First Name\" varchar(255),\r\"Last Name\" varchar(255),\r\"Email\" varchar(255),\r\r\"City\" varchar(255),\r\"Company\" varchar(255)\r);\r\r",
              "type": "string"
            }
          },
          "type": "object",
          "required": ["sql_query"]
        }
      },
      "type": "function"
  },
  {
    "function": {
      "description": "Controlla se la nostra azienda ha un ufficio vendite in una città specificata. Se ce l'ha, questa funzione restituisce ""; altrimenti, restituisce "no".",
        "name": "CittàHaUfficioVendite",
         "parameters": {
          "properties": {
            "city": {
              "description": "Il nome di una città",
              "type": "string"
            }
          },
          "type": "object",
          "required": ["city"]
        }
      },
      "type": "function"
  }
]

Per execute_sql, usare la descrizione della funzione e la descrizione dei parametri fornite sopra. Nel parametro sql_query, usare la descrizione fornita sopra seguita dallo schema per la tabella Contatti.

La funzione personalizzata CittàHaUfficioVendite restituisce "sì" o "no" a seconda che la città specificata abbia un ufficio vendite.

Possibile risposta trasmessa al campo Risposta:

Copia
Abbiamo 4 contatti di Acme Anvils. Ecco i loro nomi, indirizzi e-mail e un asterisco che indica se si trovano in una città con un ufficio vendite:

1. Alea Marks, aleamarks165@esempio.com
2. Kelly Holden, kellyholden1361@esempio.com *
3. Kelsey Cummings, kelseycummings1396@esempio.com
4. Kuame Savage, kuamesavage7146@esempio.com

La variabile $$ChiamateStrumenti contiene diverse chiamate a execute_sql e a CittàHaUfficioVendite.

Copia
[
  {
    "index": 0,
    "id": "call_e7...",
    "type": "function",
    "function": {
      "name": "execute_sql",
      "arguments": "{\"sql_query\":\"SELECT COUNT(*) FROM \\\"Contatti\\\" WHERE \\\"Azienda\\\" = 'Acme Anvils'\"}"
    }
  },
  {
    "index": 0,
    "id": "call_o0...",
    "type": "function",
    "function": {
      "name": "execute_sql",
      "arguments": "{\"sql_query\":\"SELECT \\\"Nome\\\", \\\"Cognome\\\", \\\"Email\\\", \\\"Città\\\" FROM \\\"Contatti\\\" WHERE \\\"Azienda\\\" = 'Acme Anvils'\"}"
    }
  },
  {
    "index": 0,
    "id": "call_ev...",
    "type": "function",
    "function": {
      "name": "CittàHaUfficioVendite",
      "arguments": "{\"city\": \"Onitsha\"}"
    }
  },
  {
    "index": 1,
    "id": "call_IC...",
    "type": "function",
    "function": {
      "name": "CittàHaUfficioVendite",
      "arguments": "{\"city\": \"Berlin\"}"
    }
  },
  {
    "index": 2,
    "id": "call_Pw...",
    "type": "function",
    "function": {
      "name": "CittàHaUfficioVendite",
      "arguments": "{\"city\": \"Saint-Malo\"}"
    }
  },
  {
    "index": 3,
    "id": "call_Uy...",
    "type": "function",
    "function": {
      "name": "CittàHaUfficioVendite",
      "arguments": "{\"city\": \"Wanneroo\"}"
    }
  }
]