通过自然语言执行查找

向模型发送自然语言提示和当前布局上的字段列表,模型返回 FileMaker 查找请求,并执行查找。

选项 

  • 账户名称是此脚本步骤所使用的 AI 账户的文本表达式。在当前文件中,使用配置 AI 账户脚本步骤设置账户,并在此脚本步骤运行之前随时为其分配此名称。

  • 模型是要使用的文本生成模型的名称。将模型名称指定为文本表达式。有关支持的模型,请参阅 FileMaker 技术规格

  • 提示是用于发送给模型的自然语言请求或问题的文本表达式。

  • 获取指定要从模型中检索的回复类型。

    • 搜索结果:执行模型生成的查找请求,并更新当前窗口中的搜索结果。

    • JSON 形式的搜索结果:执行模型生成的查找请求,并将搜索结果的数据作为 JSON 对象返回。不会更改当前窗口中的搜索结果。

    • JSON 形式的查找请求:不执行查找。将模型生成的 FileMaker 查找请求作为 JSON 对象返回。

  • 提示模板名称指定使用配置提示模板脚本步骤配置的自定义提示模板的名称。此选项用于设计额外的提示,以帮助从 AI 模型获得最佳回复。

  • 参数是 JSON 对象的文本表达式,由模型提供商支持的其他参数的键值对组成。例如:{"温度": 0.7,“种子”:42}.有关受支持参数的键名称及其有效范围,请参阅模型提供商的文档。

    context_prompt 键是一个特殊参数,允许您在主提示之前向模型注入额外的指令或上下文。例如:{"context_prompt": "将 'today' 视为 06/26/2025"}

  • 回复目标指定要存储脚本步骤结果的字段或变量。

兼容性 

产品 是否支持
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
自定义 Web 发布

原始版本 

22.0

说明 

此脚本步骤允许您使用自然语言对数据执行 FileMaker 查找请求,而无需指定查找条件,如执行查找脚本步骤。它使用 AI 模型来解释自然语言提示,分析当前布局上可用的字段,并生成适当的 FileMaker 查找请求(以及排序顺序,如果适用)。

此脚本步骤和模型之间的交互通常遵循以下步骤:

  1. 此脚本步骤标识了当前布局上通过查找访问的所有字段。它将有关这些字段的信息(类似于 GetFieldsOnLayout函数的输出)与提示一起发送到指定的模型。(这包括可选提示模板和 context_prompt 参数中提供的提示。)

  2. 该模型分析提示和布局字段信息,然后生成 FileMaker 查找请求和排序顺序,旨在检索请求的记录。

  3. 此脚本步骤接收生成的查找请求和排序顺序。

  4. 脚本步骤根据获取选项执行操作。

获取选项决定了模型生成查找请求后会发生什么:

获取 执行操作

搜索结果

在当前布局上执行生成的查找请求,并在步骤 4 中更新搜索结果。如果模型生成了排序顺序,则搜索结果也会相应地进行排序。选择此选项时不使用回复目标

JSON 形式的搜索结果

执行生成的查找请求,并在步骤 4 中将生成的搜索结果的数据作为回复目标中的 JSON 对象返回。JSON 结构与通过 FileMaker 数据 API 执行的查找请求的回复相同。它包括搜索结果的数据、数据信息(如发现计数和总记录计数)以及任何消息(错误或警告)。请参阅下面的示例和执行 FileMaker Data API脚本步骤中的示例。

JSON 形式的查找请求

不执行查找。在步骤 4 中,将生成的 FileMaker 查找请求和排序顺序作为回复目标中的 JSON 对象返回。此选项主要用于调试,以准确查看模型生成的查找请求。JSON 结构类似于 FileMaker 数据 API 调用中用于执行查找请求的查询排序数组。请参阅下面的示例以及 FileMaker Data API 指南中的执行查找请求

注释 

  • 只有当前布局上可供查找访问的字段才会发送到模型。有关用于确定哪些字段可供查找访问的标准的更多信息,请参阅 GetFieldsOnLayout函数,该函数使用与本脚本步骤相同的标准。GetFieldsOnLayout 返回发送到模型的相同信息(布局名称、字段名称、类型和描述)。

  • 您在“管理数据库”对话框中输入的字段注释包含在发送到模型的字段信息中。为了提高模型生成实用查找请求的能力,可以使用注释来解释该字段的目的。请参阅定义和更改字段。有关控制哪些字段的注释发送到模型的更多信息,请参阅 GetFieldsOnLayout函数

  • 如果您指定提示模板名称,此脚本步骤将使用通过配置提示模板脚本步骤配置的模板。提示模板可以使用 :schema:(替换为布局字段信息)、:question:(替换为 Prompt)和:context:(替换为 Parameters 中的 context_prompt 参数)等常量。

  • 此脚本步骤可用于多语言发现,因为 AI 模型可以在多种语言上运行。

  • 当没有找到相关记录时,在回复目标(如有使用)中返回一条消息,Get (上一个错误)函数返回错误401(“没有与请求匹配的记录”)。

  • 此脚本步骤无法执行需要聚合函数的查找(例如,查找字段中值最大的记录)。但是,模型可能会返回包含排序标准的查找请求,以帮助识别此类记录(例如,按价格字段对记录进行降序排序)。

示例 1 

配置 AI 账户,进入“联系人”布局,然后使用此脚本步骤在当前布局中搜索名为“Alea”的联系人。此脚本步骤将当前布局上的可查找字段和提示“查找名为 Alea 的联系人”发送到模型。模型发送回查找请求(可能是“名称”字段中“Alea”的请求),此脚本步骤执行查找,更新当前窗口中的搜索结果。

复制
配置 AI 账户 [ 帐户名称: "my-account" ; 模型提供商: OpenAI ; API 密钥: "sk-..." ]

进入布局 [ "联系人" (联系人) ; 动画: 无 ]

通过自然语言执行查找 [ 账户名称: "my-account" ; 模型: "gpt-4o" ; 提示: "查找名为 Alea 的联系人" ; 获取: 搜索结果 ]

示例 2 

配置 AI 账户,提示用户进行查询,然后执行查找,并将 $$FoundSetData 变量中的结果集数据作为 JSON 返回。查询在当前布局上执行。

复制
配置 AI 账户 [ 账户名称: "my-account" ; 模型提供商: OpenAI ; API 密钥: "sk-..." ]

进入布局 [ "产品" (产品) ; 动画: 无 ]

显示自定义对话框 [ "查找产品:" ; $$UserPrompt ]

If [ not IsEmpty ( $$UserPrompt ) ]

    通过自然语言执行查找 [ 账户名称: "my-account" ; 模型: "gpt-4o" ; 提示: $$UserPrompt ; 获取: 搜索结果为 JSON ; 回复目标: $$FoundSetData ]
    
    显示自定义对话框 [ "搜索结果数据:" ; JSONFormatElements ( $$FoundSetData ) ]
    
End If

可能的输出存储在 $$FoundSetData 中(使用 JSONFormatElements 格式化),假设提示是“查找价格低于 6 的产品,并按价格降序排序”:

复制
{
    "消息"
    [
        {
            "代码" : "0",
            "消息" : "确定"
        }
    ],
    "回复"
    {
        "数据"
        [
            {
                "字段数据"
                {
                    "价格" : 5.99,
                    "产品 ID" : 107,
                    "产品名称" : "护目镜",
                    "状态" : "库存"
                },
                "模具 Id" : "0",
                "门户数据" : {},
                "记录 Id" : "61"
            },
            {
                "字段数据"
                {
                    "价格" : 5.5,
                    "产品 ID" : 122,
                    "产品名称" : "油灰刀",
                    "状态" : "库存"
                },
                "模具 Id" : "0",
                "门户数据" : {},
                "记录 Id" : "76"
            }
        ],
        "数据信息"
        {
            "数据库" : "订购系统",
            "找到计数" : 2,
            "布局" : "产品",
            "返回计数" : 2,
            "表格" : "产品",
            "记录总数" : 42
        }
    }
}

示例 3 

配置 AI 账户,然后配置自定义提示模板,该模板使用预定义的提示来查找请求。预定义的提示描述了查找请求的 JSON 格式,包括以下内容:使用以下信息作为上下文:\":context:\"

在进入产品布局并将 $$Today 变量设置为自然语言短语以供以后用于上下文后,此脚本步骤将提示模板中使用的 :context: 常量替换为参数context_prompt 键的值。然后,它将与提示“查找今天创建的按产品名称排序的记录”一起发送到模型。

该模型将查找请求作为 $$FindRequestJSON 变量中的 JSON 对象返回,您可以使用该变量进行调试。

复制
配置 AI 账户 [ 账户名称: "my-account" ; 模型提供商: OpenAI ; API 密钥: "sk-..." ]

配置提示模板 [ 模板名称: "FindToday" ; 模型提供商: OpenAI ; 模板类型: 查找请求 ; 查找请求提示: "生成并仅返回 JSON 布局查询以执行查找请求..." ]

进入布局 [ "产品" (产品) ; 动画: 无 ]

设置变量 [ $$Today ; 值: "今天是 " & Get ( 当前日期 ) ]

通过自然语言执行查找 [ 账户名称: "my-account" ; 模型: "gpt-4o" ; 提示: "查找今天创建的按产品名称排序的记录" ; 获取: 查找请求为 JSON ; 参数: JSONSetElement ( "{}" ; "context_prompt" ; $$Today ; JSONString ) ; 回复目标: $$FindRequestJSON ]

显示自定义对话框 [ "生成的查找请求" ; JSONFormatElements ( $$FindRequestJSON ) ]

可能的输出存储在 $$FindRequestJSON(使用 JSONFormatElements 格式化),假设当前日期为 06/26/2025,并且布局具有“创建日期”和“产品名称”字段:

复制
{
    "布局" : "产品",
    "查询"
    [
        {
            "产品::创建日期" : "06/26/2025"
        }
    ],
    "排序"
    [
        {
            "字段名称" : "产品::产品名称",
            "排序顺序" : "升序"
        }
    ]
}