Claude 3 系列模型带来了新的视觉能力,使 Claude 能够理解和分析图像,为多模态交互开启了令人兴奋的可能性。使用 Claude,您现在可以同时提供文本和图像输入,以丰富您的对话并实现强大的新用例。

支持视觉的模型

您无需使用我们 Claude 3 模型的特殊版本即可访问 Claude 的视觉功能。所有 Claude 3 模型都能够理解和分析图像。

本指南将引导您了解如何在 Claude 中使用图像,包括最佳实践、代码示例以及需要注意的限制。

立即在 claude.ai 上尝试使用图像聊天!


入门指南

目前,您可以通过三种方式利用 Claude 的视觉功能:

  • 直接通过 claude.ai 聊天窗口。像上传文件一样上传图像,或将图像直接拖放到窗口中!
  • 通过我们的 Console Workbench。如果您选择接受图像的模型(仅限 Claude 3 模型),则每个 User 消息块右上角都会出现添加图像的按钮。
  • 通过 API 请求 - 请参阅下面的说明。

在本指南中,我们将使用 Anthropic Python SDK,以及以下示例变量。我们将使用 httpx 库从维基百科获取示例图像,但您可以使用任何适合您的图像源。

Python
import anthropic
import base64
import httpx

client = anthropic.Anthropic()

image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.b64encode(httpx.get(image1_url).content).decode("utf-8")

image2_url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg"
image2_media_type = "image/jpeg"
image2_data = base64.b64encode(httpx.get(image2_url).content).decode("utf-8")

要在进行 API 请求时使用图像,您可以在 image 内容块中将图像作为 base64 编码的图像提供给 Claude。下面是一个简单的 Python 示例,展示了如何在 Messages API 请求中包含 base64 编码的图像:

Python

message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "描述这张图片。"
                }
            ],
        }
    ],
)
print(message)

支持的图像格式为 JPEG、PNG、GIF 和 WebP。有关更多示例代码和参数详细信息,请参阅 Messages API 示例


图像大小

为了获得最佳性能,如果您的图像可能超过大小或令牌限制,我们建议在上传之前调整图像大小。如果图像的长边超过 1568 像素,或图像超过约 1600 个令牌,它将首先被缩小,保持纵横比,直到在大小限制内。如果您的输入图像太大并需要调整大小,它将增加 time-to-first-token 的延迟,而不会为您提供任何额外的模型性能。任何边小于 200 像素的非常小的图像可能会导致性能下降。

如果您想改善 time-to-first-token,我们建议将图像大小调整为不超过 115 万像素(并且两个维度都在 1568 像素以内)。

下表是我们的 API 接受的最大图像大小,对于常见的纵横比,这些图像不会被调整大小。所有这些图像近似为约 1600 个令牌和每 1000 张图像约 $4.80(假设使用 Claude 3 Sonnet):

纵横比图像大小
1:11092x1092 px
3:4951x1268 px
2:3896x1344 px
9:16819x1456 px
1:2784x1568 px

图像最佳实践

在向 Claude 提供图像时,请记住以下准则以获得最佳结果:

  • 图像清晰度: 确保您的图像清晰,不要太模糊或像素化。Claude 可能难以准确解释不清晰或低质量的图像。
  • 图像放置: 就像文档查询放置一样,当图像位于文本之前时,Claude 效果最好。放置在文本之后或与文本交错的图像仍然会表现良好,但如果您的用例允许,我们建议使用图像-文本结构。有关更多详细信息,请参阅视觉提示技巧
  • 文本: 如果您的图像包含重要文本,请确保它清晰可辨,不要太小。但是,避免仅为了放大文本而裁剪掉关键的视觉上下文。
  • 多张图像: 您可以在单个请求中包含多张图像(在 claude.ai 上最多 5 张,在 API 请求中最多 20 张)。Claude 在制定响应时会分析所有提供的图像。这对于比较或对比图像很有帮助。

有关更多详细信息和准则,请参阅限制


提示技巧

许多适用于与 Claude 进行基于文本交互的提示技术也可以应用于基于图像的提示。请参阅我们的多模态 cookbook,了解图像处理技术和用例的演练,以及相应的提示技术和策略。

以下是一些涉及图像的最佳实践提示结构示例。通常,最好将图像放在提示中关于它们的问题或使用它们的任务说明之前,并且在有多个图像的情况下,用 Image 1:Image 2: 等介绍每个图像。您不需要在图像之间或图像和提示之间使用换行符。

1. 示例:一张图像

以下是提示结构:

角色内容
User[Image] 描述这张图片。

以下是相应的 API 调用:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "描述这张图片。"
                }
            ],
        }
    ],
)

2. 示例:多张图像

以下是提示结构:

角色内容
UserImage 1: [Image 1] Image 2: [Image 2] 这些图像有什么不同?

以下是相应的 API 调用:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Image 1:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Image 2:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image2_media_type,
                        "data": image2_data,
                    },
                },
                {
                    "type": "text",
                    "text": "这些图像有什么不同?"
                }
            ],
        }
    ],
)

3. 示例:带有系统提示的多张图像

以下是提示结构:

内容
System只用西班牙语回答。
UserImage 1: [Image 1] Image 2: [Image 2] 这些图像有什么不同?

以下是相应的 API 调用:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="只用西班牙语回答。",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Image 1:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Image 2:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image2_media_type,
                        "data": image2_data,
                    },
                },
                {
                    "type": "text",
                    "text": "这些图像有什么不同?"
                }
            ],
        }
    ],
)

4. 示例:两个对话轮次中的四张图像

Claude 的视觉能力在混合图像和文本的多模态对话中真正大放异彩。您可以与 Claude 进行长时间的来回交流,随时添加新图像或后续问题。这为迭代图像分析、比较或将视觉与其他知识相结合提供了强大的工作流程。

以下是一个示例提示结构:

角色内容
UserImage 1: [Image 1] Image 2: [Image 2] 这些图像有什么不同?
Assistant[Claude 的回答]
UserImage 1: [Image 3] Image 2: [Image 4] 这些图像与前两张图像相似吗?
Assistant[Claude 的回答]

使用 API 时,只需将新图像插入 user 角色中的 Messages 数组,作为任何标准多轮对话结构的一部分。


图像成本

您在向 Claude 发送请求时包含的每张图像都会计入您的令牌使用量。要计算大致成本,请将图像令牌的大致数量乘以您使用的模型的每令牌价格。您可以在我们的定价页面上找到模型定价详情。

假设您的图像不需要调整大小,您可以通过以下简单算法估算使用的令牌数:

tokens = (width px * height px)/750

以下是我们 API 的大小限制内不同图像大小的大致令牌化和成本示例,假设使用 Claude 3 Sonnet,每百万输入令牌 $3:

图像大小令牌数每张图像成本每 1000 张图像成本
200x200 px(0.04 megapixels)~54~$0.00016~$0.16
1000x1000 px(1 megapixel)~1334~$0.004~$4.00
1092x1092 px(1.19 megapixels)~1590~$0.0048~$4.80

限制

虽然 Claude 的图像理解能力处于领先地位,但有一些限制需要注意:

  • 人物识别: Claude 不能用于识别(即命名)图像中的人,并且会拒绝这样做。
  • 准确性: 在解释低质量、旋转或非常小(小于 200 像素)的图像时,Claude 可能会产生幻觉或出错。
  • 空间推理: Claude 的空间推理能力有限。它可能难以完成需要精确定位或布局的任务,例如读取模拟时钟表盘或描述国际象棋棋子的确切位置。
  • 计数: Claude 可以给出图像中对象的大致计数,但可能并不总是精确准确,尤其是对于大量小对象。
  • AI 生成的图像: Claude 不知道图像是否是 AI 生成的,如果被问到,可能会给出错误的答案。不要依赖它来检测虚假或合成图像。
  • 不适当的内容: Claude 不会处理违反我们的可接受使用政策的不适当或明确的图像。
  • 医疗保健应用: 虽然 Claude 可以分析一般的医学图像,但它并非设计用于解释复杂的诊断扫描,如 CT 或 MRI。Claude 的输出不应被视为专业医疗建议或诊断的替代品。

请务必仔细审查和验证 Claude 的图像解释,尤其是对于高风险的用例。在没有人工监督的情况下,不要将 Claude 用于需要完美精度或敏感图像分析的任务。


常见问题

Claude 支持哪些图像文件类型?

Claude 目前支持 JPEG、PNG、GIF 和 WebP 图像格式,具体为 image/jpegimage/pngimage/gifimage/webp

Claude 可以读取图像 URL 吗?

Claude 在任何界面上都无法读取图像 URL,包括 claude.ai。我们的 API 目前不支持在 textimage 块中添加 URL。在 text 块中添加图像 URL(或任何类型的 URL)可能会导致 Claude 产生幻觉,因为 Claude 目前无法从该 URL 检索信息。

我可以上传的图像文件大小是否有限制?

是的,每张图像的最大允许文件大小为 5MB(在 claude.ai 上每张图像为 10MB)。使用我们的 API 时,大于 5MB 的图像将被拒绝并返回错误。

我可以在一个请求中包含多少张图像?

通过 Messages API,您可以在单个请求中包含最多 20 张图像。在 claude.ai 上,每个轮次最多可以包含 5 张图像。使用我们的 API 时,超过该限制的图像数量将被拒绝并返回错误。

Claude 会读取图像元数据吗?

不会,Claude 不会解析或接收传递给它的图像中的任何元数据。

我可以删除上传的图像吗?

不可以。此外,图像上传是临时的,在 API 请求持续时间之后不会存储。上传的图像在处理完成后会自动删除。

在哪里可以找到有关图像上传数据隐私和安全的更多详细信息?

请参阅我们的隐私政策页面,了解我们如何处理上传的图像和其他数据的信息。我们不使用上传的图像来训练我们的模型。

如果 Claude 的图像解释看起来不正确,我该怎么办?

如果您从 Claude 那里得到的图像解释看起来不正确,请首先仔细检查图像是否清晰、高质量且方向正确。如果问题仍然存在,请尝试使用提示工程技术来改善结果。如果问题无法解决,请通过在 claude.ai 中直接使用竖起大拇指/竖起大拇指界面标记令人担忧的输出,或联系我们的支持团队让我们知道。您的反馈有助于我们改进!

Claude 可以生成、制作、编辑、操纵或创建图像吗?

不可以,Claude 只是一个图像理解模型。它可以解释和分析图像,但不能生成、制作、编辑、操纵或创建图像。


深入探索视觉

准备好使用 Claude 开始使用图像构建了吗?以下是一些有用的资源:

如果您有任何其他问题,请随时联系我们的支持团队。您也可以加入我们的开发者社区,与其他创作者联系,并从 Anthropic 专家那里获得帮助。

我们很高兴看到您使用 Claude 强大的新视觉功能创造出什么!