mrolando
first commit
e4129b6
raw
history blame
2.95 kB
# import gradio as gr
from dotenv import load_dotenv
import gradio as gr
# Load environment variables from the .env file de forma local
load_dotenv()
import base64
import requests
with open("Iso_Logotipo_Ceibal.png", "rb") as image_file:
encoded_image = base64.b64encode(image_file.read()).decode()
import os
from openai import OpenAI
client=OpenAI(api_key=os.environ["OPENAI_API_KEY"])
api_key=os.environ["OPENAI_API_KEY"]
def respond2(image,text):
# with open('some_file.txt', 'w') as f:
# f.write(processed_string)
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# Path to your image
# Getting the base64 string
base64_image = encode_image(image)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": text
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "low"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
return response.json()['choices'][0]['message']['content']
with gr.Blocks() as demo:
gr.Markdown(
"""
<center>
<h1>
Uso de AI para la generación de imagenes a partir de texto.
</h1>
<img src='data:image/jpg;base64,{}' width=200px>
<h2>
Con este espacio podrás hacer que una AI describa lo que ve en una imagen al responder una pregunta sobre la misma.
</h2>
<h2>
Obtendrás mejores resultados si la pregunta se mantiene simple, por ejemplo, ¿Que se ve en la imagen?
</h2>
</center>
""".format(
encoded_image
)
)
with gr.Row():
with gr.Column():
with gr.Row():
gr.Markdown("Primero debes ingresar la pregunta para la imagen imagen:")
with gr.Row():
prompt = gr.Textbox(
label="Pregunta, debe ser simple."
)
with gr.Row():
image= gr.Image(type="filepath")
with gr.Row():
btn= gr.Button()
with gr.Column():
output = gr.TextArea(
label="Resultado"
) # Move the output up too
# examples = gr.Examples(
# inputs=[prompt]
# examples=[["Un perro en el parque", "low quality"]],
# )
btn.click(respond2,inputs=[image,prompt], outputs=output)
demo.queue()
demo.launch()