import base64 import requests from io import BytesIO from PIL import Image def encode_image(img): buffered = BytesIO() img.save(buffered, format="PNG") encoded_string = base64.b64encode(buffered.getvalue()).decode("utf-8") return encoded_string # 이미지 파일 경로를 제대로 설정 img_path = "./1.png" try: img = Image.open(img_path) except FileNotFoundError: print(f"Error: The image file '{img_path}' was not found.") exit() base64_img = encode_image(img) api = "https://api.hyperbolic.xyz/v1/chat/completions" api_key = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyZzMyNzAyNEBnbWFpbC5jb20ifQ._frFve-BYZdb0Qo6FIj6xcDcxpY-6QlC2O-ToQxBjkc" # 실제 API 키로 수정 필요 headers = { "Content-Type": "application/json", "Authorization": f"Bearer {api_key}", } payload = { "messages": [ { "role": "user", "content": [ {"type": "text", "text": "What is this image?"}, { "type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_img}"}, # PNG MIME 타입 수정 }, ], } ], "model": "mistralai/Pixtral-12B-2409", "max_tokens": 2048, "temperature": 0.7, "top_p": 0.9, } try: response = requests.post(api, headers=headers, json=payload) response.raise_for_status() # HTTPError가 발생하면 예외 발생 result = response.json() # JSON으로 파싱 print(result) except requests.exceptions.HTTPError as http_err: print(f"HTTP error occurred: {http_err}") # HTTP 오류 메시지 출력 except requests.exceptions.RequestException as req_err: print(f"Request error occurred: {req_err}") # 일반 요청 오류 메시지 출력 except ValueError as json_err: print(f"JSON decode error: {json_err}") # JSON 파싱 오류 메시지 출력