Claude视觉功能指南
Claude 3 系列模型带来了新的视觉能力,使 Claude 能够理解和分析图像,为多模态交互开启了令人兴奋的可能性。您可以同时提供文本和图像输入,以丰富您的对话并实现强大的新用例。
支持视觉的模型
所有 Claude 3 模型都能够理解和分析图像,无需使用特殊版本即可访问这些功能。
入门指南
目前,您可以通过以下三种方式利用 Claude 的视觉功能:
- 直接通过 claude.ai 聊天窗口:像上传文件一样上传图像,或将图像直接拖放到窗口中!
- 通过我们的 Console Workbench:选择接受图像的模型后,在每个 User 消息块右上角会出现添加图像的按钮。
- 通过 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 强大的新视觉功能创造出什么!