import base64
import requests
from PIL import Image
from io import BytesIO
def encode_image(image_path):
with Image.open(image_path) as img:
buffered = BytesIO()
img.save(buffered, format="PNG")
return base64.b64encode(buffered.getvalue()).decode("utf-8")
base64_image = encode_image("receipt.jpg")
url = "https://api.hyperbolic.xyz/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
# First turn: send the image
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What items are on this receipt?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{base64_image}"}
}
]
}
]
response = requests.post(url, headers=headers, json={
"model": "Qwen/Qwen2.5-VL-72B-Instruct",
"messages": messages,
"max_tokens": 512
})
assistant_response = response.json()["choices"][0]["message"]["content"]
print("First response:", assistant_response)
# Second turn: follow-up question (no need to resend image)
messages.append({"role": "assistant", "content": assistant_response})
messages.append({"role": "user", "content": "What is the total amount?"})
response = requests.post(url, headers=headers, json={
"model": "Qwen/Qwen2.5-VL-72B-Instruct",
"messages": messages,
"max_tokens": 256
})
print("Follow-up response:", response.json()["choices"][0]["message"]["content"])