查询视觉模型

本文介绍如何为针对针对视觉任务优化的基础模型编写查询请求,并将其发送到模型服务终结点。

马赛克 AI 模型服务提供统一的 API,用于使用各种基础模型来理解和分析图像,从而解锁强大的多模式功能。 该功能可通过特定的 Databricks 托管模型获得,作为 基础模型 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 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)

聊天完成 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)

支持的模型

有关支持的视觉模型,请参阅 基础模型类型

输入图像要求

本部分仅适用于基础模型 API。 有关外部模型,请参阅提供程序的文档。

每个请求存在多个映像

  • 最多 20 张图像 用于 Claude.ai
  • API 请求可最多处理 100 张图像
  • 所有提供的图像都在请求中进行处理,这对于比较或对比它们很有用。

大小限制

  • 大于 8000x8000 像素 的图像将被拒绝。
  • 如果在一个 API 请求中提交超过 20 个图像, 则每个图像允许的最大大小2000 x 2000 像素

图像大小调整建议

  • 为了获得最佳性能,在上传图像之前调整图像的大小(如果图像太大)。
  • 如果图像的长边超过1568像素或其大小超过约1600个标记,图像将会自动缩小,同时保持纵横比。
  • 非常小的图像任何边缘的 200 像素以下)可能会 降低性能
  • 为了降低延迟,请将图像保持在 1.15 万像素 以内,同时在两个维度中最多保留 1568 像素。

图像质量注意事项

  • 支持的格式: JPEG、PNG、GIF、WebP。
  • 清晰: 避免模糊或像素化图像。
  • 图像中的文本:
    • 确保文本 清晰明了 ,而且不太小。
    • 避免裁剪关键视觉上下文,只是为了放大文本。

计算成本

本部分仅适用于基础模型 API。 有关外部模型,请参阅提供程序的文档。

系统会将对基础模型的请求中的每个映像添加到令牌使用情况。

令牌计数和估计值

如果不需要调整大小,请使用以下公式估算令牌:令牌 =(宽 px × 高 px)/750

不同映像大小的近似令牌计数:

图像大小 令牌
200×200 像素 (0.04 MP) ~54
1000×1000 像素 (1 MP) ~1334
1092×1092 像素 (1.19 MP) ~1590

图像理解的限制

本部分仅适用于基础模型 API。 有关外部模型,请参阅提供程序的文档。

对 Databricks 上的 Claude 模型的高级图像理解有一些限制:

  • 人员标识:无法识别或命名图像中的人员。
  • 准确性:可能误解了低质量、旋转或非常小的图像(<200 像素)。
  • 空间推理:与精确布局作斗争,如读取模拟时钟或棋盘位置。
  • 计数:提供近似计数,但对于许多小型对象来说可能不准确。
  • AI 生成的图像:无法可靠地检测合成或假图像。
  • 不适当的内容:阻止显式或违反策略的映像。
  • 医疗保健:不适合复杂的医疗扫描(例如 CT 和 MRIs)。 这不是诊断工具。

仔细查看所有输出,尤其是对于高风险用例。 避免将 Claude 用于需要完美精度或敏感分析的任务,而无需人工监督。

其他资源