开始上手 - 如何将图像传递给 Claude

Claude 3 模型系列支持 API 中的图像输入。以下是如何将图像传递给 Claude 的方法:

%pip install anthropic IPython
from IPython.display import Image
Image(filename='../images/sunset.jpeg')

jpeg

import base64
from anthropic import Anthropic

client = Anthropic()
MODEL_NAME = "claude-3-opus-20240229"

with open("../images/sunset.jpeg", "rb") as image_file:
    binary_data = image_file.read()
    base_64_encoded_data = base64.b64encode(binary_data)
    base_64_string = base_64_encoded_data.decode('utf-8')

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": base64_string}},
            {"type": "text", "text": "Write a sonnet based on this image."}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
在崎岖的海岸上,一座明亮的灯塔,
它坚定的光芒是穿透最黑暗夜晚的向导。
当太阳以粉红色和红色的色调落下时,
灯塔矗立着,一个坚定的领头人物。

海浪拍打着下方饱经风霜的石头,
永恒的节奏,古老的潮涨潮落。
但塔楼依然屹立,坚决不动摇,
一个警惕而沉默的守护者。

广阔的天海相连,
地平线是天堂与大地相遇的地方。
这永恒的景象,是力量的证明,
自然的伟力与人类的奋斗。

灯塔骄傲地矗立在渐逝的白昼中,
永恒的象征,指引安全的道路。

通过 URL 传递图像

如果你只有图像的 URL,仍然可以用几行代码就能将它传递给 Claude。

IMAGE_URL = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Machu_Picchu%2C_Peru_%282018%29.jpg/2560px-Machu_Picchu%2C_Peru_%282018%29.jpg"
Image(url=IMAGE_URL)

import httpx

IMAGE_DATA = base64.b64encode(httpx.get(IMAGE_URL).content).decode("utf-8")

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": IMAGE_DATA}},
            {"type": "text", "text": "Describe this image in two sentences."}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
这张图片描绘了古老的印加城市马丘比丘,它坐落在秘鲁安第斯山脉的高处。保存完好的石头遗迹,包括梯田、广场和建筑,都坐落在一片陡峭、翠绿的山脉的壮丽背景下,天空中有部分云彩。