- カテゴリ:
文字列とバイナリ関数 (大規模言語モデル)
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-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?');
テーブル列からの応答¶
以下の例では、 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':'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']}}}}
}
);
応答は構造化された応答形式に従っている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
);
応答は、構造化された応答と追加の推論メタデータを含む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
}
}