カテゴリ:

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

TRY_COMPLETE (SNOWFLAKE.CORTEX)

COMPLETE 関数と同じ操作を行うが、操作が実行できない場合にエラーを発生させる代わりに NULL を返します。NULL を返すエラー条件については、 エラー条件 をご参照ください。

構文

SNOWFLAKE.CORTEX.TRY_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 データベースロール が付与されているロールを使用する必要があります。この権限の詳細については、 必要な権限 をご参照ください。

使用上の注意

TRY_COMPLETE は、ある呼び出しから次の呼び出しまで状態を保持しません。ステートフルな対話型体験を提供するために TRY_COMPLETE 関数を使用するには、 prompt_or_history 配列の一部として、対話における以前のすべてのユーザープロンプトとモデル応答を渡します(チャットモデルのテンプレート をご参照ください)。各「ラウンド」ごとに処理されるトークンの数が増え、それに比例してコストも増加することに留意してください。

次の例は、様々なユースケースで TRY_COMPLETE 関数を使用しています。

単一応答の生成

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

SELECT SNOWFLAKE.CORTEX.TRY_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

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

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

SELECT SNOWFLAKE.CORTEX.TRY_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,
        "total_tokens": 32
    }
}
Copy

その他の例については、 COMPLETE (SNOWFLAKE.CORTEX) リファレンスをご参照ください。