次の方法で共有


基盤モデルを使用する

この記事では、基礎モデルのクエリ要求を記述し、それらをモデル サービス エンドポイントに送信する方法について説明します。 Databricks によってホストされている基礎モデルと、Databricks の外部でホストされている基盤モデルに対してクエリを実行できます。

従来の ML または Python モデルのクエリ要求については、「カスタム モデルのエンドポイントを提供するクエリ」をご覧ください。

Mosaic AI Model Serving では、基盤モデルにアクセスするための Foundation Models API および 外部モデル がサポートされます。 Model Serving では、OpenAI と互換性のある統合された API と SDK を使って、それらのクエリが実行されます。 これにより、サポートされているクラウドとプロバイダー全体で運用用の基盤モデルを試してカスタマイズすることができます。

Mosaic AI Model Serving には、基盤モデルまたは外部モデルを提供するエンドポイントにスコアリング要求を送信するための以下のオプションがあります。

メソッド 詳細
OpenAI クライアント OpenAI クライアントを使用して、Mosaic AI Model Serving エンドポイントによってホストされているモデルに対してクエリを実行します。 モデル サービング エンドポイント名を model 入力として指定します。 Foundation Model API または外部モデルで利用可能なチャット、埋め込み、コンプリーションモデルに対してサポートされています。
SQL 関数 SQL 関数の ai_query を使用して、SQL から直接モデル推論を呼び出します。 「 例: 基礎モデルのクエリを実行する」を参照してください。
ユーザーインターフェースの提供 [提供エンドポイント] ページから [エンドポイントに対するクエリを実行] を選択します。 JSON 形式のモデル入力データを入力し、[要求の送信] をクリックします。 モデルに入力例がログされている場合は、[例の表示] を使用してそれを読み込みます。
REST API REST API を使用してモデルを呼び出してクエリを実行します。 詳細については、「POST /serving-endpoints/{name}/invocations」を参照してください。 複数のモデルを提供するエンドポイントへのスコアリング要求については、「エンドポイントの背後にある個々のモデルに対するクエリの実行」を参照してください。
MLflow デプロイ SDK MLflow Deployments SDK の predict() 関数を使用してモデルにクエリを実行します。
Databricks Python SDK Databricks Python SDK は、REST API 上のレイヤーです。 認証などの低レベルの詳細を処理するため、モデルとの対話が容易になります。

要件

重要

運用シナリオのセキュリティのベスト プラクティスとして、Databricks では、運用時の認証にコンピューター間 OAuth トークンを使用することをお勧めします。

テストおよび開発の場合は、Databricks では、ワークスペース ユーザーではなく、サービス プリンシパルに属する個人用アクセス トークンを使用することをお勧めします。 サービス プリンシパルのトークンを作成するには、「サービス プリンシパルのトークンを管理する」をご覧ください。

パッケージをインストールする

クエリ方法を選択したら、まずお使いのクラスターに適切なパッケージをインストールする必要があります。

OpenAI クライアント

OpenAI クライアントを使用するには、クラスターに databricks-sdk[openai] パッケージをインストールする必要があります。 Databricks SDK には、生成 AI モデルに対してクエリを実行するように自動的に構成された承認を使用して OpenAI クライアントを構築するためのラッパーが用意されています。 ノートブックまたはローカル ターミナルで次を実行してください。

!pip install databricks-sdk[openai]>=0.35.0

以下は、Databricks Notebook にパッケージをインストールする場合にのみ必要です

dbutils.library.restartPython()

REST API

Serving REST API へのアクセスは、Databricks Runtime for Machine Learning で利用できます。

MLflow デプロイ SDK

!pip install mlflow

以下は、Databricks Notebook にパッケージをインストールする場合にのみ必要です

dbutils.library.restartPython()

Databricks Python SDK

Databricks SDK for Python は、Databricks Runtime 13.3 LTS 以上を使用するすべての Azure Databricks クラスターに既にインストールされています。 Databricks Runtime 12.2 LTS 以下を使用する Azure Databricks クラスターの場合、まず Databricks SDK for Python をインストールする必要があります。 Databricks SDK for Python を参照してください

テキスト補完モデル クエリ

OpenAI クライアント

重要

OpenAI クライアントでは、Foundation Model API のトークン単位の支払いを使用して提供されているテキスト入力候補モデルへのクエリはサポートされていません。 このセクションで示すように、OpenAI クライアントを使用した外部モデルのクエリのみがサポートされています。

OpenAI クライアントを使用するには、モデル サービング エンドポイント名を model 入力として指定します。 次の例では、OpenAI クライアントを使って、Anthropic によってホストされている claude-2 入力候補モデルにクエリを実行します。 OpenAI クライアントを使うには、model フィールドに、クエリ対象のモデルをホストするモデル提供エンドポイントの名前を設定します。

この例では、Anthropic モデル プロバイダーから外部モデルにアクセスするように構成された、以前に作成したエンドポイント anthropic-completions-endpoint を使用します。 外部モデル エンドポイントを作成する方法を参照してください。

クエリを実行できるその他のモデルとそのプロバイダーについては、「サポートされているモデル」を参照してください。


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

completion = openai_client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)

SQL

重要

次の例では、組み込みの SQL 関数である ai_query を使用します。 この関数はパブリック プレビューであり、定義が変更される可能性があります。

SELECT ai_query(
    "<completions-model-endpoint>",
    "Can you explain AI in ten words?"
  )

REST API

以下は、外部モデルを使用して提供されている入力候補モデルにクエリを実行するための補完リクエストです。

重要

次の例では、REST API パラメーターを使用して、外部モデルにサービスを提供するエンドポイントにクエリを実行します。 これらのパラメーターは パブリック プレビュー 段階であり、定義が変更される可能性があります。 POST /serving-endpoints/{name}/invocations を参照してください。


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "What is a quoll?", "max_tokens": 64}' \
https://<workspace_host>.databricks.com/serving-endpoints/<completions-model-endpoint>/invocations

MLflow デプロイ SDK

以下は、外部モデルを使用して提供されている入力候補モデルにクエリを実行するための補完リクエストです。

重要

次の例では、predict() API を使用します。


import os
import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook

os.environ['DATABRICKS_HOST'] = "https://<workspace_host>.databricks.com"
os.environ['DATABRICKS_TOKEN'] = "dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

completions_response = client.predict(
    endpoint="<completions-model-endpoint>",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)

# Print the response
print(completions_response)

Databricks Python SDK

外部モデルを利用して使用可能な補完モデルに対するクエリ要求を以下に示します。

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="<completions-model-endpoint>",
    prompt="Write 3 reasons why you should train an AI model on ___domain specific data sets."
)
print(response.choices[0].text)

次に示すのは補完モデルで想定されている要求形式です。 外部モデルに対しては、特定のプロバイダーとエンドポイント構成で有効な追加のパラメータを含めることができます。 「その他のクエリ パラメーター」を参照してください。

{
  "prompt": "What is mlflow?",
  "max_tokens": 100,
  "temperature": 0.1,
  "stop": [
    "Human:"
  ],
  "n": 1,
  "stream": false,
  "extra_params":
  {
    "top_p": 0.9
  }
}

想定されている応答形式は次のとおりです。

{
  "id": "cmpl-8FwDGc22M13XMnRuessZ15dG622BH",
  "object": "text_completion",
  "created": 1698809382,
  "model": "gpt-3.5-turbo-instruct",
  "choices": [
    {
      "text": "MLflow is an open-source platform for managing the end-to-end machine learning lifecycle. It provides tools for tracking experiments, managing and deploying models, and collaborating on projects. MLflow also supports various machine learning frameworks and languages, making it easier to work with different tools and environments. It is designed to help data scientists and machine learning engineers streamline their workflows and improve the reproducibility and scalability of their models.",
      "index": 0,
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 83,
    "total_tokens": 88
  }
}

チャット完了モデル クエリ

チャット モデルのクエリの例を次に示します。 この例は、モデル サービス機能 (Foundation Model API または外部モデル) のいずれかを使用して使用可能になったチャット モデルのクエリに適用されます。

バッチ推論の例については、「 AI Functions を使用したバッチ LLM 推論の実行」を参照してください。

OpenAI クライアント

以下は、Foundation Model API の従量課金エンドポイントによってワークスペースで利用可能になった Meta Llama 3.3 70B Instruct モデルのチャット要求です。databricks-meta-llama-3-3-70b-instruct

OpenAI クライアントを使用するには、モデル サービング エンドポイント名を model 入力として指定します。


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_client.chat.completions.create(
    model="databricks-meta-llama-3-3-70b-instruct",
    messages=[
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is a mixture of experts model?",
      }
    ],
    max_tokens=256
)

ワークスペースの外部で基礎モデルのクエリを実行するには、OpenAI クライアントを直接使用する必要があります。 OpenAI クライアントを Databricks に接続するために、Databricks ワークスペース インスタンスも必要です。 次の例では、Databricks API トークンがあり、コンピューティングに openai がインストールされていることを前提としています。


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.chat.completions.create(
    model="databricks-meta-llama-3-3-70b-instruct",
    messages=[
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is a mixture of experts model?",
      }
    ],
    max_tokens=256
)

SQL

重要

次の例では、組み込みの SQL 関数である ai_query を使用します。 この関数はパブリック プレビューであり、定義が変更される可能性があります。

以下は、ワークスペースで Foundation Model API の従量課金トークンエンドポイントmeta-llama-3-3-70b-instructによって利用可能になったdatabricks-meta-llama-3-3-70b-instructのチャット要求です。

メモ

ai_query() 関数は、DBRX または DBRX Instruct モデルを提供するクエリ エンドポイントをサポートしていません。

SELECT ai_query(
    "databricks-meta-llama-3-3-70b-instruct",
    "Can you explain AI in ten words?"
  )

REST API

重要

次の例では、基盤モデルを提供する提供エンドポイントに対するクエリを実行するために REST API パラメーターを使用します。 これらのパラメーターは パブリック プレビュー 段階であり、定義が変更される可能性があります。 POST /serving-endpoints/{name}/invocations を参照してください。

以下は、Foundation Model API の従量課金エンドポイントによってワークスペースで利用可能になった Meta Llama 3.3 70B Instruct モデルのチャット要求です。databricks-meta-llama-3-3-70b-instruct

curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": " What is a mixture of experts model?"
    }
  ]
}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-meta-llama-3-3-70b-instruct/invocations \

MLflow デプロイ SDK

重要

次の例では、predict() API を使用します。

以下は、Foundation Model API の従量課金エンドポイントによってワークスペースで利用可能になった Meta Llama 3.3 70B Instruct モデルのチャット要求です。databricks-meta-llama-3-3-70b-instruct


import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

chat_response = client.predict(
    endpoint="databricks-meta-llama-3-3-70b-instruct",
    inputs={
        "messages": [
            {
              "role": "user",
              "content": "Hello!"
            },
            {
              "role": "assistant",
              "content": "Hello! How can I assist you today?"
            },
            {
              "role": "user",
              "content": "What is a mixture of experts model??"
            }
        ],
        "temperature": 0.1,
        "max_tokens": 20
    }
)

Databricks Python SDK

以下は、Foundation Model API の従量課金エンドポイントによってワークスペースで利用可能になった Meta Llama 3.3 70B Instruct モデルのチャット要求です。databricks-meta-llama-3-3-70b-instruct

このコードは、ワークスペース内のノートブックで実行する必要があります。 「Azure Databricks ノートブックから Databricks SDK for Python を使用する」を参照してください。

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-meta-llama-3-3-70b-instruct",
    messages=[
        ChatMessage(
            role=ChatMessageRole.SYSTEM, content="You are a helpful assistant."
        ),
        ChatMessage(
            role=ChatMessageRole.USER, content="What is a mixture of experts model?"
        ),
    ],
    max_tokens=128,
)
print(f"RESPONSE:\n{response.choices[0].message.content}")

LangChain

LangChain を使用して基盤モデル エンドポイントにクエリを実行するには、ChatDatabricks ChatModel クラスを使用し、endpoint を指定します。

次の例では、LangChain の ChatDatabricks ChatModel クラスを使用して、Foundation Model API のトークン単位の支払いエンドポイントである databricks-meta-llama-3-3-70b-instruct にクエリを実行します。

%pip install databricks-langchain
from langchain_core.messages import HumanMessage, SystemMessage
from databricks_langchain import ChatDatabricks

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]

llm = ChatDatabricks(endpoint_name="databricks-meta-llama-3-3-70b-instruct")
llm.invoke(messages)

たとえば、次に示すのは REST API 使用時のチャット モデルで想定されている要求形式です。 外部モデルに対しては、特定のプロバイダーとエンドポイント構成で有効な追加のパラメータを含めることができます。 「その他のクエリ パラメーター」を参照してください。

{
  "messages": [
    {
      "role": "user",
      "content": "What is a mixture of experts model?"
    }
  ],
  "max_tokens": 100,
  "temperature": 0.1
}

REST API を使用して行う要求に対して想定されている応答形式は、次のとおりです。

{
  "model": "databricks-meta-llama-3-3-70b-instruct",
  "choices": [
    {
      "message": {},
      "index": 0,
      "finish_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 74,
    "total_tokens": 81
  },
  "object": "chat.completion",
  "id": null,
  "created": 1698824353
}

推論モデル

Mosaic AI Model Serving は、推論モデルと対話するための統合 API を提供します。 推論により、基礎モデルは複雑なタスクに取り組むための強化された機能を提供します。 一部のモデルでは、最終的な回答を提供する前に、段階的な思考プロセスを明らかにすることで、透明性も提供されます。

モデルには、推論専用とハイブリッドの 2 種類があります。 OpenAI o シリーズのような推論のみのモデルでは、常に内部推論が応答に使用されます。 databricks-claude-3-7-sonnetなどのハイブリッド モデルでは、必要に応じて迅速かつ迅速な応答とより深い推論の両方がサポートされます。

ハイブリッド モデルで推論を有効にするには、思考パラメーターを含め、モデルが内部思考に使用できるトークンの数を制御する budget_tokens 値を設定します。 予算が多いほど複雑なタスクの品質が向上しますが、32K を超える使用量は異なる場合があります。 budget_tokens は、 max_tokens未満にする必要があります。

すべての推論モデルは、 チャット完了 エンドポイントを介してアクセスされます。

from openai import OpenAI
import base64
import httpx

client = OpenAI(
  api_key=os.environ.get('YOUR_DATABRICKS_TOKEN'),
  base_url=os.environ.get('YOUR_DATABRICKS_BASE_URL')
  )

response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

msg = response.choices[0].message
reasoning = msg.content[0]["summary"][0]["text"]
answer = msg.content[1]["text"]

print("Reasoning:", reasoning)
print("Answer:", answer)

API 応答には、思考コンテンツ ブロックとテキスト コンテンツ ブロックの両方が含まれます。

ChatCompletionMessage(
    role="assistant",
    content=[
        {
            "type": "reasoning",
            "summary": [
                {
                    "type": "summary_text",
                    "text": ("The question is asking about the scientific explanation for why the sky appears blue... "),
                    "signature": ("EqoBCkgIARABGAIiQAhCWRmlaLuPiHaF357JzGmloqLqkeBm3cHG9NFTxKMyC/9bBdBInUsE3IZk6RxWge...")
                }
            ]
        },
        {
            "type": "text",
            "text": (
                "# Why the Sky Is Blue\n\n"
                "The sky appears blue because of a phenomenon called Rayleigh scattering. Here's how it works..."
            )
        }
    ],
    refusal=None,
    annotations=None,
    audio=None,
    function_call=None,
    tool_calls=None
)

複数のターンで推論を管理する

このセクションは、 databricks-claude-3-7-sonnet modelに固有です。

複数ターンの会話では、最後のアシスタント ターンまたはツール使用セッションに関連付けられている推論ブロックのみがモデルに表示され、入力トークンとしてカウントされます。

推論トークンをモデルに渡したくない場合 (たとえば、前の手順で推論する必要がない場合)、推論ブロックを完全に省略できます。 例えば次が挙げられます。

response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[
        {"role": "user", "content": "Why is the sky blue?"},
        {"role": "assistant", "content": text_content},
        {"role": "user", "content": "Can you explain in a way that a 5-year-old child can understand?"}
    ],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

answer = response.choices[0].message.content[1]["text"]
print("Answer:", answer)

ただし、モデルが以前の推論プロセスを推論する必要がある場合 (たとえば、中間的な推論を示すエクスペリエンスを構築している場合)、前のターンの推論ブロックを含む、変更されていない完全なアシスタント メッセージを含める必要があります。 完全なアシスタント メッセージを使用してスレッドを続行する方法を次に示します。

assistant_message = response.choices[0].message

response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[
        {"role": "user", "content": "Why is the sky blue?"},
        {"role": "assistant", "content": text_content},
        {"role": "user", "content": "Can you explain in a way that a 5-year-old child can understand?"},
        assistant_message,
        {"role": "user", "content": "Can you simplify the previous answer?"}
    ],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

answer = response.choices[0].message.content[1]["text"]
print("Answer:", answer)

推論モデルのしくみ

推論モデルでは、標準の入力トークンと出力トークンに加えて、特別な推論トークンが導入されます。 これらのトークンを使用すると、モデルはプロンプトを通じて "考える" ことができるようになります。これを分解し、さまざまな応答方法を検討します。 この内部推論プロセスの後、モデルは最終的な回答を可視出力トークンとして生成します。 databricks-claude-3-7-sonnetなどの一部のモデルでは、これらの推論トークンをユーザーに表示し、OpenAI o シリーズなどの他のモデルは破棄し、最終的な出力では公開しません。

サポートされているモデル

Foundation Model API (Databricks ホスト型)

  • databricks-claude-3-7-sonnet

外部モデル

  • 推論機能を備えた OpenAI モデル
  • 推論機能を備えたアントロピック クロード モデル
  • 推論機能を備えた Google Gemini モデル

ビジョン モデル

Mosaic AI Model Serving は、さまざまな基盤モデルを使用して画像を理解および分析するための統合 API を提供し、強力なマルチモーダル機能のロックを解除します。 この機能は、 Foundation Model API の 一部として選択された Databricks でホストされるモデルと 、外部モデルにサービスを提供するエンドポイントを提供する方法で利用できます。

コード例


from openai import OpenAI
import base64
import httpx

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

# encode image
image_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image_data = base64.standard_b64encode(httpx.get(image_url).content).decode("utf-8")

# OpenAI request
completion = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "what's in this image?"},
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/jpeg;base64,{image_data}"},
                },
            ],
        }
    ],
)

print(completion.choices[0].message.content)

Chat Completions API は複数の画像入力をサポートしているため、モデルは各画像を分析し、すべての入力から情報を合成してプロンプトへの応答を生成できます。


from openai import OpenAI
import base64
import httpx

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

# Encode multiple images

image1_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
image1_data = base64.standard_b64encode(httpx.get(image1_url).content).decode("utf-8")

image2_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
image2_data = base64.standard_b64encode(httpx.get(image1_url).content).decode("utf-8")

# OpenAI request

completion = client.chat.completions.create(
model="databricks-claude-3-7-sonnet",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What are in these images? Is there any difference between them?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{image1_data}"},
},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{image2_data}"},
},
],
}
],
)

print(completion.choices[0].message.content)

サポートされているモデル

Foundation Model API (Databricks ホスト型)

  • databricks-claude-3-7-sonnet

外部モデル

  • ビジョン機能を備えた OpenAI GPT および o シリーズ モデル
  • 視覚機能を備えたアントロピック クロード モデル
  • ビジョン機能を備えた Google Gemini モデル
  • OpenAI API と互換性のあるビジョン機能を備えたその他の外部基盤モデルもサポートされています。

入力イメージの要件

このセクションは、Foundation Model API にのみ適用されます。 外部モデルについては、プロバイダーのドキュメントを参照してください。

要求ごとに複数のイメージ

  • Claude.ai 用に最大 20 個の画像
  • API リクエスト用に100個までのイメージ
  • 指定されたすべての画像は要求で処理されます。これは、それらを比較または対照するのに役立ちます。

サイズ制限

  • 8000 x 8000 px を超える画像は拒否されます。
  • 1 つの API 要求で 20 を超えるイメージが送信された場合、 イメージあたりの最大許容サイズ2000 x 2000 px です

イメージのサイズ変更に関する推奨事項

  • 最適なパフォーマンスを得られるように、画像が大きすぎる場合は、アップロードする前に画像のサイズを変更します。
  • 画像の 長いエッジが 1568 ピクセルを超える 場合、またはその サイズが約 1,600 トークンを超える場合、縦横比を維持しながら 自動的に縮小 されます。
  • 非常に小さい画像 ( 任意のエッジで 200 ピクセル未満) では 、パフォーマンスが低下する可能性があります。
  • 待ち時間を短縮するには、画像を 1.15 ピクセル以内にし、両方のサイズで最大 1568 ピクセルに抑えます。

イメージの品質に関する考慮事項

  • サポートされている形式: JPEG、PNG、GIF、WebP。
  • 明快: ぼやけた画像やピクセル化された画像は避けてください。
  • 画像内のテキスト:
    • テキストが 読みやすく 、小さすぎないようにします。
    • テキストを拡大するためだけに、主要なビジュアル コンテキストをトリミングしないようにします。

コストの計算

このセクションは、Foundation Model API にのみ適用されます。 外部モデルについては、プロバイダーのドキュメントを参照してください。

基盤モデルへの要求内の各イメージは、トークンの使用状況に追加されます。

トークンの数と見積もり

サイズ変更が必要ない場合は、次を使用してトークンを見積もります。
tokens = (幅 px ×高さ px) / 750

さまざまなイメージ サイズのおおよそのトークン数:

画像サイズ トークン
200×200 px (0.04 MP) ~54
1000×1000 px (1 MP) ~1334
1092×1092 px (1.19 MP) 約1590

イメージ理解の制限事項

このセクションは、Foundation Model API にのみ適用されます。 外部モデルについては、プロバイダーのドキュメントを参照してください。

Databricks の Claude モデルの高度なイメージの理解には制限があります。

  • 人物識別: 画像内のユーザーを識別したり、名前を付けたりすることはできません。
  • 精度: 低品質、回転、または非常に小さい画像 (<200 px) が誤って解釈される可能性があります。
  • 空間推論:アナログ時計やチェスの位置の読み取りなど、正確なレイアウトに苦労しています。
  • カウント: おおよそのカウントを提供しますが、多くの小さなオブジェクトでは不正確になる可能性があります。
  • AI によって生成された画像: 合成画像または偽の画像を確実に検出することはできません。
  • 不適切なコンテンツ: 明示的またはポリシー違反の画像をブロックします。
  • 医療: 複雑な医療スキャン (CT や MRI など) には適していません。 診断ツールではありません。

特に高リスクのユース ケースについては、すべての出力を慎重に確認してください。 完全な精度や機密性の高い分析を必要とするタスクに対して、人間が見落とすことなくクロードを使用することは避けてください。

モデル クエリの埋め込み

Foundation Model API によって利用可能となる gte-large-en モデルに対する埋め込み要求を次に示します。 この例は、Model Serving の機能 (Foundation Model API または外部モデル) のいずれかを使って利用できる埋め込みモデルのクエリに適用されます。

OpenAI クライアント

OpenAI クライアントを使用するには、モデル サービング エンドポイント名を model 入力として指定します。


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

response = openai_client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

ワークスペースの外部で基礎モデルのクエリを実行するには、次に示すように、OpenAI クライアントを直接使用する必要があります。 次の例では、Databricks API トークンがあり、コンピューティングに openai がインストールされていることを前提としています。 OpenAI クライアントを Databricks に接続するために、Databricks ワークスペース インスタンスも必要です。


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

SQL

重要

次の例では、組み込みの SQL 関数である ai_query を使用します。 この関数はパブリック プレビューであり、定義が変更される可能性があります。


SELECT ai_query(
    "databricks-gte-large-en",
    "Can you explain AI in ten words?"
  )

REST API

重要

次の例では、基盤モデルまたは外部モデルを提供する提供エンドポイントのクエリを実行するために REST API パラメーターを使っています。 これらのパラメーターは パブリック プレビュー 段階であり、定義が変更される可能性があります。 POST /serving-endpoints/{name}/invocations を参照してください。


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d  '{ "input": "Embed this sentence!"}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-gte-large-en/invocations

MLflow デプロイ SDK

重要

次の例では、predict() API を使用します。


import mlflow.deployments

export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

embeddings_response = client.predict(
    endpoint="databricks-gte-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

Databricks Python SDK


from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

LangChain で Databricks Foundation Model API モデルを埋め込みモデルとして使用するには、DatabricksEmbeddings クラスをインポートし、次のように endpoint パラメーターを指定します。

%pip install databricks-langchain
from databricks_langchain import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-gte-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

次に示すのは埋め込みモデルで想定されている要求形式です。 外部モデルに対しては、特定のプロバイダーとエンドポイント構成で有効な追加のパラメータを含めることができます。 「その他のクエリ パラメーター」を参照してください。


{
  "input": [
    "embedding text"
  ]
}

想定されている応答形式は次のとおりです。

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

埋め込み値が正規化されているかどうかを確認する

モデルによって生成された埋め込み値が正規化されているかどうかを確認するには、次のコマンドを使用します。


  import numpy as np

  def is_normalized(vector: list[float], tol=1e-3) -> bool:
      magnitude = np.linalg.norm(vector)
      return abs(magnitude - 1) < tol

関数呼び出し

Databricks 関数呼び出しは OpenAI 互換であり、Foundation Model API の一部として機能し、外部モデル提供するエンドポイントを提供するモデル中にのみ使用できます。 詳細については、「 Azure Databricks での関数呼び出し」を参照してください。

構造化出力

構造化された出力は OpenAI 互換であり、 Foundation Model API の一部として機能するモデル中にのみ使用できます。 詳細については、 Azure Databricks での構造化された出力に関するページを参照してください。

AI プレイグラウンドを使ってサポートされているモデル LLM とチャットする

AI プレイグラウンドを使って、サポートされている大規模言語モデルを操作できます。 AI プレイグラウンドは、Azure Databricks ワークスペースから LLM をテスト、ダイアログを表示、比較できるチャットのような環境です。

AI プレイグラウンド

その他のリソース