- 类别:
:doc:`/sql-reference/functions-string`(大型语言模型)
AI_COMPLETE(提示对象)¶
备注
AI_COMPLETE 是 COMPLETE (SNOWFLAKE.CORTEX) 的更新版本。要获得最新功能,请使用 AI_COMPLETE。
为提示对象生成响应(补全)。提示对象引用包含文本或图像数据的一列或多列。
语法¶
该函数可以与位置或命名实参语法一起使用。
AI_COMPLETE(
<model>, <prompt> [ , <model_parameters> ] )
实参¶
model
指定要使用模型的字符串。对于纯文本输入,可以使用以下模型之一:
claude-4-opus
claude-4-sonnet
claude-3-7-sonnet
claude-3-5-sonnet
deepseek-r1
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
llama4-scout
mistral-large
mistral-large2
mistral-7b
mixtral-8x7b
openai-gpt-4.1
openai-o4-mini
reka-core
reka-flash
snowflake-arctic
snowflake-llama-3.1-405b
snowflake-llama-3.3-70b
- 对于图像输入,可以使用以下模型之一:
claude-4-opus
claude-4-sonnet
claude-3-7-sonnet
claude-3-5-sonnet
llama4-maverick
llama4-scout
openai-o4-mini
openai-gpt-4.1
pixtral-large
受支持的模型可能会产生不同的 费用。
prompt
包含文本和/或图像的 提示 对象
model_parameters
一个 对象,包含下列影响模型超参数的零个或多个选项。请参阅 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
。
重要
如果您将 AI_COMPLETE 与提示对象一起使用,则无法提供 JSON 架构来获取结构化输出作为响应。
要获得结构化输出作为响应,请使用带 AI_COMPLETE(单字符串) 的 response_format
参数。有关使用结构化输出的更多信息,请参阅 AI_COMPLETE 结构化输出。
示例¶
将多张图像作为输入传递¶
以下示例将两张图像作为输入传递给 AI_COMPLETE 函数,并询问两张图像是否都是猫的照片,从而比较这两张图像:
SELECT AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Are both image {0} and image {1} pictures of cats?',
TO_FILE('@myimages', 'sleepingcat.png'), TO_FILE('@myimages', 'jumpingcat.png'))) AS image_classification;
批量处理目录或表中的图像¶
要批量处理多个图像,对每个图像执行相同的操作,将图像文件存储在同一个暂存区。将 AI_COMPLETE 函数应用于表的每一行。
备注
该暂存区必须有一个 目录表 才能检索其文件的路径。
首先,通过从目录中检索图像位置,将其转换为 FILE 对象,并将生成的 FILE 对象存储在表列中来创建表。使用如下 SQL 语句:
CREATE TABLE image_table AS
(SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));
然后,将 AI_COMPLETE 函数应用于包含 FILE 对象的列。以下示例对表中的每张图像进行了分类:
SELECT AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON', img_file)) AS image_classification
FROM image_table;
响应:
{ "classification": "Inflation Rates" }
{ "classification": "beverage refrigerator" }
{ "classification": "Space Needle" }
{ "classification": "Modern Kitchen" }
{ "classification": "Pie Chart" }
{ "classification": "Economic Graph" }
{ "classification": "Persian Cat" }
{ "classification": "Labrador Retriever" }
{ "classification": "Jedi Cat" }
{ "classification": "Sleeping cat" }
{ "classification": "Persian Cat" }
{ "classification": "Garden Costume" }
{ "classification": "Floral Fashion" }
如果您已经有一个包含图像路径的表,则可以使用 TO_FILE 函数 在查询中构造 FILE 对象:
SELECT AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
TO_FILE('@myimages', img_path)) AS image_classification
FROM image_table;
您也可以直接从暂存区的目录中检索要处理的图像,如下所示:
SELECT AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
TO_FILE('@myimages', RELATIVE_PATH))) as image_classification
FROM DIRECTORY(@myimages);
在表中提供图像和提示¶
要对表中的每张图像执行不同的操作,请在表中提供图像及其相应提示。在以下示例中,该表包含 img_path
列中每张图像的暂存区路径以及 prompt
列中的提示。
AI_COMPLETE('claude-3-5-sonnet',
PROMPT('Given the input image {0}, {1}. Respond in JSON',
TO_FILE('@myimages', img_path), prompt) as image_result)
FROM image_table;
关于处理图像的使用说明¶
要处理多张图像,请在函数调用中指定一个提示对象,该对象定义提示模板和关联的图像文件。您可以使用 PROMPT 函数 函数来创建此对象。提示模板可以包含编号占位符(
{0}
、{1}
等),这些占位符对应于提示对象中的图像。仅支持文本和图像。不支持视频和音频文件。
支持的图像格式:
.jpg
.jpeg
.png
.gif
.webp
pixtral
和llama4
模型也支持.bmp
。
大多数模型的最大图像大小为 10 MB,
claude
模型的最大图像大小为 3.75 MB。claude
模型不支持分辨率高于 8000x8000 的图像。包含图像的暂存区必须启用服务器端加密。不支持客户端加密暂存区。
该函数不支持自定义网络策略。
暂存区名称不区分大小写;路径区分大小写。