- 类别:
:doc:`/sql-reference/functions-string`(大型语言模型)
COMPLETE (SNOWFLAKE.CORTEX)¶
在给出提示时,使用您选择的受支持语言模型生成响应(补全)。
语法¶
SNOWFLAKE.CORTEX.COMPLETE(
<model>, <prompt_or_history> [ , <options> ] )
实参¶
必填:
model
指定要使用的模型的字符串。这必须是以下值之一。
snowflake-arctic
mistral-large
reka-flash
reka-core
mixtral-8x7b
llama2-70b-chat
llama3-8b
llama3-70b
mistral-7b
gemma-7b
受支持的模型可能会产生不同的 费用。
prompt_or_history
用于生成补全的提示或对话历史记录。
如果
options
不存在,给出的提示必须是字符串。如果
options
存在,则实参必须是按时间顺序表示对话的对象的 数组。每个 对象 必须包含一个role
键和一个content
键。content
值是提示或响应,具体取决于角色。角色必须是以下项之一。
role
值
content
值
system
向语言模型提供的初始纯英文提示,为其提供响应风格的背景信息和说明。例如,“以海盗风格响应”。模型不会生成对系统提示的响应。只能提供一个系统提示,如果存在,则必须是数组中的第一个。
'user'
用户提供的提示。必须遵循系统提示(如果有)或助手响应。
'assistant'
之前由语言模型提供的响应。必须遵循用户提示。过去的响应可用于提供有状态的对话体验;请参阅 使用说明。
可选:
options
一个 对象,包含下列影响模型超参数的零个或多个选项。请参阅 LLM 设置 (https://www.promptingguide.ai/introduction/settings)。
temperature
:一个从 0 到 1(含)的值,用于控制语言模型输出的随机性。较高的温度(例如,0.7)会导致输出更加多样和随机,而较低的温度(例如 0.2)则会使输出更加确定和集中。top_p
:一个从 0 到 1(含)的值,用于控制语言模型的随机性和多样性,一般用作temperature
的替代项。不同的是,top_p
限制模型输出的可能令牌集,而temperature
影响每个步骤选择哪些令牌。max_tokens
:设置响应中输出令牌的最大数量。小值可能导致截断响应。
指定
options
实参(即使它是空对象 ({}
)),它会影响解释prompt
实参的方式和响应的格式。
返回¶
未指定 options
实参时,是一个字符串。
给出 options
实参时,是包含下列键的 JSON 对象的字符串表示形式。
"choices"
:模型响应的数组。(目前只提供一个响应。)每个响应都是一个包含"messages"
键的对象,其值为模型对最新提示的响应。"created"
:生成响应时的 UNIX 时间戳(自 1970 年 1 月 1 日午夜以来的秒数)。"model"
:创建响应的模型的名称。"usage"
:记录此补全所消耗和生成的令牌数的对象。包括以下子键:"completion_tokens"
:生成的响应中的令牌数。"prompt_tokens"
:提示中的令牌数。total_tokens"
:消耗的令牌总数,这是其他两个值的总和。
访问控制要求¶
用户必须使用已被授予 SNOWFLAKE.CORTEX_USER 数据库角色 的角色。有关此权限的更多信息,请参阅 所需权限。
使用说明¶
COMPLETE 不会保留从一个调用到下一个调用的任何状态。要使用 COMPLETE 函数提供有状态的对话式体验,请将对话中的所有先前用户提示和模型响应作为 prompt_or_history
数组的一部分进行传递。(请参阅 聊天模型模板 (link removed)。)请记住,每“轮”处理的令牌数量都会增加,费用也会按比例增加。
示例¶
单个响应¶
生成单个响应:
SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', 'What are large language models?');
来自表列的响应¶
以下示例从表的每一行生成响应(在本例中,content
是 reviews
表中的一列)。reviews
表包含名为 review_content
的列,其中包含用户提交的评论文本。查询返回对每个评论的评论。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'mistral-large',
CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
小技巧
如本例所示,您可以使用提示符中的标记来控制生成的响应类型。有关技巧,请参阅 提示 LLaMA 2 指南 (https://replicate.com/blog/how-to-prompt-llama)。
控制温度和令牌¶
此示例说明在单个响应中使用函数的 options
实参来控制推理超参数。请注意,在函数的这种形式中,提示必须以数组的形式提供,因为这种形式支持多个提示和响应。
SELECT SNOWFLAKE.CORTEX.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
}
}
示例:提供系统提示¶
此示例说明使用系统提示对电影评论进行情绪分析。这里的 prompt
实参是一个对象数组,每个对象都有一个适当的 role
值。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama2-70b-chat',
[
{'role': 'system', 'content': 'You are a helpful AI assistant. Analyze the movie review text and determine the overall sentiment. Answer with just \"Positive\", \"Negative\", or \"Neutral\"' },
{'role': 'user', 'content': 'this was really good'}
], {}
) as response;
响应是包含来自语言模型的响应和其他信息的 JSON 对象。
{
"choices": [
{
"messages": " Positive"
}
],
"created": 1708479449,
"model": "llama2-70b-chat",
"usage": {
"completion_tokens": 3,
"prompt_tokens": 64,
"total_tokens": 67
}
}
法律声明¶
请参阅 Snowflake AI 功能。