Loading...
  • 构建
  • 管理
  • 模型与定价
  • 客户端 SDK
  • API 参考
Search...
⌘K
Log in
图像与视觉
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
构建/文件处理

视觉

Claude 的视觉功能允许它理解和分析图像,为多模态交互开启了令人兴奋的可能性。

Was this page helpful?

  • Base64 编码图像示例
  • 基于 URL 的图像示例
  • Files API 图像示例

本指南介绍如何在 Claude 中处理图像,包括最佳实践、代码示例和需要注意的限制。


如何使用视觉功能

通过以下方式使用 Claude 的视觉功能:

  • claude.ai。上传图像就像上传文件一样,或者直接将图像拖放到聊天窗口中。
  • Console Workbench。在每个用户消息块的右上角会出现一个添加图像的按钮。
  • API 请求。请参阅本指南中的示例。

上传前

基础知识和限制

您可以在单个请求中包含多个图像:claude.ai 最多 20 个,API 请求最多 600 个(对于具有 200k 令牌上下文窗口的模型为 100 个)。Claude 在制定响应时会分析所有提供的图像。这对于比较或对比图像很有帮助。

如果您提交的图像大于 8000x8000 像素,它将被拒绝。如果您在一个 API 请求中提交超过 20 个图像,此限制为 2000x2000 像素。

虽然 API 支持每个请求最多 600 个图像,但请求大小限制(标准端点为 32 MB;某些第三方平台上更低)可能会先被达到。对于许多图像,请考虑使用 Files API 上传并通过 file_id 引用,以保持请求负载较小。

即使使用 Files API,包含许多大型图像的请求也可能在达到 600 个图像计数之前失败。在上传前减少图像尺寸或文件大小(例如,通过下采样)(请参阅评估图像大小)。

评估图像大小

为了在不牺牲输出质量的情况下最小化延迟,如果图像太大,请在上传前调整其大小。在 Claude Opus 4.6、Claude Sonnet 4.6 和更早的模型上,如果您的图像长边超过 1568 像素,或您的图像超过约 1,600 个令牌,它首先会被缩小,保持宽高比,直到它在大小限制内。

如果您的输入图像太大需要调整大小,它会增加首个令牌的时间的延迟,对输出质量没有任何好处。任何边小于 200 像素的非常小的图像可能会降低输出质量。

对于 Claude Opus 4.7 之前的模型,为了改进首个令牌的时间,请考虑 将图像调整为不超过 1.15 百万像素(且在两个维度上都在 1568 像素内)。对于 Claude Opus 4.7,请参阅下面的Claude Opus 4.7 上的高分辨率图像支持。

Claude Opus 4.7 上的高分辨率图像支持

Claude Opus 4.7 是第一个具有高分辨率图像支持的 Claude 模型。最大图像分辨率为长边 2576 像素(比之前模型的 1568 像素提高)。这为视觉密集型工作负载解锁了性能提升,对于计算机使用、屏幕截图理解和文档分析特别有价值。

高分辨率支持在 Claude Opus 4.7 上是自动的,不需要测试版标头或客户端选择加入。

令牌成本: Claude Opus 4.7 上的全分辨率图像可以使用比之前模型多约 3 倍的图像令牌(每个图像最多 4784 个令牌,相比之前的约 1,600 个令牌上限)。如果您不需要额外的保真度,在发送前对图像进行下采样以控制令牌成本。

坐标数学: 在 Claude Opus 4.7 上,模型返回的指向和边界框坐标与实际图像像素的比例为 1

,因此不需要进行比例因子转换。这简化了计算机使用、注释和本地化工作流。

以下是 API 接受的最大图像大小表,这些图像不会因常见宽高比而被调整大小。使用 Claude Sonnet 4.6,这些图像使用约 1,600 个令牌,每 1k 个图像约 $4.80。

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

计算图像成本

您在请求中包含的每个图像都计入您的令牌使用量。要计算近似成本,请将近似图像令牌数乘以您使用的模型的每令牌价格。

如果您的图像不需要调整大小,您可以通过此算法估计使用的令牌数:tokens = (width px * height px)/750

以下是基于 Claude Sonnet 4.6 每令牌价格为每百万输入令牌 $3 的 API 大小限制内不同图像大小的近似令牌化和成本示例:

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

确保图像质量

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

  • 图像格式:使用支持的图像格式:JPEG、PNG、GIF 或 WebP。
  • 图像清晰度:确保图像清晰,不会太模糊或像素化。
  • 文本:如果图像包含重要文本,请确保其清晰易读且不会太小。避免仅为了放大文本而裁剪关键视觉背景。

提示示例

许多提示技术对于与 Claude 的基于文本的交互效果很好,也可以应用于基于图像的提示。

这些示例演示了涉及图像的最佳实践提示结构。

就像在查询前放置长文档改进文本提示中的结果一样,Claude 在图像位于文本之前时效果最好。放在文本之后或与文本交错的图像仍然表现良好,但如果您的用例允许,请优先使用图像-然后-文本结构。

关于提示示例

以下示例演示了如何使用各种编程语言和方法使用 Claude 的视觉功能。您可以通过三种方式向 Claude 提供图像:

  1. 作为 image 内容块中的 base64 编码图像
  2. 作为对在线托管图像的 URL 引用
  3. 使用 Files API(上传一次,多次使用)

base64 示例提示使用这些变量:

以下是如何使用 base64 编码图像和 URL 引用在 Messages API 请求中包含图像的示例:

Base64 编码图像示例

基于 URL 的图像示例

Files API 图像示例

对于您会重复使用的图像或想要避免编码开销的情况,请使用 Files API。上传一次图像,然后在后续消息中引用返回的 file_id,而不是重新发送 base64 数据。

在多轮对话和代理工作流中,每个请求都会重新发送完整的对话历史。如果图像是 base64 编码的,完整的图像字节会包含在每一轮的有效负载中,这会随着对话的增长而显著增加请求大小和延迟。将图像上传到 Files API 并通过 file_id 引用它们可以保持请求有效负载较小,无论对话历史中积累了多少图像。

有关更多示例代码和参数详情,请参阅 Messages API 示例。


限制

虽然 Claude 的图像理解能力处于最前沿,但需要注意一些限制:

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

始终仔细审查和验证 Claude 的图像解释,特别是对于高风险用例。不要在没有人工监督的情况下使用 Claude 执行需要完美精度或敏感图像分析的任务。


常见问题


深入了解视觉

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

  • 多模态 cookbook:此 cookbook 提供了有关 图像入门 和 最佳实践技术 的提示,以确保图像的最高质量性能。了解如何有效地使用图像提示 Claude 来执行任务,例如 解释和分析图表 或 从表单中提取内容。
  • API 参考:Messages API 的文档,包括涉及图像的示例 API 调用。

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

import base64
import httpx

# 对于 base64 编码的图像
image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.standard_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.standard_b64encode(httpx.get(image2_url).content).decode("utf-8")

# 对于基于 URL 的图像,您可以直接在请求中使用 URL
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)
print(message)
client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg",
                    },
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)
print(message)
client = anthropic.Anthropic()

# 上传图像文件
with open("image.jpg", "rb") as f:
    file_upload = client.beta.files.upload(file=("image.jpg", f, "image/jpeg"))

# 在消息中使用上传的文件
message = client.beta.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    betas=["files-api-2025-04-14"],
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {"type": "file", "file_id": file_upload.id},
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)

print(message.content)