Claude视觉功能指南

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

支持视觉的模型

所有 Claude 3 模型都能够理解和分析图像,无需使用特殊版本即可访问这些功能。

入门指南

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

  1. 直接通过 claude.ai 聊天窗口:像上传文件一样上传图像,或将图像直接拖放到窗口中!
  2. 通过我们的 Console Workbench:选择接受图像的模型后,在每个 User 消息块右上角会出现添加图像的按钮。
  3. 通过 API 请求:请参阅下面的说明。

使用示例

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

    
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 编码的图像:

    
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)

支持的图像格式

Claude 目前支持 JPEG、PNG、GIF 和 WebP 格式的图像。

图像大小

为了获得最佳性能,如果图像可能超过大小或令牌限制,建议在上传之前调整图像大小。图像的长边超过 1568 像素或超过约 1600 个令牌时,将被缩小以保持在大小限制内。如果图像太大,调整大小将增加 time-to-first-token 的延迟,而不会提供额外的性能。

| 纵横比 | 图像大小 |
| ------ | ------------ |
| 1:1 | 1092x1092 px |
| 3:4 | 951x1268 px |
| 2:3 | 896x1344 px |
| 9:16 | 819x1456 px |
| 1:2 | 784x1568 px |

推荐将图像大小调整为不超过 115 万像素,且两个维度都在 1568 像素以内。

图像最佳实践

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

  • 图像清晰度:确保图像清晰,不要太模糊或像素化。
  • 图像放置:最好将图像放在文本之前。放置在文本之后或与文本交错的图像也会表现良好,但推荐使用图像-文本结构。
  • 文本清晰度:如果图像包含重要文本,确保其清晰可辨。
  • 多张图像:您可以在单个请求中包含多张图像(claude.ai 上最多 5 张,API 请求中最多 20 张)。Claude 会分析所有提供的图像,有助于比较或对比图像。

提示技巧

许多适用于基于文本交互的提示技术也适用于基于图像的提示。以下是一些涉及图像的最佳实践提示结构示例:

1. 示例:一张图像 提示结构:

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

API 调用:

    
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. 示例:多张图像 提示结构:

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

API 调用:

    
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 | 只用西班牙语回答。 |
| User | Image 1: [Image 1] Image 2: [Image 2] 这些图像有什么不同? |

API 调用:

    
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 进行长时间的来回交流,随时添加新图像或后续问题。这为迭代图像分析、比较或将视觉与其他知识相结合提供了强大的工作流程。

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

| 角色 | 内容 |
| --------- | ------------------------------------------------------------ |
| User | Image 1: [Image 1] Image 2: [Image 2] 这些图像有什么不同? |
| Assistant | [Claude 的回答] |
| User | Image 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 目前支持 JPEG、PNG、GIF 和 WebP 图像格式。

Claude 可以读取图像 URL 吗? Claude 无法读取图像 URL,API 也不支持在 text 或 image 块中添加 URL。

我可以上传的图像文件大小是否有限制? 是的,每张图像的最大允许文件大小为 5MB(在 claude.ai 上为 10MB)。

我可以在一个请求中包含多少张图像? 通过 Messages API,您可以在单个请求中包含最多 20 张图像。在 claude.ai 上,每个轮次最多可以包含 5 张图像。

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

我可以删除上传的图像吗? 不可以,图像上传是临时的,在 API 请求持续时间之后不会存储。

如果 Claude 的图像解释看起来不正确,我该怎么办? 请仔细检查图像是否清晰、高质量且方向正确。如果问题仍然存在,尝试使用提示工程技术改善结果。如果问题无法解决,请通过 claude.ai 中的反馈界面或联系我们的支持团队。

Claude 可以生成、制作、编辑、操纵或创建图像吗? 不可以,Claude 只是一个图像理解模型,不能生成、制作、编辑、操纵或创建图像。

深入探索视觉

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

  • 多模态 cookbook:提供图像入门和最佳实践技术的提示。
  • API 参考:访问我们的 Messages API 文档,包括涉及图像的 API 调用示例。

如果您有任何其他问题,请随时联系我们的支持团队。您也可以加入我们的开发者社区,与其他创作者联系,并从 Anthropic 专家那里获得帮助。我们很高兴看到您使用 Claude 强大的新视觉功能创造出什么!

阅读全文
AI工具教程
免费领取AI学习资料 进AI副业交流群
礼物
AI工具教程
免费领取AI学习资料 进AI副业交流群