- カテゴリ:
文字列とバイナリ関数 (大規模言語モデル)
COMPLETE (SNOWFLAKE.CORTEX)¶
プロンプトを与えると、サポートされている言語モデルの中から選択したものを使用して応答(完了)を生成します。
構文¶
SNOWFLAKE.CORTEX.COMPLETE(
<model>, <prompt_or_history> [ , <options> ] )
引数¶
必須:
model
使用するモデルを指定する文字列。これは次のいずれかの値である必要があります。
'mistral-large'
'mixtral-8x7b'
'llama2-70b-chat'
'mistral-7b'
'gemma-7b'
prompt_or_history
完了を生成するために使用するプロンプトまたは会話履歴。
options
が存在しない場合、与えられたプロンプトは文字列である必要があります。options
が存在する場合、引数は、会話を時系列に表すオブジェクトの 配列 である必要があります。各 オブジェクト は、role
キーとcontent
キーを含んでいる必要があります。content
値は、ロールに応じてプロンプトまたは応答になります。ロールは次のいずれかにする必要があります。role
値content
値system
言語モデルに対する初期の平易な英語のプロンプトで、背景情報と応答スタイルの指示を与えます。たとえば、「海賊風に応答する」などです。モデルは、システムプロンプトに対して応答を生成しません。提供できるシステムプロンプトは1つだけで、その場合は配列の先頭にする必要があります。
'user'
ユーザーによって提供されるプロンプト。システムプロンプト(ある場合)またはアシスタントの応答に従う必要があります。
'assistant'
言語モデルによって以前に提供された応答。ユーザーのプロンプトに従う必要があります。以前の応答により、ステートフルな対話型体験を提供できます。 使用上の注意 をご参照ください。
オプション:
options
モデルのハイパーパラメーターに影響を与える以下のオプションを0個以上を含む オブジェクト。 LLM設定 をご参照ください。
temperature
: 言語モデルの出力のランダム性を制御する0から1まで(各値を含む)の値。温度が高いほど(例: 0.7)出力はより多様でランダムになり、温度が低いほど(例: 0.2)、出力はより決定論的で焦点が絞られます。top_p
: 言語モデルのランダム性と多様性を制御する0から1まで(各値を含む)の値。通常、temperature
の代替として使用されます。相違は、top_p
がモデルにより出力される可能性のあるトークンのセットを制限するのに対して、temperature
は各ステップでどのトークンが選択されるのかに影響を及ぼすという点です。max_tokens
: 応答に含まれる出力トークンの最大数を設定します。値が小さいと、応答が切り詰められることがあります。
options
引数を指定すると、それが空のオブジェクト({}
)であっても、prompt
引数の解釈方法と応答のフォーマット方法に影響を及ぼします。
戻り値¶
options
引数が指定されない場合は、文字列。
options
引数が与えられる場合は、以下のキーを含む 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('mistral-large', 'What are large language models?');
テーブル列からの応答¶
次の例では、テーブルの各行から応答を生成します(この例では、 content
は reviews
テーブルの列)。 reviews
テーブルには review_content
という列があり、ユーザーが投稿したレビューのテキストが格納されています。クエリは各レビューの評論を返します。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'mistral-large',
CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Tip
この例で示すように、プロンプトのタグ付けを使用して、生成される応答の種類を制御することができます。ヒントについては、 LLaMA 2プロンプトのガイド をご参照ください。
温度およびトークンの制御¶
この例では、関数の options
引数を使用して、1つの応答で推論のハイパーパラメーターを制御しています。関数のこの形式では、複数のプロンプトと応答をサポートしているため、プロンプトは配列として提供される必要があります。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama2-7b-chat',
[
{
'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,
"total_tokens": 32
}
}
例: システムプロンプトの提供¶
この例では、映画レビューの感情分析を提供するためのシステムプロンプトの使用を説明します。ここでの prompt
引数はオブジェクトの配列で、それぞれに適切な role
値があります。
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama2-70b-chat',
[
{'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
}
}
法的通知¶
Snowflake Cortex LLM 関数には、Metaの LLaMA 2を含む、機械学習テクノロジーが搭載されています。基礎 LLaMA 2モデルは、 LLaMA 2コミュニティライセンス の下にライセンスされています。Copyright (c) Meta Platforms, Inc.All Rights Reserved.LLama 2モデルに基づくいかなる LLM 関数の使用も、Metaの 利用規定 に従うものとします。
機械学習技術と提供される結果は、不正確、不適切であったり、偏っていたりする可能性があります。自動パイプラインに組み込まれたものも含め、機械学習の出力に基づく決定には、モデルが生成したコンテンツが正確であることを保証するために、人間によるモニタリングとレビュープロセスが必要です。
LLM 関数クエリは他の SQL クエリと同様に扱われ、 メタデータ とみなされる可能性があります。
詳細については、 Snowflake AI の信頼と安全 FAQ をご参照ください。