File size: 2,411 Bytes
f97dea6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3a7790d
f97dea6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54d32e1
f97dea6
 
 
fedcdaf
 
f97dea6
 
 
 
 
 
 
 
 
 
fedcdaf
f97dea6
 
 
 
 
 
 
 
 
fedcdaf
f97dea6
 
 
 
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import base64
import requests
import streamlit as st
from io import BytesIO
from PIL import Image

# Function to encode image into base64
def encode_image(img):
    buffered = BytesIO()
    img.save(buffered, format="PNG")
    encoded_string = base64.b64encode(buffered.getvalue()).decode("utf-8")
    return encoded_string

# Function to interact with the Hyperbolic API
def get_api_response(base64_img):
    api_url = "https://api.hyperbolic.xyz/v1/chat/completions"
    api_key = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZGlsYXppejIwMTNAZ21haWwuY29tIiwiaWF0IjoxNzMyODU1NDI1fQ.lRjbz9LMW9jj7Lf7I8m_dTRh4KQ1wDCdWiTRGErMuEk"  # Replace with your actual API key
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}",
    }
    payload = {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "What is this image?"},
                    {
                        "type": "image_url",
                        "image_url": {"url": f"data:image/jpeg;base64,{base64_img}"},
                    },
                ],
            }
        ],
        "model": "Qwen/Qwen2-VL-72B-Instruct",
        "max_tokens": 2048,
        "temperature": 0.7,
        "top_p": 0.9,
    }

    response = requests.post(api_url, headers=headers, json=payload)
    if response.status_code == 200:
        return response.json()['choices'][0]['message']['content']
    else:
        return f"Error: Unable to get response from API {response.status_code}."

# Streamlit interface
def main():
    st.title("Image Dex: AI Image Explainer")

    st.write("Upload an image and get a response based on the image content.")

    # File uploader for image
    uploaded_file = st.file_uploader("Choose an image...", type=["png", "jpg", "jpeg"])

    if uploaded_file is not None:
        # Open the uploaded image
        img = Image.open(uploaded_file)
        
        # Display the uploaded image
        st.image(img, caption="Uploaded Image",width=400)

        # Encode the image to base64
        base64_img = encode_image(img)

        # Get response from the API
        st.write("Processing the image...")
        response = get_api_response(base64_img)

        # Display the result
        st.write("Result:-> ", response)

# Run the Streamlit app
if __name__ == "__main__":
    main()