查詢視覺模型

在本文中,您將學習如何為針對視覺任務優化的基礎模型撰寫查詢請求,這些模型由 Unity AI Gateway 提供。

Tip

Genie Code (代理模式)可以幫你做到這點。 請嘗試以下範例提示:

Query the databricks-claude-sonnet-4-5 model using the OpenAI client, sending a base64-encoded image from a URL alongside a text question, and print the response.

Model Serving 提供統一的 API,利用多種基礎模型來理解和分析影像,解鎖強大的多模態能力。 這項功能可透過選取 Databricks 裝載的模型做為 基礎模型 API 的一部分,以及提供服務 外部模型的端點來取得。

需求

查詢範例

Note

以下範例基於 Unity AI Gateway 與模型服務。 如果你使用模型服務端點而非模型服務,請將模型服務名稱替換為端點名稱。 請參閱 Databricks 託管的基礎模型,該模型在基礎模型 API 中提供 ,並列出可用的基礎模型及其模型服務與端點名稱。

OpenAI 用戶端

要使用 OpenAI 用戶端,請指定模型服務名稱作為 model 輸入。


from openai import OpenAI
import base64
import requests

# Get the workspace API URL and token from the notebook context
API_ROOT = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiUrl().get()
API_TOKEN = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get()

client = OpenAI(
    api_key=API_TOKEN,
    base_url=f"{API_ROOT}/ai-gateway/mlflow/v1",
)

# Download and encode image
image_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
resp = requests.get(image_url)
resp.raise_for_status()
image_data = base64.b64encode(resp.content).decode("utf-8")

# OpenAI request
completion = client.chat.completions.create(
    model="system.ai.claude-sonnet-4-5",
    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)

聊天完成 API 支援多個影像輸入,讓模型能夠分析每個影像,並從所有輸入合成資訊,以產生對提示的回應。


from openai import OpenAI
import base64
import requests

# Get the workspace API URL and token from the notebook context
API_ROOT = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiUrl().get()
API_TOKEN = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get()

client = OpenAI(
    api_key=API_TOKEN,
    base_url=f"{API_ROOT}/ai-gateway/mlflow/v1",
)

# Download and 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"
resp1 = requests.get(image1_url)
resp1.raise_for_status()
image1_data = base64.b64encode(resp1.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"
resp2 = requests.get(image2_url)
resp2.raise_for_status()
image2_data = base64.b64encode(resp2.content).decode("utf-8")

# OpenAI request
completion = client.chat.completions.create(
    model="system.ai.claude-sonnet-4-5",
    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)

SQL

這很重要

下列範例使用內建 SQL 函數 ai_query。 此函式處於 公開預覽 狀態,而且定義可能會變更。

使用 AI 函式 ai_query() 查詢由 Databricks 基礎模型 API 支援的基礎模型,以處理多模式輸入。


> SELECT *, ai_query(
  'system.ai.llama-4-maverick',
 'what is this image about?', files => content)
as output FROM READ_FILES("/Volumes/main/multimodal/unstructured/image.jpeg");

支援的模型

請參閱 基礎模型類型 以取得支援的視覺模型。

輸入影像需求

型號 支援的格式 每個請求可包含多張圖片 影像大小限制 影像調整大小建議 影像質量考慮
databricks-gpt-5
  • JPEG
  • PNG
  • WebP
  • GIF (非動畫 GIF
每次請求最多可輸入 500 張個別圖像 檔案大小限制:每個請求的承載總大小上限為 10 MB N/A
  • 無水印或徽標
  • 足夠清晰,人類可以理解
databricks-gpt-5-mini
  • JPEG
  • PNG
  • WebP
  • GIF (非動畫 GIF
每次請求最多可輸入 500 張個別圖像 檔案大小限制:每個請求的承載總大小上限為 10 MB N/A
  • 無水印或徽標
  • 足夠清晰,人類可以理解
databricks-gpt-5-nano
  • JPEG
  • PNG
  • WebP
  • GIF (非動畫 GIF
每次請求最多可輸入 500 張個別圖像 檔案大小限制:每個請求的承載總大小上限為 10 MB N/A
  • 無水印或徽標
  • 足夠清晰,人類可以理解
databricks-gemma-3-12b
  • JPEG
  • PNG
  • WebP
  • GIF
API 請求最多 5 張圖像
  • 所有提供的圖像都會於請求中被處理。
檔案大小限制:每個 API 要求的所有影像總計 10 MB N/A N/A
databricks-llama-4-maverick
  • JPEG
  • PNG
  • WebP
  • GIF
API 請求最多 5 張圖像
  • 所有提供的圖像都會於請求中被處理。
檔案大小限制:每個 API 要求的所有影像總計 10 MB N/A N/A
  • databricks-claude-sonnet-5
  • databricks-claude-sonnet-4-6
  • databricks-claude-sonnet-4-5
  • databricks-claude-haiku-4-5
  • databricks-claude-opus-5
  • databricks-claude-opus-4-8
  • databricks-claude-opus-4-7
  • databricks-claude-opus-4-6
  • databricks-claude-opus-4-5
  • databricks-claude-opus-4-1
  • databricks-claude-sonnet-4
  • JPEG
  • PNG
  • GIF
  • WebP
  • 最多20個影像 用於 Claude.ai
  • API 要求最多 100 個圖片
  • 所有提供的影像都會在要求中處理,這對於比較或對比它們很有用。
  • 大於 8000x8000 像素 的影像將被拒絕。
  • 如果在一個 API 要求中提交超過 20 個影像, 則每個影像允許的大小上限2000 x 2000 像素
為了獲得最佳效能,如果影像太大,請先調整其大小再上傳。
  • 如果影像的 長邊超過 1568 像素大小超過 ~1,600 個標記,則會自動 縮小 ,同時保留長寬比。
  • 非常小的影像任何邊緣的圖元不足 200 像素)可能會 降低效能
  • 若要降低延遲,請將影像保持在 1.15萬像素 以內,且兩個維度最多 1568 圖元。
  • 清晰度:避免影像模糊或像素化。
  • 圖像中的文字:
    • 確保文字 可讀 且不要太小。
    • 避免裁剪主要視覺內容,只是為了放大文字。

圖像到代幣的轉換

本節僅適用於基礎模型 API。 如需外部模型,請參閱提供者的檔。

基礎模型請求中的每個映像都會增加您的權杖使用量。 請參閱 定價計算機,以根據您使用的 token 和模型來估算圖片定價。

圖像理解的局限性

本節僅適用於基礎模型 API。 如需外部模型,請參閱提供者的檔。

以下是支援的 Databricks 託管基礎模型的影像識別限制:

型號 局限性
支援以下 Claude 模型:
  • databricks-claude-sonnet-5
  • databricks-claude-sonnet-4-6
  • databricks-claude-sonnet-4-5
  • databricks-claude-opus-4-1
  • databricks-claude-sonnet-4
以下是 Databricks 上 Claude 模型的限制:
  • 避免將 Claude 用於需要完美精度或敏感分析而沒有人工監督的任務。
  • 人物識別:無法識別或命名圖像中的人物。
  • 準確度:可能會誤解低品質、旋轉或非常小的影像(200 像素)。
  • 空間推理:難以精確佈局,例如讀取類比時鐘或國際象棋位置。
  • :提供近似計數,但對於許多小物體可能不准確。
  • AI 生成的圖像: 無法可靠地檢測合成或虛假圖像。
  • 不當內容:封鎖露骨或違反政策的圖片。
  • 醫療保健:不適合複雜的醫學掃描(例如 CT 和 MRI)。 它不是診斷工具。

其他資源