ki_rag_classify / my_new_openai.py
elia-waefler's picture
Upload 17 files
c2b923e verified
#nicht aktuell
import os
from openai import OpenAI
import requests
import base64
client = OpenAI()
def image_bytes_to_base64(image_bytes):
"""
Converts an image from bytes to a Base64 encoded string.
Args:
image_bytes (bytes): Byte content of the image.
Returns:
str: A Base64 encoded string of the image.
"""
return base64.b64encode(image_bytes).decode('utf-8')
def image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return str(base64.b64encode(image_file.read()).decode('utf-8'))
def gpt4_new(prompt_text):
gpt_response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "system",
"content": "Du bist eine Maschine, die Dokumente klassifiziert."},
{"role": "user", "content": prompt_text}])
return gpt_response.choices[0].message.content
def vectorize_data(data_input):
# input can be list or string:
if isinstance(data_input, list):
# returning a dictionary
my_dict = {}
for item in data_input:
my_dict[str(item)] = client.embeddings.create(input=data_input,
model="text-embedding-ada-002").data[0].embedding
return my_dict
elif isinstance(data_input, str):
# returning just the vector
return client.embeddings.create(input=data_input, model="text-embedding-ada-002").data[0].embedding
else:
print("none")
def img_create(prompt="a nice house on the beach", download_path=""):
# to open, must download
my_url = client.images.generate(model="dall-e-3", prompt=prompt, size="1024x1024").data[0].url
if download_path:
my_image = requests.get(my_url)
if my_image.status_code == 200:
with open(download_path, 'wb') as f:
f.write(my_image.content)
else:
print("Failed to retrieve image")
return my_url
def img_to_text(img_url="", img_base64="", prompt="What’s in this image?", print_out=True):
if img_url:
img_desc_response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{
"type": "image_url",
"image_url": {
"url": img_url,
},
},
],
}
],
max_tokens=500,
)
if print_out:
print(img_desc_response.choices[0].message.content)
return img_desc_response.choices[0].message.content
elif img_base64:
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"
}
payload = {
"model": "gpt-4-turbo",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{img_base64}"
}
}
]
}
],
"max_tokens": 300
}
img_desc_response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
if print_out:
print(img_desc_response.json()["choices"][0]["message"]["content"])
return img_desc_response.json()["choices"][0]["message"]["content"]
else:
return ValueError
def encode_image_to_base64(image_path):
with open(image_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
return encoded_string
def table_to_text(table=None, prompt="describe this table in plain text. "
"be as precise as possible. spare no detail. "
"what is in this table?", print_out=True):
if table is not None:
response = gpt4_new(f"{prompt} TABLE: {table}")
if print_out:
print(response)
return response
else:
return ValueError
if __name__ == "__main__":
#print("here are all functions that directly call openai.")
#img_create("a skier in the swiss alps", download_path="skier.png")
#img_to_text(img_base64=encode_image_to_base64("skier.png"))
#print(image_to_base64("skier.png"))
#print(vectorize_data("test string"))
print(gpt4_new())