File size: 1,677 Bytes
a5f1a61 1c65519 a5f1a61 1c65519 a5f1a61 1c65519 a5f1a61 1c65519 a5f1a61 1c65519 a5f1a61 1c65519 a5f1a61 3e23a05 a5f1a61 e90b181 a5f1a61 1c65519 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import base64
from openai import OpenAI
class GPT4Vision:
def __init__(self):
self.client = OpenAI()
def encode_image(self, image_file):
"""
Encode the image to base64 format.
:param image_file: File object of the image.
:return: Base64 encoded string of the image.
"""
return base64.b64encode(image_file.read()).decode('utf-8')
def describe(self, image_file, user_message):
"""
Get a description of the image using OpenAI's GPT-4 Vision API.
:param image_file: File object of the image.
:param user_message: Custom text message to send as user input.
:return: The API response.
"""
base64_image = self.encode_image(image_file)
response = self.client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": user_message},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{base64_image}"
},
},
],
}
],
max_tokens=3000,
)
return response.choices[0].message.content
# # Example usage
# gpt4v = GPT4Vision()
# image_path = "/path/to/image.png"
# with open(image_path, "rb") as image_file:
# user_message = "Describe this image for me."
# description = gpt4v.describe(image_file, user_message)
# print(description)
|