ai_decide 関数

適用対象:チェック済み: はい Databricks SQLチェック済み: はい Databricks Runtime

Important

この機能は ベータ版です。

ai_decide()関数は、テキストや構造化データに対して1つ以上の質問を評価します。 各質問に対して、確率、指定された基準からの選択肢、または順序付けられたスケールのスコアのいずれかを返します。 サポートチケットのルーティング、イベントの対応の評価、または自分で定義したルーブリックを使って作業の優先順位を決めるのに使ってください。

通話中のすべての質問は「 state」と呼ばれる同じ入力を使用します。 異なる質問タイプを1回の呼び出しで組み合わせ、返答を下流のSQLクエリで使うことができます。

データのセキュリティ

ドキュメント データは、Databricks セキュリティ境界内で処理されます。 DatabricksはAI関数呼び出しに渡されるパラメータを保存しませんが、Databricksランタイムバージョンなどのメタデータ実行の詳細は保持します。

必要条件

Apache 2.0 ライセンス

現時点で使用できる基になるモデルは、 Apache 2.0 ライセンスの Copyright © The Apache Software Foundation に基づくライセンスが付与されています。 お客様は、該当するモデル ライセンスへのコンプライアンスを確保する責任を負います。

Databricks では、該当する使用条件に準拠するために、これらのライセンスを確認することをお勧めしています。 Databricks の内部ベンチマークに従ってパフォーマンスが向上するモデルが将来出現した場合、Databricks によってモデルが変更される可能性があります (および、このページで提供されている該当するライセンスの一覧)。

この関数を利用するモデルは、Model Serving Foundation Model API を使用して使用できるようになります。 Databricks で使用できるモデルと、それらのモデルの使用を管理するライセンスとポリシーについては、該当するモデルの 用語 を参照してください。

Azure Databricksの内部ベンチマークに従ってパフォーマンスが向上するモデルが出現した場合、Databricks によってモデルが変更され、ドキュメントが更新される可能性があります。

  • この関数は、一部のリージョンでのみ使用できます。 AI 関数の可用性に関するページを参照してください。

  • セキュリティとコンプライアンスの強化アドオンを使用するワークスペースの場合は、

    • 適切なai_decideについては、 の地域サポートを参照してください。
    • ワークスペースで有効にする方法については、「Azure Databricksプレビューの管理」を参照してください。
  • この関数は、Azure Databricks SQL クラシックでは使用できません。

  • Databricks Runtime 15.4 LTS以上のものが必要です。 最高のパフォーマンスと最新機能へのアクセスのために、Databricks Runtime 18.2以上が推奨されます。

  • Databricks SQL の価格ページを確認してください。

Syntax

ai_decide(state, questions [, options])

論争

  • state: 質問に答えるために必要な内容、文脈、例を含む VARIANT または STRING の表現。 値は行ごとに異なる場合があります。 以下のいずれかを受け入れます:

    • プレーンテキストやJSONでエンコードされたオブジェクトや配列を含む STRING 。 JSONオブジェクトや配列は構造化データとして解釈されます。 他の文字列はテキストとして扱われます。
    • 別の AI 関数によって生成される VARIANT ( ai_parse_document や ai_extractなど)
  • questions: 空でないJSONオブジェクトを含む定数 STRING 式。 各キーは空でない質問IDであり、各値は質問の定義です。 同じ定義はすべての行に当てはまります。 質問 の定義を参照してください。

  • options: オプションの定数 MAP<STRING, STRING> 式です。 サポートされるオプションは versionで、価値は '1.0'です。 バージョン1.0がデフォルトです。 明示的に指定するには map('version', '1.0')を使います。

質問の定義

各問題の定義には type と instructionsが必要で、問題タイプに応じて criteria も必要です。 必須項目は nullできません。 他の分野はサポートされていません。

  • type: noul、 choice、または scoreのいずれか。
  • instructions: 状態を評価する命令で、文字列、JSONオブジェクト、またはJSON配列として表現されます。
  • criteria答え方を定義する記述です。 必要な形状は typeによって異なります。

ノールの質問

noulを使って、その質問が真である可能性を推定します。 その結果、0から1までの数値が得られます。

オプションの criteria オブジェクトには、その結果を表す true キーや false キーを含めることができます。 各記述は文字列、JSONオブジェクト、またはJSON配列で構成できます。 これらの説明が必要ない場合は省略 criteria してください。 供給された場合、 criteria はオブジェクトでなければならず、 nullしてはいけません。

{
  "needs_escalation": {
    "type": "noul",
    "instructions": "Does this ticket need immediate escalation?",
    "criteria": {
      "true": "An active service outage blocks the customer from working.",
      "false": "The customer can continue working or has a workaround."
    }
  }
}

選択質問

choiceを使って、名前付きの基準の中から1つのラベルを選択します。

必要な criteria オブジェクトは、1から255個の空でないラベルを記述にマッピングします。 各説明は文字列、JSONオブジェクト、JSON配列、または nullでいることができます。 ラベルだけで選択を表す場合は、その null を使いましょう。

{
  "team": {
    "type": "choice",
    "instructions": "Which team should handle this ticket?",
    "criteria": {
      "shipping": "Delivery or shipment issues",
      "billing": "Payment or invoice issues",
      "technical_support": "Product technical problems"
    }
  }
}

スコア問題

scoreを使って、秩序立てられた尺度に対して状態を評価します。

必要な criteria 配列は2から10の記述を含み、低い順に並びます。 各記述は文字列、JSONオブジェクト、またはJSON配列で構成できます。 最初の基準は指数 0、次の基準は指数 1、という具合です。

その結果、これらの指数の確率加重平均が得られます。 それは分数的で、 0 から基準の数マイナス1までの範囲です。 例えば、3つの基準における 0.1、 0.3、 0.6 の確率は 1.5となります。

{
  "urgency": {
    "type": "score",
    "instructions": "How urgent is this ticket?",
    "criteria": [
      "Routine request with no time pressure",
      "Time-sensitive issue with a workaround",
      "Critical issue that blocks the customer"
    ]
  }
}

返品

フィールドresponse、metadata、error_messageのVARIANTを返します。 responseフィールドにはanswersオブジェクトがあり、各質問につき1つのエントリーがあります。 問題IDは questions パラメータに記載されたものと完全に一致します。 各回答には、問題タイプに合わせた type フィールド( noul、 choice、または score)が含まれています。 以下の例は、各問題タイプの response フィールドを示しています。

  • ノール質問:質問が真である可能性を推定する0から1への probability 。

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • 選択問題:最も確率の高いラベルを含む choice と、すべてのラベルをその確率に写す対象 probabilities 。 confidence は0から1までの数値で、州が評価をどれだけ支援しているかを示します。 probabilities値は合計1になります。 ラベル名は criteriaで提供されたものと完全に一致しています。

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • スコア問題:基準インデックスの確率加重平均を含むscore、元の基準記述に写像する文字列インデックス(例:"0")を写像するlegend、そしてそれらのインデックスを確率にマッピングするprobabilitiesオブジェクト。 confidence は0から1までの数値で、州が評価をどれだけ支援しているかを示します。 probabilities値は合計1になります。

    {
      "answers": {
        "urgency": {
          "type": "score",
          "score": 1.5,
          "legend": {
            "0": "Routine request with no time pressure",
            "1": "Time-sensitive issue with a workaround",
            "2": "Critical issue that blocks the customer"
          },
          "probabilities": {
            "0": 0.1,
            "1": 0.3,
            "2": 0.6
          },
          "confidence": 0.8
        }
      }
    }
    

成功すると、metadata.versionは使用された関数のバージョンを特定し、error_messagenullします。

故障時には response が null であり、 error_message 故障を表現します。 無効な引数型や非定数の質問定義もクエリエラーの原因となることがあります。

例示

以下の例は、1回の通話で複数の質問を評価する方法を示しています。 生成される回答は通話ごとに異なる場合があります。

複数の問題タイプを評価する

この例は、商品リストのカテゴリー、リサイクル素材の使用、雨天時のハイキング適性を評価するものです。

SELECT ai_decide(
  '{"name": "TrailShell jacket", "description": "Lightweight waterproof hiking jacket made from recycled polyester. Packs into its own pocket."}',
  '{
    "category": {
      "type": "choice",
      "instructions": "Which product category best fits this item?",
      "criteria": {
        "outerwear": "Jackets, coats, and other protective outer layers",
        "footwear": "Shoes, boots, and sandals",
        "accessories": "Bags, hats, and other accessories"
      }
    },
    "recycled_materials": {
      "type": "noul",
      "instructions": "Does the listing state that the product uses recycled materials?"
    },
    "hiking_suitability": {
      "type": "score",
      "instructions": "How suitable is this product for hiking in rainy weather?",
      "criteria": [
        "Not suitable for outdoor use in rain",
        "Offers some protection from rain",
        "Designed for hiking with waterproof protection"
      ]
    }
  }',
  map('version', '1.0')
) AS decision;

応答の例:

{
  "response": {
    "answers": {
      "category": {
        "type": "choice",
        "choice": "outerwear",
        "probabilities": { "outerwear": 0.95, "footwear": 0.01, "accessories": 0.04 },
        "confidence": 0.95
      },
      "recycled_materials": { "type": "noul", "probability": 0.98 },
      "hiking_suitability": {
        "type": "score",
        "score": 1.8,
        "legend": {
          "0": "Not suitable for outdoor use in rain",
          "1": "Offers some protection from rain",
          "2": "Designed for hiking with waterproof protection"
        },
        "probabilities": { "0": 0.05, "1": 0.1, "2": 0.85 },
        "confidence": 0.9
      }
    }
  },
  "metadata": { "version": "1.0" },
  "error_message": null
}