大型语言模型 (LLM) 函数 (Snowflake Cortex)¶
Snowflake Cortex 让您可以即时访问行业中先进的大型语言模型 (LLMs),这些模型由 Mistral、Reka、Meta 和 Google 等公司的研究人员进行训练,其中包括 Snowflake Arctic,它是 Snowflake 开发的开放式企业级模型。
由于这些 LLMs 完全由 Snowflake 托管和管理,因此无需设置即可使用它们。您的数据保留在 Snowflake 中,为您提供期望的性能、可扩展性和治理。
可用函数¶
Snowflake Cortex 功能以 SQL 函数的形式提供,而且也可用于 Python 中。Cortex LLM 函数可以分为以下几类:
COMPLETE 函数¶
COMPLETE 函数是一个通用函数,可以执行各种用户指定的任务,例如基于方面的情感分类、合成数据生成和自定义摘要。Cortex Guard 是 COMPLETE 函数中的一个可用安全参数,用于从语言模型中过滤可能的不安全和有害响应。您也可以将此函数用于微调模型。
特定于任务的函数¶
特定于任务的函数是专门构建和管理的函数,可以自动执行日常任务,如简单的摘要和快速翻译,不需要任何自定义。
CLASSIFY_TEXT:在给定一段文本的情况下,将其分类到您定义的类别。
EXTRACT_ANSWER:在给定问题和非结构化数据的情况下,如果可以在数据中找到该问题的答案,则返回该问题的答案。
PARSE_DOCUMENT:给定一个包含文档的内部或外部暂存区,返回一个对象,其中包含一个 JSON 格式的字符串,以及使用 OCR 模式提取的文本内容,或使用 LAYOUT 模式提取的文本和布局元素。
SENTIMENT:返回一个从 -1 到 1 的情绪分数,表示在给定文本中检测到的正面或负面情绪。
SUMMARIZE:返回给定文本的摘要。
TRANSLATE:将给定文本从任何受支持的语言翻译成任何其他语言。
EMBED_TEXT_768:在给定一段文本的情况下,返回一个表示该文本的 768 维 向量嵌入。
EMBED_TEXT_1024:在给定一段文本的情况下,返回一个表示该文本的 1024 维 向量嵌入。
辅助函数¶
辅助函数是专门构建和管理的函数,用于减少运行其他 LLM 函数时的故障情况,例如通过获取输入提示中的词元计数来确保调用不超过模型限制。
COUNT_TOKENS:在给定输入文本的情况下,根据指定的模型或 Cortex 函数返回词元计数。
TRY_COMPLETE:与 COMPLETE 函数类似,但在函数无法执行时返回 NULL,而不是返回错误代码。
所需权限¶
SNOWFLAKE 数据库中的 CORTEX_USER 数据库角色包含了允许用户调用 Snowflake Cortex LLM 函数的权限。默认情况下,CORTEX_USER 角色被授予给 PUBLIC 角色。PUBLIC 角色会自动授予给所有用户和角色,从而允许您账户中的所有用户使用 Snowflake Cortex LLM 函数。
如果您不希望所有用户都拥有此权限,则可以撤消对 PUBLIC 角色的访问权限,并授予对特定角色的访问权限。
要从 PUBLIC 角色中撤消 CORTEX_USER 数据库角色,请使用 ACCOUNTADMIN 角色运行以下命令:
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE PUBLIC;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE PUBLIC;
然后,您可以有选择地提供对特定角色的访问权限。不能直接向用户授予 SNOWFLAKE.CORTEX_USER 数据库角色。有关更多信息,请参阅 使用 SNOWFLAKE 数据库角色。具有 ACCOUNTADMIN 角色的用户可以将此角色授予自定义角色,以允许用户访问 Cortex LLM 函数。在以下示例中,使用 ACCOUNTADMIN 角色,并通过您为此目的创建的账户角色 cortex_user_role
向用户 some_user
授予 CORTEX_USER 数据库角色。
USE ROLE ACCOUNTADMIN;
CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;
GRANT ROLE cortex_user_role TO USER some_user;
您还可以通过特定用户组通常使用的现有角色,授予对 Snowflake Cortex LLM 函数的访问权限。(请参阅 用户角色。)例如,如果您创建了一个 analyst
角色(它被组织中的分析师用作默认角色),则可以使用一条 GRANT 语句,轻松地向这些用户授予对 Snowflake Cortex LLM 函数的访问权限。
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
可用性¶
Snowflake Cortex LLM 函数目前在以下区域可用。要从未列出的区域访问 LLMs,请使用 跨区域推理参数。
备注
TRY_COMPLETE 函数在相同区域以 COMPLETE 形式提供。
COUNT_TOKENS 函数在所有区域可用,但模型推理针对特定区域,如表所示。
函数
(模型)
|
AWS US 西部 2
(俄勒冈)
|
AWS US 东部 1
(弗吉尼亚北部)
|
AWS 欧洲中部 1
(法兰克福)
|
AWS 欧洲西部 1
(爱尔兰)
|
AWS AP 东南部 2
(悉尼)
|
AWS AP 东北部 1
(东京)
|
Azure 东部 US 2
(弗吉尼亚)
|
Azure 西欧
(荷兰)
|
---|---|---|---|---|---|---|---|---|
COMPLETE
(
llama3.2-1b ) |
✔ |
|||||||
COMPLETE
(
llama3.2-3b ) |
✔ |
|||||||
COMPLETE
(
llama3.1-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
COMPLETE
(
llama3.1-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.1-405b ) |
✔ |
✔ |
✔ |
|||||
COMPLETE
(
snowflake-arctic ) |
✔ |
|||||||
COMPLETE
(
reka-core ) |
✔ |
|||||||
COMPLETE
(
reka-flash ) |
✔ |
✔ |
✔ |
|||||
COMPLETE
(
mistral-large2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mixtral-8x7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mistral-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
jamba-instruct ) |
✔ |
✔ |
✔ |
|||||
COMPLETE
(
jamba-1.5-mini ) |
✔ |
✔ |
✔ |
|||||
COMPLETE
(
jamba-1.5-large ) |
✔ |
|||||||
COMPLETE
(
gemma-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
anthropic.claude-3-5-sonnet-20241022-v2 ) |
即将推出 |
|||||||
EMBED_TEXT_768
(
e5-base-v2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
nv-embed-qa-4 ) |
✔ |
|||||||
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
voyage-multilingual-2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
CLASSIFY_TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
以下 Snowflake Cortex LLM 函数目前在以下扩展区域可用。
函数
(模型)
|
AWS US 东部 2
(俄亥俄)
|
AWS CA 中部 1
(中部)
|
AWS SA 东部 1
(圣保罗)
|
AWS 欧洲西部 2
(伦敦)
|
AWS 欧洲中部 1
(法兰克福)
|
AWS 欧洲北部 1
(斯德哥尔摩)
|
AWS AP 东北部 1
(东京)
|
AWS AP 南部 1
(孟买)
|
AWS AP 东南部 2
(悉尼)
|
AWS AP 东南部 3
(雅加达)
|
Azure 中南部 US
(德克萨斯)
|
Azure UK 南部
(伦敦)
|
Azure 北欧
(爱尔兰)
|
Azure 瑞士北部
(苏黎世)
|
Azure 印度中部
(浦那)
|
Azure 日本东部
(东京、琦玉)
|
Azure 东南亚
(新加坡)
|
Azure 澳大利亚东部
(新南威尔士)
|
GCP 欧洲西部 2
(伦敦)
|
GCP 欧洲西部 4
(荷兰)
|
GCP US 中部 1
(爱荷华)
|
GCP US 东部 4
(弗吉尼亚北部)
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
下表列出了旧版模型。如果您刚刚开始使用,请先从前述表中的模型开始:
函数
(模型)
|
AWS US 西部 2
(俄勒冈)
|
AWS US 东部 1
(弗吉尼亚北部)
|
AWS 欧洲中部 1
(法兰克福)
|
AWS 欧洲西部 1
(爱尔兰)
|
AWS AP 东南部 2
(悉尼)
|
AWS AP 东北部 1
(东京)
|
Azure 东部 US 2
(弗吉尼亚)
|
Azure 西欧
(荷兰)
|
---|---|---|---|---|---|---|---|---|
COMPLETE
(
llama2-70b-chat ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
llama3-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
COMPLETE
(
llama3-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
mistral-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
成本注意事项¶
备注
根据处理的页面数量进行调整的 PARSE_DOCUMENT 计费预计将会很快推出。
Snowflake Cortex LLM 函数根据处理的词元数产生计算成本。请参阅 Snowflake 服务使用表,以了解每个函数的每百万个词元消耗的 credit 成本。
词元是 Snowflake Cortex LLM 函数处理的最小文本单位,大约等于四个字符。原始输入或输出文本与词元的等价性可能因模型而异。
对于在响应中生成新文本的函数(COMPLETE、CLASSIFY_TEXT、SUMMARIZE 和 TRANSLATE),输入和输出词元都会统计在内。
对于 CORTEX GUARD,仅统计输入词元。输入词元的数量基于 COMPLETE 函数中使用的每个 LLM 模型的输出词元的数量。
对于 EMBED_TEXT_* 函数,仅统计输入词元。
对于仅从输入中提取信息的函数(EXTRACT_ANSWER 和 SENTIMENT),仅输入词元计数。
对于 EXTRACT_ANSWER,可计费词元的数量是
from_text
和question
字段中的词元数量之和。SUMMARIZE、TRANSLATE、EXTRACT_ANSWER、CLASSIFY_TEXT 和 SENTIMENT 会向输入文本添加提示,以生成响应。因此,输入词元计数略高于您提供的文本中的词元数。
TRY_COMPLETE 不会产生错误处理成本。这意味着如果 TRY_COMPLETE 函数返回 NULL,则不会产生任何成本。
COUNT_TOKENS 只会产生运行函数的计算成本。不会产生额外的词元成本。
Snowflake 建议在使用较小仓库(不大于 MEDIUM)的情况下执行调用 Snowflake Cortex LLM 函数或 Cortex PARSE_DOCUMENT 函数的查询,因为较大的仓库不会提高性能。在执行调用 Snowflake Cortex LLM 函数的查询时,与保持仓库活动相关的成本将继续适用。有关计算成本的一般信息,请参阅 了解计算成本。
跟踪 AI 服务的成本¶
要跟踪账户中用于 AI 服务(包括 LLM 函数)的 credit,请使用 METERING_HISTORY 视图:
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE SERVICE_TYPE='AI_SERVICES';
跟踪 LLM 函数的 credit 使用量¶
要查看每个 LLM 函数调用的 credit 和词元使用量,请使用 CORTEX_FUNCTIONS_USAGE_HISTORY 视图:
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
使用量配额¶
为确保所有 Snowflake 客户都可以访问 LLM 功能,Snowflake Cortex LLM 函数在高使用率期间可能会受到限流。使用量配额不会在账户级别应用。
受到限流的请求将收到一个 错误响应,并应稍后重试。
备注
没有有效支付方式的按需 Snowflake 账户(例如试用账户)在使用 Snowflake Cortex LLM 函数方面会受到限制,即每天只能使用大约一个 credit。要取消此限制,请 将试用账户转为付费账户。
管理成本和限流¶
在调用 Snowflake Cortex LLM 函数时,Snowflake 建议使用不大于 MEDIUM 的仓库。使用不必要的较大仓库不会提高性能,但可能会导致不必要的成本和更高的限流风险。由于产品更新在即,此建议将来可能不适用。
模型限制¶
Snowflake Cortex 使用的模型具有大小限制,如下表所述。大小以词元数指定。词元通常表示大约四个字符的文本,因此限制对应的单词数小于词元数。超过限制的输入将导致错误。
重要
在 AWS AP 东南 2(悉尼)区域,以下模型的上下文窗口为 4000:
COMPLETE 函数的
llama3-8b
和mistral-7b
。SUMMARIZE 函数的 Snowflake 托管模型。
在 AWS 爱尔兰区域,llama3.1-8b
的上下文窗口为 16,384。
函数 |
模型 |
上下文窗口(词元) |
---|---|---|
COMPLETE |
|
4,096 |
|
32,000 |
|
|
128,000 |
|
|
100,000 |
|
|
32,000 |
|
|
256,000 |
|
|
256,000 |
|
|
256,000 |
|
|
32,000 |
|
|
4,096 |
|
|
8,000 |
|
|
8,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
128,000 |
|
|
32,000 |
|
|
8,000 |
|
EMBED_TEXT_768 |
|
512 |
|
512 |
|
EMBED_TEXT_1024 |
|
512 |
|
512 |
|
|
32,000 |
|
CLASSIFY_TEXT |
Snowflake 托管模型 |
128,000 |
EXTRACT_ANSWER |
Snowflake 托管模型 |
2,048(对于文本)
64(对于问题)
|
SENTIMENT |
Snowflake 托管模型 |
512 |
SUMMARIZE |
Snowflake 托管模型 |
32,000 |
TRANSLATE |
Snowflake 托管模型 |
4,096 |
选择模型¶
Snowflake Cortex COMPLETE 函数支持多种不同功能、延迟和成本的模型。 这些模型经过精心挑选,符合常见的客户用例。要实现最佳的 每 credit 性能,请选择与任务的内容大小和复杂性正确匹配的模型。以下是可用模型的简要概述。
大型模型¶
如果不确定从哪里开始,请先尝试功能最强大的模型,以建立基准来评估其他模型。reka-core
和 mistral-large2
是 Snowflake Cortex 提供的最强大的模型,将让您很好地了解先进的模型可以做什么。
reka-core
是 Reka AI 先进的大型语言模型,具有较强的推理能力、代码生成能力和多语种流利度。mistral-large2
是 Mistral AI 先进的大型语言模型,具有极强的推理能力。与mistral-large
相比,它在代码生成、数学、推理方面的能力要强得多,并提供更强大的多语言支持,非常适合需要大量推理能力或高度专业化的复杂任务,例如合成文本生成、代码生成和多语言文本分析。llama3.1-405b
是来自 Meta 的llama3.1
模型系列的开源模型,具有 128000 的大型上下文窗口。它在长文档处理、多语言支持、合成数据生成和模型提取方面表现出色。
中型模型¶
llama3.1-70b
是一种开源模型,具有先进的性能,非常适合聊天应用程序、内容创建和企业应用程序。它是一种高性能、高性价比的模型,可通过 128000 的上下文窗口实现各种用例。llama3-70b
仍然受支持,且具有 8000 的上下文窗口。snowflake-arctic
是 Snowflake 侧重于企业的一流 LLM。Arctic 擅长执行企业任务,例如 SQL 生成、编码和指令遵循基准测试。reka-flash
是一种功能强大的多语种语言模型,针对需要高质量的快速工作负载进行了优化,例如编写产品描述或博客文章、编码以及从数百页的文档中提取答案。mixtral-8x7b
非常适合文本生成、分类和问答用途。Mistral 模型针对低延迟和低内存要求进行了优化,从而能为企业用例带来更高吞吐量。jamba-Instruct
模型由 AI21 实验室构建,可有效满足企业需求。它经过优化,可提供一个 256000 的词元上下文窗口,具有低成本和低延迟特性,使其成为对冗长文档和广泛知识库进行总结、问答和实体提取等任务的理想选择。AI21 Jamba 1.5 系列模型是符合基础模型的先进混合型 SSM Transformer 指令。上下文长度为 256000 的
jamba-1.5-mini
和jamba-1.5-large
支持结构化输出 (JSON) 和有根据的生成等用例。
小型模型¶
llama3.2-1b
和llama3.2-3b
模型支持上下文长度为 128000 的词元,并且在摘要、指令遵循和重写任务等用例方面是同类产品中的佼佼者。Llama 3.2 模型提供多语言功能,支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。llama3.1-8b
非常适合需要中低等推理的任务。它是一个轻量级、超快速模型,具有 128000 的上下文窗口。llama3-8b
和llama2-70b-chat
仍然是受支持的模型,可以提供较小的上下文窗口,以及相对较低的准确度。mistral-7b
非常适合需要快速完成的最简单的摘要、结构化和问答任务。它通过其 32000 上下文窗口为多页文本提供低延迟和高吞吐量处理。gemma-7b
适用于简单的代码和文本完成任务。它提供 8,000 个词元的上下文窗口,但在该限制内功能惊人强大,而且成本效益极高。
下表介绍了常见模型在各种基准测试中的表现,包括 Snowflake Cortex COMPLETE 提供的模型和其他一些常见模型。
模型 |
上下文窗口
(词元)
|
MMLU
(推理)
|
HumanEval
(编码)
|
GSM8K
(算术推理)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
GPT 4.o (https://openai.com/index/hello-gpt-4o/)* |
128,000 |
88.7 |
90.2 |
96.4 |
- |
llama3.1-405b (https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/MODEL_CARD.md) |
128,000 |
88.6 |
89 |
96.8 |
- |
reka-core (https://arxiv.org/pdf/2404.12387) |
32,000 |
83.2 |
76.8 |
92.2 |
- |
llama3.1-70b (https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/MODEL_CARD.md) |
128,000 |
86 |
80.5 |
95.1 |
- |
mistral-large2 (https://mistral.ai/news/mistral-large-2407/) |
128,000 |
84 |
92 |
93 |
- |
mistral-large (https://mistral.ai/news/mistral-large/) |
32,000 |
81.2 |
45.1 |
81 |
81 |
reka-flash (https://arxiv.org/pdf/2404.12387) |
100,000 |
75.9 |
72 |
81 |
- |
llama3.1-8b (https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/MODEL_CARD.md) |
128,000 |
73 |
72.6 |
84.9 |
- |
mixtral-8x7b (https://mistral.ai/news/mixtral-of-experts/) |
32,000 |
70.6 |
40.2 |
60.4 |
- |
llama-2-70b-chat (link removed) |
4,096 |
68.9 |
30.5 |
57.5 |
- |
jamba-instruct (https://www.ai21.com/jamba) |
256,000 |
68.2 |
40 |
59.9 |
- |
jamba-1.5-mini (link removed) |
256,000 |
69.7 |
- |
75.8 |
- |
jamba-1.5-large (link removed) |
256,000 |
81.2 |
- |
87 |
- |
4,096 |
67.3 |
64.3 |
69.7 |
79 |
|
llama3.2-1b (https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md) |
128,000 |
49.3 |
- |
44.4 |
- |
llama3.2-3b (https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md) |
128,000 |
69.4 |
- |
77.7 |
- |
gemma-7b (link removed) |
8,000 |
64.3 |
32.3 |
46.4 |
- |
mistral-7b (https://mistral.ai/news/announcing-mistral-7b/) |
32,000 |
62.5 |
26.2 |
52.1 |
- |
GPT 3.5 Turbo* |
4,097 |
70 |
48.1 |
57.1 |
- |
*仅供比较;在 Snowflake Cortex COMPLETE 中不可用。
LLM 函数概览¶
Cortex LLM 函数可以分为以下几类:
COMPLETE 函数:通用函数,可以执行各种用户指定的任务,例如基于方面的情感分类、合成数据生成和自定义摘要。您也可以将此函数用于 微调模型。
任务特定函数:专门构建和管理的函数,可为文本分类、情感和翻译等常规任务提供高质量结果,无需您优化提示。
辅助函数:专门构建和管理的函数,用于减少运行其他 LLM 函数时的故障情况,例如通过获取输入提示中的词元计数来确保调用不超过模型限制。
COMPLETE¶
在给定提示的情况下,指令遵循 COMPLETE 函数使用您选择的语言模型生成响应。在最简单的用例中,提示是一个字符串。您还可以为交互式聊天风格的用途提供包含多个提示和响应的对话,在这种形式的函数中,您还可以指定超参数选项来自定义输出的样式和大小。为了实施安全措施,还可以启用 Cortex Guard 参数来筛选 LLM 中的潜在不安全和有害响应。
为实施安全措施,您可以启用 Cortex Guard 参数,筛选 LLM 中的安全和有害响应。
COMPLETE 函数支持以下模型。不同的模型可以有不同的 成本。
gemma-7b
jamba-1.5-mini
jamba-1.5-large
jamba-instruct
llama2-70b-chat
llama3-8b
llama3-70b
llama3.1-8b
llama3.1-70b
llama3.1-405b
llama3.2-1b
llama3.2-3b
mistral-large
mistral-large2
mistral-7b
mixtral-8x7b
reka-core
reka-flash
snowflake-arctic
请参阅 COMPLETE (SNOWFLAKE.CORTEX),以了解语法和示例。
Cortex Guard¶
Cortex Guard 是 COMPLETE 函数中的一个可用安全参数,用于从语言模型中过滤可能的不安全和有害响应。Cortex Guard 目前采用 Meta 的 Llama Guard 3 构建。Cortex Guard 的工作原理是在将输出返回给应用程序之前,先评估语言模型的响应。激活 Cortex Guard 后,系统就会过滤可能与暴力犯罪、仇恨、性内容、自我伤害等相关的语言模型响应。有关语法和示例,请参阅 COMPLETE (SNOWFLAKE.CORTEX) 实参部分。
备注
使用 Cortex Guard 会根据 处理的输入词元 数量产生计算费用。
特定于任务的函数¶
特定于任务的函数由 Snowflake AI 团队管理,以提供高质量结果,无需您自行开发提示。在后台,Snowflake AI 团队可能会实施各种提示优化和微调,为每个任务提供高质量结果。特定于任务的函数具有易用性和效率,且不会影响质量。
CLASSIFY_TEXT¶
CLASSIFY_TEXT 函数将自由形式的文本分类到您提供的类别中。文本可以是纯英文字符串。
有关语法和示例,请参阅 CLASSIFY_TEXT (SNOWFLAKE.CORTEX)。
EMBED_TEXT_768¶
EMBED_TEXT_768 函数为给定的英语文本创建 768 维向量嵌入。要了解有关嵌入和向量比较函数的更多信息,请参阅 向量嵌入。
有关语法和示例,请参阅 EMBED_TEXT_768 (SNOWFLAKE.CORTEX)。
EMBED_TEXT_1024¶
EMBED_TEXT_1024 函数为给定文本创建 1024 维向量嵌入。要了解有关嵌入和向量比较函数的更多信息,请参阅 向量嵌入。
有关语法和示例,请参阅 EMBED_TEXT_1024 (SNOWFLAKE.CORTEX)。
EXTRACT_ANSWER¶
EXTRACT_ANSWER 函数从文本文档中提取给定问题的答案。文档可以是简单的英语文档,也可以是半结构化 (JSON) 数据对象的字符串表示形式。
有关语法和示例,请参阅 EXTRACT_ANSWER (SNOWFLAKE.CORTEX)。
PARSE_DOCUMENT¶
PARSE_DOCUMENT 函数从存储在内部暂存区或外部暂存区中的文档中提取文本或布局。
有关语法和示例,请参阅 PARSE_DOCUMENT (SNOWFLAKE.CORTEX)。
SENTIMENT¶
对于给定的英语输入文本,SENTIMENT 函数返回介于 -1 和 1 之间的情绪分数(其中 -1 表示最消极,1 表示最积极,接近 0 的值表示中性)。
有关语法和示例,请参阅 SENTIMENT (SNOWFLAKE.CORTEX)。
SUMMARIZE¶
SUMMARIZE 函数返回给定英语文本的摘要。
有关语法和示例,请参阅 SUMMARIZE (SNOWFLAKE.CORTEX)。
TRANSLATE¶
TRANSLATE 函数将文本从指定的或检测到的源语言翻译成目标语言。
有关语法和示例,请参阅 TRANSLATE (SNOWFLAKE.CORTEX)。
辅助函数¶
辅助函数是托管函数,旨在帮助减少运行其他 Cortex LLM 函数时的错误。
COUNT_TOKENS¶
COUNT_TOKENS 函数计算 COMPLETE 中指定的大型语言模型的提示,以及特定于任务的函数的输入文本中的词元数。
有关语法和示例,请参阅 COUNT_TOKENS (SNOWFLAKE.CORTEX)。
TRY_COMPLETE¶
TRY_COMPLETE 函数执行与 COMPLETE 函数相同的操作,但在无法执行操作时返回 NULL 而不是产生错误。
有关语法和示例,请参阅 TRY_COMPLETE (SNOWFLAKE.CORTEX)。
错误条件¶
Snowflake Cortex LLM 函数可能会生成以下错误消息。
消息 |
解释 |
---|---|
|
由于系统负载过大,请求被拒绝。请重试您的请求。 |
|
传递给函数的 |
|
超出了模型消耗预算。 |
|
指定的模型不存在。 |
|
指定的语言不受 TRANSLATE 函数支持。 |
|
请求超出了模型支持的最大词元数(请参阅 模型限制)。 |
|
由于使用率很高,请求已受到限流。请稍后再试。 |
|
指定的类别数量超出 CLASSIFY_TEXT 限制 |
|
指定的类型不受 CLASSIFY_TEXT 支持。 |
|
CLASSIFY_TEXT 的输入为空字符串或 null。 |
将 Snowflake Cortex LLM 函数与 Python 一起使用¶
Snowflake Cortex LLM 函数可用于 Snowpark ML 版本 1.1.2 及更高版本。请参阅 在本地使用 Snowflake ML,以了解有关设置 Snowpark ML 的说明。
如果在 Snowflake 之外运行 Python 脚本,则必须创建 Snowpark 会话才能使用这些函数。有关说明,请参阅 连接到 Snowflake。
以下 Python 示例演示了如何对单个值调用 Snowflake Cortex LLM 函数:
from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate, ClassifyText
text = """
The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""
print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
print(ClassifyText("France", ["Europe", "Asia"]))
您也可以对表列调用 LLM 函数,如下所示。此示例需要一个会话对象(存储在 session
中)和一个包含文本列 abstract_text
的表 articles
,并会创建一个新列 ``abstract_summary``(包含摘要的汇总)。
from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col
article_df = session.table("articles")
article_df = article_df.withColumn(
"abstract_summary",
Summarize(col("abstract_text"))
)
article_df.collect()
备注
高级聊天风格(多消息)形式的 COMPLETE 目前在 Python 中不受支持。
将 Snowflake Cortex LLM 函数与 Snowflake CLI 一起使用¶
Snowflake Cortex LLM 函数可用于 Snowflake CLI 版本 2.4.0 及更高版本。有关使用 Snowflake CLI 的更多信息,请参阅 隆重推出 Snowflake CLI。
以下示例说明了如何在单个值上使用 snow cortex
命令。-c
参数指定要使用的连接。
备注
高级聊天风格(多消息)形式的 COMPLETE 目前在 Snowflake CLI 中不受支持。
snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
snow cortex summarize "John has a car. John's car is blue. John's car is old and John is thinking about buying a new car. There are a lot of cars to choose from and John cannot sleep because it's an important decision for John."
snow cortex translate herb --to pl
也可以使用包含要用于命令的文本的文件。对于此示例,假设文件 about_cortex.txt
包含以下内容:
Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Mistral, Reka, Meta, and Google, including Snowflake Arctic, an open enterprise-grade model developed by Snowflake.
Since these LLMs are fully hosted and managed by Snowflake, using them requires no setup. Your data stays within Snowflake, giving you the performance, scalability, and governance you expect.
Snowflake Cortex features are provided as SQL functions and are also available in Python. The available functions are summarized below.
COMPLETE: Given a prompt, returns a response that completes the prompt. This function accepts either a single prompt or a conversation with multiple prompts and responses.
EMBED_TEXT_768: Given a piece of text, returns a vector embedding that represents that text.
EXTRACT_ANSWER: Given a question and unstructured data, returns the answer to the question if it can be found in the data.
SENTIMENT: Returns a sentiment score, from -1 to 1, representing the detected positive or negative sentiment of the given text.
SUMMARIZE: Returns a summary of the given text.
TRANSLATE: Translates given text from any supported language to any other.
然后,您可以通过使用 --file
参数传入文件名来执行 snow cortex summarize
命令,如下所示:
snow cortex summarize --file about_cortex.txt
Snowflake Cortex offers instant access to industry-leading language models, including Snowflake Arctic, with SQL functions for completing prompts (COMPLETE), text embedding (EMBED\_TEXT\_768), extracting answers (EXTRACT\_ANSWER), sentiment analysis (SENTIMENT), summarizing text (SUMMARIZE), and translating text (TRANSLATE).
有关这些命令的更多信息,请参阅 snow cortex commands。
法律声明¶
输入和输出的 Data Classification 如下表所示。
输入 Data Classification |
输出 Data Classification |
名称 |
---|---|---|
Usage Data |
Customer Data |
Covered AI Features [1] |
有关更多信息,请参阅 Snowflake AI 和 ML。