- カテゴリ:
- :doc:`/sql-reference/functions-string`(AI 関数) 
COMPLETE (SNOWFLAKE.CORTEX)¶
注釈
AI_COMPLETE はこの関数の最新バージョンです。最新の機能を使用するには、 AI_COMPLETE を使用してください。COMPLETE (SNOWFLAKE.CORTEX) は引き続き使用できます。
プロンプトを与えると、サポートされている言語モデルの中から選択したものを使用して応答(完了)を生成します。
注釈
この関数のバリアントにより、 COMPLETE は以下のような画像に対する応答を生成することができます。
- 画像の比較 
- 画像のキャプション作成 
- 画像の分類 
- 画像からのエンティティ抽出 
- グラフやチャートのデータを使った質問への回答 
詳細については、 COMPLETE (SNOWFLAKE.CORTEX)(マルチモーダル) をご参照ください。
構文¶
SNOWFLAKE.CORTEX.COMPLETE(
    <model>, <prompt_or_history> [ , <options> ] )
引数¶
必須:
- 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
 - サポートされるモデルでは、 コスト が異なる可能性があります。 
- prompt_or_history
- 完了を生成するために使用するプロンプトまたは会話履歴。 - optionsが存在しない場合、与えられたプロンプトは文字列である必要があります。- optionsが存在する場合、引数は、会話を時系列に表すオブジェクトの 配列 である必要があります。各 オブジェクト は、- roleキーと- contentキーを含んでいる必要があります。- content値は、ロールに応じてプロンプトまたは応答になります。ロールは次のいずれかにする必要があります。
role値
content値
'system'言語モデルに対する初期の平易な英語のプロンプトで、背景情報と応答スタイルの指示を与えます。たとえば、「海賊風に応答する」などです。モデルは、システムプロンプトに対して応答を生成しません。提供できるシステムプロンプトは1つだけで、その場合は配列の先頭にする必要があります。
'user'ユーザーによって提供されるプロンプト。システムプロンプト(ある場合)またはアシスタントの応答に従う必要があります。
'assistant'言語モデルによって以前に提供された応答。ユーザーのプロンプトに従う必要があります。以前の応答により、ステートフルな対話型体験を提供できます。使用上の注意 をご参照ください。
オプション:
- options
- モデルのハイパーパラメーターに影響を与える以下のオプションを0個以上を含む オブジェクト。LLM設定 をご参照ください。 - temperature: 言語モデルの出力のランダム性を制御する0から1まで(各値を含む)の値。温度が高いほど(例:0.7)出力はより多様でランダムになり、温度が低いほど(例:0.2)、出力はより決定論的で焦点が絞られます。- デフォルト:0 
- top_p: 言語モデルのランダム性と多様性を制御する0から1まで(各値を含む)の値。通常、- temperatureの代替として使用されます。相違は、- top_pがモデルにより出力される可能性のあるトークンのセットを制限するのに対して、- temperatureは各ステップでどのトークンが選択されるのかに影響を及ぼすという点です。- デフォルト:0 
- max_tokens: 応答に含まれる出力トークンの最大数を設定します。値が小さいと、応答が切り詰められることがあります。- デフォルト値:4096 最大許容値:8192 
- guardrails:Cortex Guard を使用して、言語モデルから潜在的に安全ではない、有害な応答をフィルターします。TRUE または FALSE のいずれか。- デフォルト: FALSE 
- response_format: 応答が従う必要がある JSON スキーマ。これは文字列ではなく、 SQL サブオブジェクトです。- response_formatが指定されない場合、応答は、応答か、応答とそれに関する情報を含むシリアル化された JSON オブジェクトのどちらかを含む文字列です。- 詳細については、 AI_COMPLETE 構造化出力 をご参照ください。 
 - options引数を指定すると、それが空のオブジェクト(- {})であっても、- prompt引数の解釈方法と応答のフォーマット方法に影響を及ぼします。
戻り値¶
options 引数が指定されていない場合は、応答を含む文字列を返します。
options 引数が指定され、このオブジェクトに response_format キーが含まれている場合、指定された JSON スキーマに従った JSON オブジェクトの文字列表現を返します。
options 引数が指定され、このオブジェクトが response_format キーを含んで いない 場合、以下のキーを含む JSON オブジェクトの文字列表現を返します。
- "choices": モデルの応答の配列。(現在、提供される応答は1つのみ。)各応答は- "messages"キーを含むオブジェクトで、その値は最新のプロンプトに対するモデルの応答です。
- "created": 応答が生成された UNIX タイムスタンプ(1970年1月1日午前0時からの秒数)。
- "model": 応答を作成したモデルの名前。
- "usage": この完了によって消費され、生成されたトークンの数を記録するオブジェクト。以下のサブキーを含みます。- "completion_tokens": 生成された応答のトークンの数。
- "prompt_tokens": プロンプトのトークンの数。
- "total_tokens": 他の値2つの合計である、消費されたトークンの合計数。
 
アクセス制御の要件¶
ユーザーは、 SNOWFLAKE.CORTEX_USER データベースロール が付与されているロールを使用する必要があります。この権限の詳細については、 必要な権限 をご参照ください。
使用上の注意¶
COMPLETE は、ある呼び出しから次の呼び出しまで状態を保持しません。ステートフルな対話型体験を提供するために COMPLETE 関数を使用するには、 prompt_or_history 配列の一部として、対話における以前のすべてのユーザープロンプトとモデル応答を渡します(チャットモデルのテンプレート をご参照ください)。各「ラウンド」ごとに処理されるトークンの数が増え、それに比例してコストも増加することに留意してください。
例¶
単一応答¶
単一応答を生成するには、
SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', 'What are large language models?');
テーブル列からの応答¶
次の例では、テーブルの各行から応答を生成します(この例では、 content は reviews テーブルの列)。reviews テーブルには review_content という列があり、ユーザーが投稿したレビューのテキストが格納されています。クエリは各レビューの評論を返します。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'openai-gpt-4.1',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Tip
この例で示すように、プロンプトのタグ付けを使用して、生成される応答の種類を制御することができます。ヒントについては、 LLaMA 2プロンプトのガイド をご参照ください。
温度およびトークンの制御¶
この例では、関数の options 引数を使用して、1つの応答で推論のハイパーパラメーターを制御しています。関数のこの形式では、複数のプロンプトと応答をサポートしているため、プロンプトは配列として提供される必要があります。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'claude-4-sonnet ',
    [
        {
            '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,
        "guardrail_tokens": 0,
        "total_tokens": 32
    }
}
安全性の管理¶
この例では、Cortex Guard guardrails 引数を使用して、言語モデルからの安全でない有害な応答をフィルターしています。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'mistral-large2',
    [
        {
            'role': 'user',
            'content': <'Prompt that generates an unsafe response'>
        }
    ],
    {
        'guardrails': true
    }
);
例えば、応答は JSON オブジェクトです。
{
    "choices": [
        {
            "messages": "Response filtered by Cortex Guard"
        }
    ],
    "created": 1718882934,
    "model": "mistral-7b",
    "usage": {
        "completion_tokens": 402,
        "prompt_tokens": 93,
        "guardrails _tokens": 677,
        "total_tokens": 1172
    }
}
システムプロンプトの提供¶
この例では、映画レビューの感情分析を提供するためのシステムプロンプトの使用を説明します。ここでの prompt 引数はオブジェクトの配列で、それぞれに適切な role 値があります。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama3.1-70b',
    [
        {'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
    }
}
法的通知¶
以下の注意事項は、Cortex COMPLETE 構造化出力機能のみに適用されます。
Snowflake Model and Service Flow-Down Terms ページで提供されるモデルの使用は、そこで指定される条件に従うものとします。インプットとアウトプットのデータ分類は以下の表の通りです。
| 入力データの分類 | 出力データの分類 | 指定 | 
|---|---|---|
| 使用データ | 顧客データ | 含まれている AI 機能 | 
その他の COMPLETE の機能については、 Snowflake AI と ML の法的通知をご参照ください。
制限事項¶
Snowflake Cortex関数は動的テーブルをサポートしていません。