Executar Consulta SQL por Linguagem Natural
Envia um prompt de linguagem natural e um esquema de banco de dados para um modelo, que retorna uma consulta SQL para obter um resultado do banco de dados para usar em sua resposta.
Consulte também
Opções
-
Nome da conta é uma expressão de texto da conta de IA usada por esta etapa de script. No arquivo atual, use a etapa de script Etapa de script Configurar a conta de IA para configurar a conta e atribuir esse nome a ela antes que a etapa de script seja executada.
-
Modelo é o nome do modelo de geração de texto a ser usado. Especifique o nome do modelo como uma expressão de texto. Para modelos compatíveis, consulte Especificações técnicas do FileMaker.
-
Prompt é uma expressão de texto para a solicitação ou pergunta em linguagem natural que será enviada ao modelo.
-
As Opções especificadas determinam como as outras opções para esta etapa de script são configuradas.
-
Da lista: configure as opções individualmente usando as configurações abaixo.
-
Por dados JSON: configure as opções fornecendo um objeto JSON. Essa opção é útil para definir valores de forma dinâmica. O objeto JSON deve conter pares chave-valor correspondentes às opções da etapa de script e seus valores. As chaves para as opções suportadas são:
-
ação
: valor da string correspondente à Ação desejada:"consulta"
,"consulta somente para dados"
,"obter sql"
,"obter primeiro SQL apenas"
,"obter ddl"
. -
tabelas de dados
: uma matriz JSON de strings, onde cada string é o nome de uma tabela cujo esquema deve ser incluído. Por exemplo:["Contatos", "Endereços"]
. -
fluxo
: valor da string para a opção Fluxo ("ativado" ou "desativado").
Por exemplo:
Copiar{
"ação" : "obter sql",
"tabelas de dados" : [ "Produtos", "Faturas" ],
"fluxo" : "desativado"
} -
-
-
Ação especifica o tipo de resposta a ser recuperada do modelo.
-
Consulta: retorna a resposta final do modelo ao prompt do usuário em linguagem natural.
-
Consulta somente para dados: retorna apenas os dados recuperados pela última consulta SQL do modelo executada por esta etapa de script.
-
Obter SQL: retorna todas as instruções SQL geradas pelo modelo durante toda a interação.
-
Obter primeiro SQL apenas: retorna apenas a primeira instrução SQL gerada pelo modelo.
-
Obter DDL: retorna o esquema do banco de dados (em Linguagem de definição de dados) que esta etapa de script gera e envia para o modelo.
-
-
Tabelas de dados indica como você deseja especificar o esquema do banco de dados para tabelas no modelo. Somente o esquema para as tabelas especificadas é enviado.
-
Da lista: selecione tabelas específicas de uma lista.
-
Por nome: forneça uma lista de nomes de tabela como uma expressão de texto. Separe vários nomes de tabela com quebras de linha.
-
Por DDL: forneça uma expressão de texto DDL personalizada. Isso permite que você controle exatamente quais informações de esquema são enviadas para o modelo.
-
-
Tabelas é onde você seleciona as tabelas quando Tabelas de dados é Da lista.
-
Fluxo determina como a resposta é entregue quando Ação é Consulta.
-
Ativado: a resposta é recuperada e entregue de forma incremental (palavra por palavra ou em blocos). Isso pode fazer com que o cliente FileMaker pareça mais responsivo.
-
Desativado: toda a resposta é recuperada antes de ser disponibilizada. Isso pode fazer com que o cliente FileMaker pareça não responder enquanto aguarda a resposta completa.
-
-
Parâmetros é uma expressão de texto para um objeto JSON que consiste em pares chave-valor para parâmetros adicionais que são suportados pelo provedor do modelo. Por exemplo:
{"temperature": 0,7, "seed": 42}
. Consulte a documentação do provedor do modelo para obter nomes de parâmetros suportados e seus intervalos válidos. -
Nome do modelo de solicitação especifica o nome de um modelo de solicitação personalizado configurado usando a etapa de script Etapa de script Configurar modelo de prompt. Use essa opção para criar um prompt adicional para ajudar a obter uma resposta ideal de um modelo de IA.
-
Destino da resposta especifica o campo ou variável onde o resultado da etapa de script deve ser armazenado.
-
Executar JavaScript no Visualizador da Web especifica o código JavaScript para executar em um Visualizador da Web de destino após a conclusão da etapa de script. Essa opção é semelhante à execução do script Etapa de script Executar JavaScript no Visualizador da Web como a próxima etapa de script, exceto que o Destino da resposta pode ser passado para a função JavaScript e a resposta pode ser transmitida para o visualizador da Web quando a opção Fluxo está Ativada.
-
Visualizador da Web especifica o nome do objeto de um visualizador da Web no layout atual.
-
Nome da função é o nome da função JavaScript a ser chamada no visualizador da Web.
-
Compatibilidade
Produto | Compatível |
FileMaker Pro | Sim |
FileMaker Go | Sim |
FileMaker WebDirect | Sim |
FileMaker Server | Parcial |
FileMaker Cloud | Parcial |
FileMaker Data API | Parcial |
Publicação na Web personalizada | Parcial |
Originada na versão
22.0
Descrição
Esta etapa de script permite que você consulte seu banco de dados usando linguagem natural em vez de escrever instruções SQL diretamente. Ela usa um modelo de IA para interpretar um prompt em linguagem natural, analisar o esquema do banco de dados, gerar consultas SQL apropriadas e, depois que essa etapa de script executar as consultas SQL, o modelo pode responder em linguagem natural com os resultados. Nenhum dos seus dados do FileMaker precisa ser enviado para o modelo.
A interação entre essa etapa de script e o modelo normalmente segue estas etapas:
-
Esta etapa de script envia o Prompt e o esquema de banco de dados relevante (DDL especificado por Tabelas de dados) para o Modelo de IA configurado. (Isso inclui avisos fornecidos em um modelo de prompt opcional.)
-
O modelo analisa o prompt e o esquema e gera uma ou mais consultas SQL projetadas para recuperar as informações solicitadas do banco de dados.
-
Esta etapa de script recebe as consultas SQL geradas do modelo e as executa.
-
Esta etapa de script envia os resultados da execução da consulta SQL de volta ao modelo.
-
Se o modelo determinar que os resultados exigem processamento ou refinamento adicional para abordar totalmente o prompt, ele pode gerar consultas SQL adicionais (repetindo as etapas 2 a 4). Isso permite consultas complexas ou recuperação de dados em várias etapas.
-
Depois que o modelo tem informações suficientes, ele gera uma resposta final com base no prompt e nos resultados da consulta SQL que recebeu.
-
Esta etapa de script recebe a resposta final e a armazena no Destino da resposta.
A opção Ação determina o que é retornado ao Destino da resposta em diferentes estágios desse processo:
Ação | Faz isso |
---|---|
Consulta |
Completa todo o fluxo de trabalho (etapas 1 a 7), incluindo quaisquer rodadas repetidas de geração e execução de SQL. O Destino da resposta recebe a resposta final em linguagem natural do modelo, que pode incluir os dados da consulta SQL integrados em uma resposta conversacional. |
Consulta somente para dados |
Executa as etapas 1 a 6, mas para antes da etapa 7. O Destino da resposta recebe apenas os dados retornados pela última consulta. |
Para depuração: | |
Obter SQL |
Executa as etapas 1 a 6, mas para antes da etapa 7. O Destino da resposta recebe o texto de todas as instruções SQL geradas pelo modelo ao longo da interação. |
Obter primeiro SQL apenas |
Executa apenas as etapas 1 e 2 e para. O Destino da resposta recebe o texto apenas da primeira instrução SQL gerada pelo modelo. Essa opção ajuda a reduzir o uso de tokens durante a depuração. |
Obter DDL |
Executa apenas a etapa 1 (gerando o DDL com base na opção Tabelas de dados). Não interage com o modelo. O Destino da resposta recebe o texto do DDL gerado. |
As ações de depuração são úteis principalmente para entender como a etapa de script interage com o modelo e seu esquema de banco de dados enquanto testa o script.
Notas
-
Se você especificar um Nome do modelo de solicitação, esta etapa de script usará o modelo configurado por meio da etapa de script Etapa de script Configurar modelo de prompt. Esses modelos podem usar constantes como
:schema:
,:question:
,:sql_query:
e:sql_results:
que são substituídas dinamicamente durante a execução. As constantes disponíveis dependem do tipo de modelo e da Ação atual. -
Os comentários de campo inseridos na caixa de diálogo Gerenciar banco de dados são incluídos no esquema de banco de dados enviado ao modelo. Para melhorar a capacidade do modelo de gerar instruções SQL úteis, você pode usar o comentário para explicar o propósito do campo (por exemplo, quando um campo é uma chave estrangeira que identifica um registro em uma tabela relacionada). Consulte Melhores práticas para esquema de banco de dados na geração de consultas DDL e SQL.
-
Esta etapa do script não consegue determinar qual rodada de geração e execução de SQL é a última até que a resposta final em linguagem natural seja recebida do modelo.
-
Durante a execução das ações Consulta ou Consulta somente para dados, esta etapa de script recebe e armazena todas as instruções SQL geradas pelo modelo e o resultado da última consulta SQL executada. Esses são os mesmos resultados retornados pelas ações Obter SQL e Consulta somente para dados, respectivamente.
-
Quando esta etapa de script é executada sem um erro, mas nenhuma informação relevante é encontrada, uma mensagem é retornada no Destino da resposta e a função Função Get(LastError) retorna o erro 0 ("Sem erro").
-
Em scripts executados pelo FileMaker Server, FileMaker Cloud, FileMaker Data API, OData API e Publicação na Web personalizada, a opção Executar JavaScript no Visualizador da Web não é suportada.
Exemplo 1
Configura uma conta de IA e, em seguida, usa a etapa de script Executar Consulta SQL por Linguagem Natural para fazer uma pergunta sobre os dados na tabela Contatos, que tem dados nos campos Nome e Empresa. A etapa de script envia o esquema para a tabela Contatos e o prompt "Para qual empresa Alea trabalha?" para o modelo. O modelo gera a consulta SQL necessária e esta etapa de script a executa, então o modelo fornece uma resposta em linguagem natural armazenada no campo Resposta.
Configurar conta de IA [ Nome da conta: "minha-conta" ; Provedor do modelo: OpenAI ; Chave de API: "sk-..." ]
Executar Consulta SQL por Linguagem Natural [ Nome da conta: "minha-conta" ; Modelo: "gpt-4o" ; Prompt: "Para qual empresa Alea trabalha?" ; Opções especificadas: Da lista ; Ação: Consulta ; Tabelas de dados: Da lista ; Tabelas... ; Fluxo ; Destino da resposta: Contacts::Response ]
Possível resposta armazenada no campo Contacts::Response:
Alea trabalha para a Acme Anvils, Inc.
Exemplo 2
Faz uma pergunta ao usuário em uma caixa de diálogo personalizada, onde o botão padrão é "Consulta", o botão 2 é "Somente dados" e o botão 3 é "Cancelar”, e a pergunta é armazenada na variável $$UserPrompt. Em seguida, define a variável $options para refletir a escolha do usuário para a ação
a ser realizada: consulta
ou consulta somente para dados
. Se o usuário inseriu uma pergunta e não clicou em Cancelar, executa a etapa de script Executar Consulta SQL por Linguagem Natural, passa por $$UserPrompt e $options e, em seguida, retorna os resultados do modelo em $$QueryResultData, que é exibido em outra caixa de diálogo personalizada. As consultas são limitadas às tabelas Contatos e Funcionários.
Configurar conta de IA [ Nome da conta: "minha-conta" ; Provedor do modelo: OpenAI ; Chave de API: "sk-..." ]
Mostrar caixa de diálogo personalizada [ "Pergunte ao banco de dados:" ; $$UserPrompt ]
Definir variável [ $options ; Valor:
Let ( [
$choice = Obter ( LastMessageChoice ) ;
action_choice = Case (
$choice = 1 ; "consulta" ;
$choice = 2 ; "consulta somente para dados"
)
] ;
JSONSetElement (
"";
[ "ação" ; action_choice ; JSONString ] ;
[ "tabelas de dados" ; JSONMakeArray (
"Contatos¶Funcionários" ;
"¶" ;
JSONString
) ;
JSONArray ] ;
[ "fluxo" ; "desativado" ; JSONString ]
)
)
]
If [ not IsEmpty ( $$UserPrompt ) and $choice ≠ 3 ]
Executar Consulta SQL por Linguagem Natural [ Nome da conta: "minha-conta" ; Modelo: "gpt-4o" ; Prompt: $$UserPrompt ; Opções especificadas: Por dados JSON ; Destino da resposta: $$QueryResultData ]
Mostrar caixa de diálogo personalizada [ "Resultado dos dados:" ; $$QueryResultData ]
End If
Possível resposta armazenada em $$QueryResultData, assumindo que o prompt foi "Para qual empresa Alea trabalha?" e o usuário clicou no botão Somente dados:
Acme Anvils, Inc.
Exemplo 3
Demonstra o uso das ações Obter SQL e Obter DDL para depuração. O script primeiro recupera o DDL gerado para as tabelas Produtos e Pedidos e, em seguida, recupera todas as instruções SQL geradas pelo modelo para um prompt específico, armazenando cada uma em variáveis separadas para revisão.
Executar Consulta SQL por Linguagem Natural [ Nome da conta: "minha-conta" ; Modelo: "gpt-4o" ; Prompt: " " ; Opções especificadas: Da lista ; Ação: Obter DDL ; Tabelas de dados: Por nome ; "Produtos¶Pedidos" ; Destino da resposta: $$ProductsOrdersDDL ]
Executar Consulta SQL por Linguagem Natural [ Nome da conta: "minha-conta" ; Modelo: "gpt-4o" ; Prompt: "Encontre o valor total de pedidos para o Produto ID 101" ; Opções especificadas: Da lista ; Ação: Obter SQL ; Tabelas de dados: Por nome ; "Produtos¶Pedidos" ; Destino da resposta: $$GeneratedSQL ]
Mostrar caixa de diálogo personalizada [ "Informações de depuração" ; "DDL gerado:" & ¶ & $$ProductsOrdersDDL & ¶ & ¶ & "SQL gerado:" & ¶ & $$GeneratedSQL ]
Possível DDL armazenado em $$ProductsOrdersDDL:
CRIAR TABELA "Produtos" (
"ProductID" int, /*Chave primária que identifica exclusivamente um produto*/
"ProductName" varchar(255), /*Nome descritivo do produto*/
"Preço" int, /*Preço do produto em USD*/
CHAVE PRIMÁRIA (ProductID)
);
CRIAR TABELA "Pedidos" (
"OrderID" int, /*Chave primária que identifica exclusivamente um pedido*/
"ProductID" int, /*Chave estrangeira para um relacionamento de muitos para um com a tabela Produtos*/
"Quantidade" int, /*Quantidade do produto no pedido*/
CHAVE PRIMÁRIA (OrderID),
CHAVE ESTRANGEIRA (ProductID) REFERÊNCIAS Products(ProductID)
);
Possível instrução SQL armazenada em $$GeneratedSQL:
SELECIONAR SOMA("Quantidade" * "Preço") COMO "TotalValue" DE "Pedidos" UNIR "Produtos" EM "Pedidos"."ProductID" = "Produtos"."ProductID" ONDE "Pedidos"."ProductID" = 101