カテゴリ:

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

COMPLETE (SNOWFLAKE.CORTEX)

プロンプトを与えると、サポートされている言語モデルの中から選択したものを使用して応答(完了)を生成します。

構文

SNOWFLAKE.CORTEX.COMPLETE(
    <model>, <prompt_or_history> [ , <options> ] )
Copy

引数

必須:

model

使用するモデルを指定する文字列。次の値のいずれかを指定します。

  • 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

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • reka-core

  • reka-flash

  • snowflake-arctic

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

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

  • guardrails: 言語モデルから潜在的に安全でない、有害な応答をフィルターします。trueまたはfalseのいずれか。

    デフォルト: False

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('snowflake-arctic', 'What are large language models?');
Copy

テーブル列からの応答

次の例では、テーブルの各行から応答を生成します(この例では、 contentreviews テーブルの列)。 reviews テーブルには review_content という列があり、ユーザーが投稿したレビューのテキストが格納されています。クエリは各レビューの評論を返します。

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

Tip

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

温度およびトークンの制御

この例では、関数の options 引数を使用して、1つの応答で推論のハイパーパラメーターを制御しています。関数のこの形式では、複数のプロンプトと応答をサポートしているため、プロンプトは配列として提供される必要があります。

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-70b-chat',
    [
        {
            'role': 'user',
            'content': 'how does a snowflake get its unique pattern?'
        }
    ],
    {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
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

安全性の管理

この例では、Cortex Guard guardrails 引数を使用して、言語モデルからの安全でない有害な応答をフィルターしています。

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'mistral-7b',
    [
        {
            'role': 'user',
            'content': <'Prompt that generates an unsafe response'>
        }
    ],
    {
        'guardrails': true
    }
);
Copy

例えば、応答は 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
    }
}
Copy

例: システムプロンプトの提供

この例では、映画レビューの感情分析を提供するためのシステムプロンプトの使用を説明します。ここでの 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;
Copy

応答は、言語モデルからの応答とその他の情報を含む JSON オブジェクトです。

{
    "choices": [
        {
        "messages": " Positive"
        }
    ],
    "created": 1708479449,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 3,
        "prompt_tokens": 64,
        "total_tokens": 67
    }
}
Copy