- 类别:
:doc:`/sql-reference/functions-string`(大型语言模型)
COMPLETE (SNOWFLAKE.CORTEX) (multimodal)¶
备注
AI_COMPLETE 是此函数的最新版本。AI_COMPLETE 用于最新功能。您可以继续使用 COMPLETE (SNOWFLAKE.CORTEX)。
使用语言模型,为给定图像和提示生成响应(补全)。此函数变体支持图像模型和文本模型,并处理存储在内部 Snowflake 暂存区或外部暂存区中的图像。COMPLETE 可用于批量处理单个图像、多个图像、对每张图像应用相同或不同的提示,或者在单个操作(例如,比较)中应用多个图像。
语法¶
使用下列之一:
SNOWFLAKE.CORTEX.COMPLETE(
'<model>', '<prompt>', <file_object>)
FROM <table>
SNOWFLAKE.CORTEX.COMPLETE(
'<model>', <prompt_object> )
FROM <table>
实参¶
model
指定要使用模型的字符串。指定以下模型之一:
claude-3-5-sonnet
pixtral-large
支持的模型可能具有不同的成本和上下文窗口。可能会不时添加新模型。
prompt
一个字符串,包含有关图像的问题,并可选择指定输出格式,例如 JSON。此字段或
prompt_object
实参为必填项。prompt_object
SQL OBJECT 包含带编号占位符(
{0}
、{1}
等)的字符串提示以及插入到提示中的一个或多个文本或 FILE 值。PROMPT 函数 函数是创建具有所需布局的对象的便捷方式。此实参或prompt
为必填项。file_object
包含要处理的图像文件的 FILE 对象。使用 TO_FILE 函数从暂存区路径创建 FILE 对象。使用字符串提示时为必填项。
FROM table
一个可选表,其中包含图像路径和每个图像的可选提示,允许在一次调用中对图像进行批处理至 COMPLETE。
返回¶
包含语言模型响应的字符串。
使用说明¶
要处理多个图像,提示必须是一个对象(通常使用 PROMPT 函数创建),用于指定提示模板和要处理的文件。
仅支持文本和图像。不支持视频和音频文件。
支持文件扩展名为
.jpg
、.jpeg
、.png
、.gif
和.webp
的图像。pixtral-large
也支持.bmp
。pixtral-large
最大图像大小为 10 MB,claude-3-5-sonnet
最大图像大小为 3.75 MB。此外,claude-3-5-sonnet
不支持分辨率大于 8000x8000 的图像。包含图像的暂存区必须启用服务器端加密。不支持客户端加密暂存区。
该函数不支持自定义网络策略。
暂存区名称不区分大小写,但路径区分大小写。
示例¶
以下示例演示了带图像的 COMPLETE 函数的基本功能。
视觉问答¶
通货膨胀率图表用于回答有关数据的问题。

2023 年和 2024 年通货膨胀率的比较 (Statista (https://www.statista.com/))¶
SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
'Which country will observe the largest inflation change in 2024 compared to 2023?',
TO_FILE('@myimages', 'highest-inflation.png'));
响应:
Looking at the data, Venezuela will experience the largest change in inflation rates between 2023 and 2024.
The inflation rate in Venezuela is projected to decrease significantly from 337.46% in 2023 to 99.98% in 2024,
representing a reduction of approximately 237.48 percentage points. This is the most dramatic change among
all countries shown in the chart, even though Zimbabwe has higher absolute inflation rates.
图像分类¶
此示例对单个图像中识别的地标进行了分类。

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
'Classify the landmark identified in this image. Respond in JSON only with the landmark name.',
TO_FILE('@myimages', 'Seattle.jpg'));
响应:
{"landmark": "Space Needle"}
从图像中提取实体¶
此示例从图像中提取实体(对象)并以 JSON 格式返回结果。

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
'Extract the kitchen appliances identified in this image. Respond in JSON only with the identified appliances.',
TO_FILE('@myimages', 'kitchen.png'));
响应:
{
"appliances": [ "microwave","electric stove","oven","refrigerator" ]
}
批量处理目录或表中的图像¶
要批量处理多个图像,对每个图像执行相同的操作,将图像文件存储在同一个暂存区。将 COMPLETE 函数应用于表的每一行。
备注
该暂存区必须有一个 目录表 才能检索其文件的路径。
首先,通过从目录中检索图像位置,将其转换为 FILE 对象,并将生成的 FILE 对象存储在表列中来创建表。使用如下 SQL 语句:
CREATE TABLE image_table AS
(SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));
然后,将 COMPLETE 函数应用于包含 FILE 对象的列。以下示例对表中的每张图像进行了分类:
SELECT SNOWFLAKE.CORTEX.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 SNOWFLAKE.CORTEX.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 SNOWFLAKE.CORTEX.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
列中的提示。
SNOWFLAKE.CORTEX.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;
法律声明¶
请参阅 Snowflake AI 和 ML。