- カテゴリ:
:doc:`/sql-reference/functions-string`(AI 関数)
AI_COMPLETE (単一文字列)¶
注釈
AI_COMPLETE は COMPLETE (SNOWFLAKE.CORTEX) の更新されたバージョンです。最新の関数については、 AI_COMPLETE を使用してください。
サポートされている言語モデルを使用して、テキストプロンプトに対する応答(補完)を生成します。
構文¶
この関数には2つの必要な引数と4つのオプションの引数があります。この関数は、位置引数または名前付き引数の構文で使用することができます。
単一文字列入力での AI_COMPLETE の使用
AI_COMPLETE(
<model>, <prompt> [ , <model_parameters>, <response_format>, <show_details> ] )
引数¶
model使用するモデルを指定する文字列。以下のモデルのいずれかを指定してください。
claude-4-opusclaude-4-sonnetclaude-3-7-sonnetclaude-3-5-sonnetdeepseek-r1gemma-7bjamba-1.5-minijamba-1.5-largejamba-instructllama2-70b-chatllama3-8bllama3-70bllama3.1-8bllama3.1-70bllama3.1-405bllama3.2-1bllama3.2-3bllama3.3-70bllama4-maverickllama4-scoutmistral-largemistral-large2mistral-7bmixtral-8x7bopenai-gpt-4.1openai-o4-minireka-corereka-flashsnowflake-arcticsnowflake-llama-3.1-405bsnowflake-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 オブジェクトのどちらかを含む文字列です。TYPE キーワードから始まる、SQL 型の定義。この型は、トップレベルのコンテナタイプとして OBJECT を使用する必要があります。この OBJECT のフィールドは対応する 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?');
テーブル列からの応答¶
以下の例では、 content 列を入力として、 reviews テーブルの各行に対する応答を生成しています。各クエリ結果には、対応するレビューの批評が含まれています。
SELECT AI_COMPLETE(
'mistral-large',
CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
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
}
);
応答は、言語モデルからのメッセージとその他の情報を含む文字列です。応答は、 model_parameters 引数での指示に従って切り捨てられることに注意してください。
"The unique pattern on a snowflake is"
詳細な出力¶
次の例は、 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
);
応答は、モデルのメッセージと関連する詳細を含む 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
}
}
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 OBJECT(note OBJECT(items_count NUMBER, price ARRAY(STRING), address STRING, member_date STRING)),
);
応答は構造化された応答形式に従っているJSONオブジェクトです。
応答:
{
"note": {
"address": "123 Main St, Portland OR, 97201",
"items_count": 3,
"member_date": "January 2024",
"price": [
"$89.99",
"$129.50",
"$199.00"
]
}
}
型リテラルを使用した、詳細を含む JSON 応答フォーマットの指定¶
この例では、型リテラルを使って、構造化された応答を返す関数の response_format 引数と show_details を組み合わせてその他の推論情報を得る方法を説明しています。
SELECT AI_COMPLETE(
model => 'llama3.3-70b',
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.',
response_format => TYPE OBJECT(note OBJECT(items_count NUMBER, price ARRAY(STRING), address STRING, member_date STRING)),
show_details => TRUE
);
応答は、追加の推論メタデータが配置された構造化された応答を含む JSON オブジェクトです。
{
"created": 1758755328,
"model": "llama3.3-70b",
"structured_output": [
{
"raw_message": {
"note": {
"items_count": 3,
"price": [
"$89.99",
"$129.50",
"$199.00"
]
}
},
"type": "json"
}
],
"usage": {
"completion_tokens": 49,
"prompt_tokens": 100,
"total_tokens": 149
}
}
JSON スキーマを使用した、詳細を含む JSON 応答フォーマットの指定¶
この例では、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' : {'note':{'type':'object','properties':
{'items_count' : {'type' : 'number'},'price': {'type':'array','items':{'type':'string'}}, 'address': {'type':'string'}, 'member_date': {'type':'string'}},'required':['items_count','price' ,'address', 'member_date']}}}
},
show_details => true
);
応答は、追加の推論メタデータが配置された構造化された応答を含むJSONオブジェクトです。
{
"created": 1758057115,
"model": "mistral-large2",
"structured_output": [
{
"raw_message": {
"note": {
"address": "123 Main St, Portland OR, 97201",
"items_count": 3,
"member_date": "January 2024",
"price": [
"$89.99",
"$129.50",
"$199.00"
]
}
},
"type": "json"
}
],
"usage": {
"completion_tokens": 76,
"prompt_tokens": 100,
"total_tokens": 176
}
}