カテゴリ:

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

AI_COMPLETE (単一文字列)

注釈

AI_COMPLETE は COMPLETE (SNOWFLAKE.CORTEX) の更新されたバージョンです。最新の関数については、 AI_COMPLETE を使用してください。

サポートされている言語モデルを使用して、テキストプロンプトに対する応答(補完)を生成します。

構文

この関数には2つの必要な引数と4つのオプションの引数があります。この関数は、位置引数または名前付き引数の構文で使用することができます。

単一文字列入力での AI_COMPLETE の使用

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters>, <response_format>, <show_details> ] )
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-gpt4.1

  • openai-o4-mini

  • reka-core

  • reka-flash

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

サポートされるモデルでは、 コスト が異なる可能性があります。

prompt

文字列プロンプト

model_parameters

モデルのハイパーパラメーターに影響を与える以下のオプションを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 構造化出力 をご参照ください。

show_details

応答とその情報を含む JSON オブジェクトをシリアル化して返すかどうかを示すブールフラグ。

戻り値

show_details 引数が指定されていない、または FALSE に設定されている、および response_format が指定されていない、または NULL に設定されている場合、応答を含む文字列を返します。

show_details 引数が指定されていないか、 FALSE に設定されており、 response_format が指定されている場合、指定された応答形式に従ったオブジェクトを返します。

show_details 引数が TRUE に設定され、 response_format が指定されていない場合、以下のキーを含む JSON オブジェクトを返します。

  • "choices": モデルの応答の配列。(現在、提供される応答は1つのみ。)各応答は "messages" キーを含むオブジェクトで、その値は最新のプロンプトに対するモデルの応答です。

  • "created": 応答が生成された UNIX タイムスタンプ(1970年1月1日午前0時からの秒数)。

  • "model": 応答を作成したモデルの名前。

  • "usage": この完了によって消費され、生成されたトークンの数を記録するオブジェクト。以下のサブキーを含みます。

    • "completion_tokens": 生成された応答のトークンの数。

    • "prompt_tokens": プロンプトのトークンの数。

    • "total_tokens": 他の値2つの合計である、消費されたトークンの合計数。

show_details 引数が TRUE に設定され、 response_format を指定されている場合、以下のキーを含む JSON オブジェクトを返します。

  • "structured_output": 指定された応答形式に従っているJSONオブジェクト

  • "created": 応答が生成された UNIX タイムスタンプ(1970年1月1日午前0時からの秒数)。

  • "model": 応答を作成したモデルの名前。

  • "usage": この完了によって消費され、生成されたトークンの数を記録するオブジェクト。以下のサブキーを含みます。

    • "completion_tokens": 生成された応答のトークンの数。

    • "prompt_tokens": プロンプトのトークンの数。

    • "total_tokens": 他の値2つの合計である、消費されたトークンの合計数。

単一応答

単一応答を生成するには、

SELECT AI_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

テーブル列からの応答

以下の例では、 content 列を入力として、 reviews テーブルの各行に対する応答を生成しています。各クエリ結果には、対応するレビューの批評が含まれています。

SELECT AI_COMPLETE(
    'mistral-large',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Copy

Tip

この例で示すように、プロンプトのタグ付けを使用して、生成される応答の種類を制御することができます。ヒントについては、 LLaMA 2プロンプトのガイド をご参照ください。

モデルパラメーターの制御

以下の例では、応答の提供に使用される model_parameters を指定します。

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

応答は、言語モデルからのメッセージとその他の情報を含む文字列です。応答は、 model_parameters 引数での指示に従って切り捨てられることに注意してください。

"The unique pattern on a snowflake is"
Copy

詳細な出力

次の例は、 show_details 引数を使用して追加の推論の詳細を返す方法を示しています。

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    },
    show_details => true
);
Copy

応答は、モデルのメッセージと関連する詳細を含む 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
    }
}
Copy

JSON 応答形式の指定

この例は、関数の response_format 引数を使って、構造化された応答を返す例を示しています。

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    }
);
Copy

応答は構造化された応答形式に従っているJSONオブジェクトです。

応答:

{
    "sentiment_categories": [
        {
            "food_cost": "negative",
            "food_quality": "positive",
            "food_taste": "positive",
            "wait_time": "neutral"
        }
    ]
}

詳細な出力を伴う JSON 応答形式の指定

この例では、関数の response_format 引数を使用して、構造化された応答を返し、 show_details を組み合わせて追加の推論情報を取得する方法を示しています

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    },
    show_details => true
);
Copy

応答は、構造化された応答と追加の推論メタデータを含むjsonオブジェクトです。

{
    "created": 1738683744,
    "model": "mistral-large2",
    "structured_output": [
        {
            "raw_message": {
                "sentiment_categories": [
                    {
                        "food_cost": "negative",
                        "food_quality": "positive",
                        "food_taste": "positive",
                        "wait_time": "neutral"
                    }
                ]
            },
            "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 60,
        "prompt_tokens": 94,
        "total_tokens": 154
    }
}