- 类别:
:doc:`/sql-reference/functions-string`(大型语言模型)
TRY_COMPLETE (SNOWFLAKE.CORTEX)¶
执行与 COMPLETE 函数相同的操作,但会返回 NULL,而不是在无法执行该操作时引发错误。有关返回 NULL 的错误条件,请参阅 错误条件。
语法¶
SNOWFLAKE.CORTEX.TRY_COMPLETE( <model>, <prompt_or_history> [ , <options> ] )
实参¶
必填:
model
指定要使用模型的字符串。指定以下值之一。
claude-3-5-sonnet
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
llama3.3-70b
llama4-maverick
mistral-large
mistral-large2
mistral-7b
mixtral-8x7b
reka-core
reka-flash
snowflake-arctic
snowflake-llama-3.1-405b
snowflake-llama-3.3-70b
受支持的模型可能会产生不同的 费用。
prompt_or_history
用于生成补全的提示或对话历史记录。
如果
options
不存在,给出的提示必须是字符串。如果
options
存在,则实参必须是按时间顺序表示对话的对象的 数组。每个 对象 必须包含一个role
键和一个content
键。content
值是提示或响应,具体取决于角色。角色必须是以下项之一。
role
值
content
值
'system'
向语言模型提供的初始纯英文提示,为其提供响应风格的背景信息和说明。例如,“Respond in the style of a pirate.”。该模型不会根据系统提示生成回复。只能提供一个系统提示,如果存在,则必须是数组中的第一个。
'user'
用户提供的提示。必须遵循系统提示(如果有)或助手响应。
'assistant'
之前由语言模型提供的响应。必须遵循用户提示。过去的响应可用于提供有状态的对话体验;请参阅 使用说明。
可选:
options
一个 对象,包含下列影响模型超参数的零个或多个选项。请参阅 LLM 设置 (https://www.promptingguide.ai/introduction/settings)。
temperature
:一个从 0 到 1(含)的值,用于控制语言模型输出的随机性。温度越高(例如 0.7),输出就越多样和随机,而温度越低(例如 0.2),输出就越确定和集中。默认值:0
top_p
:一个从 0 到 1(含)的值,用于控制语言模型的随机性和多样性,t通常用作temperature
的替代项。不同的是,top_p
限制模型输出的可能令牌集,而temperature
影响每个步骤选择哪些令牌。默认值:0
max_tokens
:设置响应中输出令牌的最大数量。数值小会导致响应截断。默认值:4096。最大允许值:8192
guardrails
:使用 Cortex Guard 筛选来自语言模型的潜在不安全和有害的响应。TRUE 或 FALSE。默认:FALSE
response_format
:响应应遵循的 JSON 架构 (https://json-schema.org/)。这是 SQL 子对象,不是字符串。如果未指定response_format
,则响应是包含响应的字符串,或包含响应及其相关信息的序列化 JSON 对象。有关更多信息,请参阅 Cortex COMPLETE 结构化输出。
指定
options
实参(即使它是空对象 ({}
)),它会影响解释prompt
实参的方式和以及响应的格式。
返回¶
未指定 options
实参时,返回包含响应的字符串。
如果给定 options
实参,并且此对象包含 response_format
键,则返回符合指定 JSON 架构的 JSON 对象的字符串表示。
如果给定 options
实参,并且此对象 不 包含 response_format
键,则返回包含以下键的 JSON 对象的字符串表示。
"choices"
:模型响应的数组。(目前只提供一个响应。)每个响应都是一个包含"messages"
键的对象,其值为模型对最新提示的响应。"created"
:生成响应时的 UNIX 时间戳(自 1970 年 1 月 1 日午夜以来的秒数)。"model"
:创建响应的模型的名称。"usage"
:记录此补全所消耗和生成的令牌数的对象。包括以下子键:"completion_tokens"
:生成的响应中的令牌数。"prompt_tokens"
:提示中的令牌数。"total_tokens"
:消耗的令牌总数,这是其他两个值的总和。
访问控制要求¶
用户必须使用已被授予 SNOWFLAKE.CORTEX_USER 数据库角色 的角色。有关此权限的更多信息,请参阅 所需权限。
使用说明¶
TRY_COMPLETE 不会保留从一个调用到下一个调用的任何状态。要使用 TRY_COMPLETE 函数提供有状态的对话式体验,请将对话中的所有先前用户提示和模型响应作为 prompt_or_history
数组的一部分进行传递(请参阅 聊天模型模板 (link removed))。请记住,每“轮”处理的令牌数量都会增加,费用也会按比例增加。
示例¶
以下示例在各种用例中使用 TRY_COMPLETE 函数。
生成单个响应¶
生成单个响应:
SELECT SNOWFLAKE.CORTEX.TRY_COMPLETE('snowflake-arctic', 'What are large language models?');
控制温度和令牌¶
此示例说明在单个响应中使用函数的 options
实参来控制推理超参数。请注意,在函数的这种形式中,提示必须以数组的形式提供,因为这种形式支持多个提示和响应。
SELECT SNOWFLAKE.CORTEX.TRY_COMPLETE(
'llama2-70b-chat',
[
{
'role': 'user',
'content': 'how does a snowflake get its unique pattern?'
}
],
{
'temperature': 0.7,
'max_tokens': 10
}
);
响应是包含来自语言模型的消息和其他信息的 JSON 对象。请注意,响应按照 options
实参的指示截断。
{
"choices": [
{
"messages": " The unique pattern on a snowflake is"
}
],
"created": 1708536426,
"model": "llama2-70b-chat",
"usage": {
"completion_tokens": 10,
"prompt_tokens": 22,
"total_tokens": 32
}
}
有关其他示例,请参阅 COMPLETE (SNOWFLAKE.CORTEX) 参考。
法律声明¶
请参阅 Snowflake AI 和 ML。