图片分析
Claude 图片分析接口支持通过 MaomaoToken 调用 Claude 模型对图片进行智能分析。你可以使用本地图片 Base64,也可以直接传入可访问的网络图片 URL。
请求地址
https://api.maomaotoken.com/v1/messages本地图片分析
下面示例会读取本地图片,自动识别 MIME 类型并转换为 Base64,然后发送给 Claude 分析。
import base64
import json
import os
from pathlib import Path
import requests
# ==================== 基础配置 ====================
BASE_URL = "https://api.maomaotoken.com"
API_KEY = os.getenv("MAOMAO_API_KEY") or "sk-******************************"
image_path = "./example.png"
headers = {
"content-type": "application/json",
"x-api-key": API_KEY
}
def get_image_media_type(file_path: str) -> str:
ext = Path(file_path).suffix.lower()
media_types = {
".jpg": "image/jpeg",
".jpeg": "image/jpeg",
".png": "image/png",
".gif": "image/gif",
".webp": "image/webp"
}
return media_types.get(ext, "image/jpeg")
def encode_image_to_base64(file_path: str) -> str:
with open(file_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
if not os.path.exists(image_path):
raise FileNotFoundError(f"图片文件不存在: {image_path}")
print(f"正在读取图片: {image_path}")
image_data = encode_image_to_base64(image_path)
media_type = get_image_media_type(image_path)
payload = {
"model": "claude-sonnet-4-6",
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_data
}
},
{
"type": "text",
"text": "这张图片里有什么?"
}
]
}
]
}
print(f"正在分析图片: {image_path}")
response = requests.post(
f"{BASE_URL}/v1/messages",
headers=headers,
json=payload
)
if response.status_code == 200:
result = response.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
else:
print(f"请求失败,状态码: {response.status_code}")
print(response.text)本地图片返回示例
{
"id": "msg_example",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{
"type": "text",
"text": "这是一幅奇幻或科幻风格的概念艺术作品。画面中央有一棵巨大的古树,周围有漂浮岩石、藤蔓、远景山脉和金色光线,整体营造出宏大、梦幻和探索感。"
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 1364,
"output_tokens": 473
}
}URL 图片分析
如果图片已经有可访问的 URL,可以直接使用 source.type: "url"。
import json
import os
import requests
BASE_URL = "https://api.maomaotoken.com"
API_KEY = os.getenv("MAOMAO_API_KEY") or "sk-**********************************************"
image_url = "https://example.com/example.jpg"
headers = {
"content-type": "application/json",
"x-api-key": API_KEY
}
if not image_url.startswith(("http://", "https://")):
raise ValueError(f"无效的图片 URL: {image_url}")
payload = {
"model": "claude-sonnet-4-6",
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": image_url
}
},
{
"type": "text",
"text": "这张图片里有什么?"
}
]
}
]
}
response = requests.post(
f"{BASE_URL}/v1/messages",
headers=headers,
json=payload
)
if response.status_code == 200:
result = response.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
else:
print(f"请求失败,状态码: {response.status_code}")
print(response.text)URL 图片返回示例
{
"id": "msg_example",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{
"type": "text",
"text": "这张图片展示了一台 Canon 计算器。画面中可以看到液晶显示屏、数字键、运算键、红色清除键,以及放置计算器的桌面背景。"
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 1584,
"output_tokens": 317
}
}支持格式
| 格式 | MIME 类型 |
|---|---|
| JPEG / JPG | image/jpeg |
| PNG | image/png |
| GIF | image/gif |
| WebP | image/webp |
注意事项
- 请将示例中的 API Key 替换为你的真实 MaomaoToken API Key。
- 本地图片方式需要传入纯 Base64 数据,不要包含
data:image/...;base64,前缀。 - URL 图片需要能被 MaomaoToken 服务端正常访问。
- 图片越大,输入 Token 消耗越高,响应时间也可能更长。
- 模型分析结果仅供参考,涉及合同、票据、医学图像等重要内容时建议人工复核。