类别:

:doc:`/sql-reference/functions-string`(大型语言模型)

AI_COMPLETE(提示对象)

备注

AI_COMPLETE 是 COMPLETE (SNOWFLAKE.CORTEX) 的更新版本。要获得最新功能,请使用 AI_COMPLETE。

为提示对象生成响应(补全)。提示对象引用包含文本或图像数据的一列或多列。

语法

该函数可以与位置或命名实参语法一起使用。

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters> ] )
Copy

实参

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 筛选来自语言模型的潜在不安全和有害的响应。TRUEFALSE。默认值为 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;
Copy

批量处理目录或表中的图像

要批量处理多个图像,对每个图像执行相同的操作,将图像文件存储在同一个暂存区。将 AI_COMPLETE 函数应用于表的每一行。

备注

该暂存区必须有一个 目录表 才能检索其文件的路径。

首先,通过从目录中检索图像位置,将其转换为 FILE 对象,并将生成的 FILE 对象存储在表列中来创建表。使用如下 SQL 语句:

CREATE TABLE image_table AS
    (SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));
Copy

然后,将 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;
Copy

响应:

{ "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;
Copy

您也可以直接从暂存区的目录中检索要处理的图像,如下所示:

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);
Copy

在表中提供图像和提示

要对表中的每张图像执行不同的操作,请在表中提供图像及其相应提示。在以下示例中,该表包含 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;
Copy

关于处理图像的使用说明

  • 要处理多张图像,请在函数调用中指定一个提示对象,该对象定义提示模板和关联的图像文件。您可以使用 PROMPT 函数 函数来创建此对象。提示模板可以包含编号占位符({0}{1} 等),这些占位符对应于提示对象中的图像。

  • 仅支持文本和图像。不支持视频和音频文件。

  • 支持的图像格式:

    • .jpg

    • .jpeg

    • .png

    • .gif

    • .webp

    • pixtralllama4 模型也支持 .bmp

  • 大多数模型的最大图像大小为 10 MB,claude 模型的最大图像大小为 3.75 MB。claude 模型不支持分辨率高于 8000x8000 的图像。

  • 包含图像的暂存区必须启用服务器端加密。不支持客户端加密暂存区。

  • 该函数不支持自定义网络策略。

  • 暂存区名称不区分大小写;路径区分大小写。

语言: 中文