AI-Find / app.py
mrhacker7599's picture
Upload 3 files
e4f7945 verified
import boto3
import secrets
import setting
import gradio as gr
from openai import OpenAI
client = OpenAI(api_key=setting.OPEN_AI_KEY)
def upload_to_s3(file_name, bucket_name, object_name=None):
"""
Upload a file to an S3 bucket
:param file_name: File to upload
:param bucket_name: Bucket to upload to
:param object_name: S3 object name. If not specified, file_name is used
:return: Public URL of the uploaded file
"""
# If S3 object_name was not specified, use file_name
if object_name is None:
object_name = file_name
# Upload the file
s3_client = boto3.client('s3', aws_access_key_id=setting.S3_ACCESS_KEY, aws_secret_access_key=setting.S3_SECERET_KEY)
try:
response = s3_client.upload_file(file_name, bucket_name, object_name)
except Exception as e:
print(f"Upload failed: {e}")
return None
# The URL will be of the form 'https://{bucket_name}.s3.amazonaws.com/{object_name}'
return f"https://{bucket_name}.s3.amazonaws.com/{object_name}"
def get_details(uploaded_file_url):
response = client.chat.completions.create(
model="gpt-4-vision-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": setting.SMART_TEXT},
{
"type": "image_url",
"image_url": {
"url": uploaded_file_url,
},
},
],
}
],
max_tokens=300,
)
return(response.choices[0].message.content)
# object_name = secrets.token_hex(5)+'.jpg'
# uploaded_file_url = upload_to_s3('/Users/hacker/Desktop/Cactus/shrikant/ccd.jpg', setting.S3_BUCKET_NAME, object_name)
# print(get_details(uploaded_file_url))
def upload_and_process_image(image_path):
# Generate a unique object name
object_name = secrets.token_hex(5) + '.jpg'
# Upload to S3 and get the URL
uploaded_file_url = upload_to_s3(image_path, setting.S3_BUCKET_NAME, object_name)
# If the upload is successful, get details
if uploaded_file_url:
details = get_details(uploaded_file_url)
return details
else:
return "Failed to upload the image to S3."
# Gradio interface
iface = gr.Interface(
fn=upload_and_process_image,
inputs=gr.Image(type="filepath", label="Upload Image"),
outputs="text",
css="footer {visibility: hidden}",
title="AI Find",
description="Upload image to get details like number of fans, doors, eletrical sockets, ac vent and windows."
)
if __name__ == "__main__":
iface.launch()