from utils import im_2_b64, RANDOM_SEED, client import streamlit as st prompt = """ In the following task, you will be presented with some images and a story that is, in some manner, related to that goal. You will be given a specific goal, and a condition that could prevent that goal from being achieved. Using both story and images, you will be asked to identify an event that could result in that condition being true thus preventing goal success. If it is not plausible to identify such an event, you can state that as well. Output in a python dictionary where it should have the following keys: 'event'. Story: {story} Goal: {goal} Condition: {condition} """ def get_gpt4V_response_2(story, goal, condition, images, temperature=0.5): # Convert image to base64 image_urls = [] for image in images: if type(images[0]) == bytes: image_b64 = image image_url = f"data:image/jpeg;base64,{image_b64.decode('utf-8')}" else: image_b64 = im_2_b64(image) image_url = f"data:image/jpeg;base64,{image_b64.decode('utf-8')}" image_urls.append(image_url) st.write("✅ Image converted") now_prompt = prompt.format(story=story, goal=goal, condition=condition) content = [ {"type": "text", "text": now_prompt}, ] st.write("✅ Prompt created") for image_url in image_urls: content.append({ "type": "image_url", "image_url": { "url": image_url, }, }) st.write("🚀 Getting Response from GPT4V") response = client.chat.completions.create( model="gpt-4-vision-preview", seed=RANDOM_SEED, messages=[ { "role": "user", "content": content } ], temperature=temperature, max_tokens=1024, # top_p=1, # frequency_penalty=0, # presence_penalty=0, ) # print(response) # print("Prompt:") # print(now_prompt) out = response.choices[0].message.content # print("OUTPUT:", out) # print("====================================") # print() st.write("✅ Response generated") return out