カテゴリ:

文字列とバイナリ関数 (大規模言語モデル)

COMPLETE (SNOWFLAKE.CORTEX)(マルチモーダル)

重要

この関数は廃止予定です。更新された関数については、 AI_COMPLETE をご参照ください。Snowflakeはこの関数を引き続きサポートしていますが、最適な体験のためには更新された関数を使用してください。

画像とプロンプトを指定すると、言語モデルを使用して応答(補完)を生成します。この関数バリアントは、テキストモデルとともに画像モデルをサポートし、Snowflake内部ステージまたは外部ステージに保存された画像を処理します。COMPLETE を使用して、単一の画像を処理したり、バッチ方式で複数の画像を処理したり、各画像に同じプロンプトまたは異なるプロンプトを適用したり、単一の操作(たとえば比較)で複数の画像を処理したりすることができます。

構文

次のいずれかを使用します。

SNOWFLAKE.CORTEX.COMPLETE(
    '<model>', '<prompt>', <file_object>)
FROM <table>
Copy
SNOWFLAKE.CORTEX.COMPLETE(
    '<model>', <prompt_object> )
FROM <table>
Copy

引数

model

使用するモデルを指定する文字列。以下のモデルのいずれかを指定してください。

  • claude-3-5-sonnet

  • pixtral-large

サポートされているモデルは、コストやコンテキストウィンドウが異なる場合があります。新しいモデルが随時追加される可能性があります。

prompt

画像に関する質問を含む文字列で、 JSON のような出力形式を指定することもできます。これか prompt_object 引数のどちらかが必要です。

prompt_object

SQL OBJECT は文字列プロンプトで、番号付きのプレースホルダー({0}{1} など)と、プロンプトに挿入される1つ以上のテキストまたは FILE の値を含んでいます。 PROMPT 関数 関数は、必要なレイアウトのオブジェクトを作成する便利な方法です。この引数か prompt のどちらかが必要です。

file_object

処理する画像ファイルを含む FILE オブジェクト。 TO_FILE 関数を使用して、ステージパスから FILE オブジェクトを作成します。文字列プロンプトを使用する場合は必須です。

FROM table

画像パスと各画像のプロンプトを含むオプションのテーブル。 COMPLETE を1回呼び出すだけで、画像をバッチ処理することができます。

戻り値

言語モデルの応答を含む文字列。

使用上の注意

  • 複数の画像を処理するには、プロンプトはプロンプトテンプレートと処理するファイルを指定したオブジェクト(通常は 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年の予想インフレ率のグラフ

2023年と2024年のインフレ率の比較(Statista)

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

応答:

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.

画像分類

この例では、1つの画像で識別されたランドマークを分類します。

シアトルのスペースニードルと子犬の写真
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'));
Copy

応答:

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

応答:

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

次に、 FILE オブジェクトを含む列に COMPLETE 関数を適用します。次の例は、テーブル内の各画像を分類しています。

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

このように、ステージのディレクトリから直接処理される画像を取得することもできます。

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

テーブル内で画像とプロンプトを提供

テーブル内で各画像に対して異なる操作を実行するには、テーブル内の画像とそれに対応するプロンプトを提供します。以下の例では、 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;
Copy