JustusI commited on
Commit
d7efdb9
β€’
1 Parent(s): 1b771e3

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +93 -0
app.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv() # take environment variables from .env.
6
+
7
+ import streamlit as st
8
+ import os
9
+ import pathlib
10
+ import textwrap
11
+ from PIL import Image
12
+
13
+
14
+ import google.generativeai as genai
15
+
16
+
17
+ os.getenv("GOOGLE_API_KEY")
18
+ genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
19
+
20
+ ## Function to load OpenAI model and get respones
21
+
22
+ def get_gemini_response(input,image,prompt):
23
+ model = genai.GenerativeModel('gemini-pro-vision')
24
+ response = model.generate_content([input,image[0],prompt])
25
+ return response.text
26
+
27
+
28
+ def input_image_setup(uploaded_file):
29
+ # Check if a file has been uploaded
30
+ if uploaded_file is not None:
31
+ # Read the file into bytes
32
+
33
+ bytes_data = uploaded_file.getvalue()
34
+
35
+ image_parts = [
36
+ {
37
+ "mime_type": uploaded_file.type, # Get the mime type of the uploaded file
38
+ "data": bytes_data
39
+ }
40
+ ]
41
+ return image_parts
42
+ else:
43
+ #raise FileNotFoundError("No file uploaded")
44
+ st.error('Please upload an image', icon="🚨")
45
+
46
+
47
+ ##initialize our streamlit app
48
+
49
+ st.set_page_config(page_title="Image Chat")
50
+
51
+ st.header("Upload an Image and begin to chat")
52
+
53
+ uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
54
+ image=""
55
+ if uploaded_file is not None:
56
+ image = Image.open(uploaded_file)
57
+ st.image(image, caption="Uploaded Image.", use_column_width=True)
58
+
59
+ # input=st.text_input("Input Prompt: ",key="input")
60
+ # if input is None:
61
+ # st.error('Please add an input', icon="🚨")
62
+
63
+ #submit=st.button("Run")
64
+
65
+ input_prompt = """
66
+ Analyze the image and give user a very descriptive information on the details in the image
67
+ """
68
+
69
+ ## If ask button is clicked
70
+
71
+ if 'messages' not in st.session_state:
72
+ st.session_state['messages'] = [] #[{"role": "assistant", "content": "How can I help you?"}]
73
+
74
+ for msg in st.session_state.messages:
75
+ st.chat_message(msg["role"]).write(msg["content"])
76
+
77
+
78
+ if prompt := st.chat_input():
79
+ # if not openai_api_key:
80
+ # st.info("Please add your OpenAI API key to continue.")
81
+ # st.stop()
82
+
83
+ #client = OpenAI(api_key=openai_api_key)
84
+ #client = OpenAI()
85
+ image_data = input_image_setup(uploaded_file)
86
+ st.session_state.messages.append({"role": "user", "content": prompt})
87
+ st.chat_message("user").write(prompt)
88
+ #response = client.chat.completions.create(model="google/gemma-2b-it", messages=st.session_state.messages)
89
+ response=get_gemini_response(input_prompt,image_data,prompt)
90
+
91
+ msg = response #response.choices[0].message.content
92
+ st.session_state.messages.append({"role": "assistant", "content": msg})
93
+ st.chat_message("assistant").write(msg)