构建代理¶
您可以使用以下方法为 Snowflake Intelligence 构建代理:
在 Snowsight 中
使用 Cortex Agent SQL 命令
以下部分提供了有关如何使用 SQL 命令为 Snowflake Intelligence 构建代理的信息。每个部分都提供有关代理配置不同部分的信息。最后一部分显示了包含本主题中描述的所有组件的代理配置示例。
有关创建代理的其他方法和可用选项的更多信息,请参阅 Configure and interact with Agents。
代理结构¶
代理由以下部分组成:
为代理行为奠定基础的基础模型
解释意图、选择正确工具并规划操作序列的模型(协调器)
有关代理行为的说明
供代理使用的工具
工具的资源
以下部分提供有关模型选择和工具配置的信息。此示例使用语义视图、Cortex Search Service 和自定义工具来提供答案。尽管您可以创建不使用任何这些工具的基本代理,但该基本代理仅使用基本模型来提供答案。因此,该代理无法访问您的 Snowflake 账户中的数据,并且获得答案的背景有限。
有关代理的其他组件的信息,请参阅 Cortex Agents。
先决条件¶
要创建 Cortex Agent,必须使用具有以下权限的角色:
权限 |
对象 |
备注 |
|---|---|---|
CREATE AGENT |
架构 |
这是创建 Cortex 代理所必需的。 |
USAGE |
数据库、架构 |
在指定的数据库和架构中创建 Cortex Agent 时需要此权限。 |
以下代码授予创建 Cortex Agent 所需的权限:
除了创建 Cortex Agent 所需的权限外,将代理连接到特定工具还需要满足以下先决条件:
- 用于连接到代理的语义视图
有关创建语义视图的信息,请参阅 语义视图概述。
- 用于连接到代理的 Cortex Analyst 工具
有关创建 Cortex Analyst 工具的信息,请参阅 Cortex Analyst。
数据库中用于连接到代理的非结构化数据
- 用于连接到代理的 Cortex Search 工具
有关创建 Cortex Search 工具的信息,请参阅 Cortex Search。
- 用于连接到代理的自定义工具
有关创建用户定义函数 (UDFs) 和用作自定义工具的存储过程的信息,请参阅 使用函数和过程扩展 Snowflake。
要将工具附加到代理,用于创建代理的角色必须具有以下权限:
权限 |
对象 |
备注 |
|---|---|---|
USAGE |
Cortex Search Service |
将 Cortex Search Service 添加到 Cortex Agent 时需要此权限。 |
SELECT |
表/视图 |
访问代理的语义视图/模型中引用的对象时需要。 |
USAGE |
工具 |
访问所有要附加到代理的自定义工具时需要。例如,如果自定义工具是存储过程,则您必须对该过程具有 USAGE 权限。 |
USAGE |
语义视图/模型 |
访问要附加到代理的语义视图/模型时需要。 |
代理配置基础知识¶
创建代理时,必须指定有关代理的信息,例如名称、描述和模型。您还可以指定代理可以使用的工具以及代理可以访问的资源。这些资源作为 YAML 规范在 CREATE AGENT 命令的 FROM SPECIFICATION 子句中传递。
以下建议提供了此配置的最佳实践:
缩小代理范围: 在添加工具或编写指令之前,定义代理存在的原因、其服务对象以及它应回答的具体问题。这一步决定了后续的一切,从工具选择到性能和信任。Snowflake 建议您将代理的范围缩小到特定的高价值用例。
在代理证明其在某一领域可靠后,您可以为其他领域复制该模式。例如,您可以让一个代理分析商店最近的销售和营销数据,而让另一个代理推荐最适合向零售商推销的 SKUs。
仔细选择工具的数量: 每个代理都应该只能访问其需要的工具。要确定这一点,请考虑代理实现其目的所需的文件或数据。如果代理需要访问非结构化数据,请使用 Cortex Search。如果代理需要访问结构化数据,请使用 Cortex Analyst。如果代理需要其他工具,您可以使用自定义工具。
编写有用的工具描述: 这些描述用于帮助代理理解该工具的功能以及如何使用它。不清晰的工具描述可能会导致级联故障并产生“幻觉”。
要创建有用的工具描述,请遵循以下准则:
添加清晰且具体的工具名称,以明确工具的领域(“Customer”、“Sales”)和功能(“Analytics”、“Search”)。
编写以目的为导向的工具描述,告知代理:
该工具的用途
它访问哪些数据
何时使用
何时 NOT 使用
明确工具的预期输入。对工具的模糊输入会导致不正确的工具调用和错误。
具体明确。
指定数据格式。
提供清晰的数据说明。
提供默认指导。
使用一致的术语。
有关更多代理配置建议,请参阅 构建 Cortex Agent 的最佳实践。
模型选择¶
创建代理时,我们建议您为模型选择 auto。使用此选项,Cortex 会自动为您的账户选择最高质量的模型,并且随着新模型的推出,质量会自动提高。有关可用模型的更多信息,请参阅 支持的模型和区域。
以下示例演示如何为代理指定模型:
跨区域推理¶
重要
默认情况下,跨区域推理处于禁用状态。我们建议使用跨区域推理来访问完整的 LLMs,并避免单个区域内的限制。
使用本地区域不可用的模型时,必须使用 Cortex 跨区域推理。此设置允许在与默认区域不同的区域中处理推理请求。跨区域推理的参数只能在账户级别由 ACCOUNTADMIN 角色设置,而不能在用户或会话级别设置。
要设置参数,请使用以下命令:
有关配置 Cortex 跨区域推理的更多信息,请参阅 跨区域推理。
使用 Cortex Analyst 连接语义视图(结构化数据)¶
Snowflake Intelligence 支持语义视图,这是一种带有指令的结构化数据,用于告诉代理如何查询或解释数据。Cortex Agent 使用 Cortex Analyst 从语义视图中检索结构化数据,方法是将自然语言请求转换为 SQL 查询。代理可以在多个语义视图之间路由以提供响应。
每个语义视图都应涵盖一组相似的表。您可以设置特定于数据的默认值,例如:如果未指定,则始终添加过去三个月的日期筛选器,或者始终排除内部账户。
您可以通过将语义视图指定为工具资源的一部分,将其连接到代理。以下示例演示如何将语义视图连接到代理,以及如何指定 Cortex Analyst 工具从语义视图中检索结构化数据:
语义视图的最佳实践¶
语义视图为 Snowflake Intelligence 理解和查询数据提供支持。精心设计的语义视图可以提高准确性、减少延迟并建立用户信任。以下最佳实践旨在帮助您创建准确且高效的语义视图:
从小处着手,重点突出: 从单个业务域中的 5-10 个表开始。按用例(销售业绩、客户支持指标)而不是按数据结构进行组织。在验证准确性后再进行扩展。
编写清晰的描述: 描述是最重要的元素。每个表和列都应该有一个适合业务的描述,解释数据所代表的内容,而不仅仅是其名称。包括计算逻辑、业务定义和任何旧术语等上下文。
添加已验证的查询: 这些是将问题与经过验证的 SQL 配对的示例。它们可以提高类似问题的准确性,减少延迟,并帮助系统了解您的业务模式。从涵盖最常见问题的 10 到 20 个查询开始,然后根据实际使用情况添加更多查询。
定义指标和筛选器: 预定义可重复使用的计算(如总收入或平均订单价值)和常用条件(如活跃客户或当前会计年度)。这些可以显著提高一致性。
为业务逻辑使用自定义指令: 为数据特性、会计年度定义、默认筛选器或特定于域的规则添加 SQL 生成指令。具体说明:“如果未提供日期筛选器,则默认为过去 12 个月”比“按日期筛选”更好。
启用 Cortex Search 进行文本匹配: 对于高基数文本列(如产品名称、客户名称或公司名称),当用户输入与数据不完全匹配时,Cortex Search 会启用模糊匹配。
测试和迭代: 创建代表性问题的评估集,衡量准确性,并根据实际使用模式进行完善。定期查看建议,以便添加经过验证的查询并随着时间的推移改进描述。
有关创建语义视图的最佳实践的更多信息,请参阅 Cortex Analyst 中语义视图的最佳实践。
Connect Cortex Search(非结构化数据)¶
要处理非结构化数据,您可以通过在 YAML 规范中将 Cortex Search 工具指定为工具资源的一部分,将其连接到代理。Cortex Search 服务使用语义搜索从非结构化数据源中检索文档和记录。Cortex Search 的两个主要用例是检索增强生成 (RAG) 和企业搜索。有关创建 Cortex Search Service 的信息,请参阅 Cortex Search。您也可以使用与您共享的 Cortex Knowledge Extension (CKE)。
将 Cortex Search 工具连接到代理时,包含以下有关参数及其预期值的信息尤为重要:
类型和格式(包括示例)
是必填还是可选(含默认值)
有效值或约束(枚举、范围、格式)
与其他参数的关系(依赖关系、冲突)
如何获取值(尤其是针对 IDs)
以下示例演示了如何将 Cortex Search 工具连接到代理,以及如何在 YAML 规范中指定 Cortex Search 工具:
添加自定义工具¶
Snowflake Intelligence 支持自定义工具,这些工具是用户定义的函数或存储过程,可用于实现自定义业务逻辑。您可以通过在 YAML 规范中将自定义工具指定为工具资源的一部分,从而将其连接到代理。
以下示例展示了如何将自定义工具连接到代理,以及如何在 YAML 规范中指定该自定义工具:
创建代理¶
结合使用所有工具和组件,并使用 SQL 来创建代理:
修改现有代理¶
有关修改现有代理配置(包括添加工具及更新其他详细信息)的操作说明,请参阅 Add tools。