| | import os |
| | import streamlit as st |
| | from streamlit_option_menu import option_menu |
| | from gemini_utility import (load_gemini_pro, |
| | gemini_pro_vision_responce) |
| | from PIL import Image |
| |
|
| | |
| | working_directory = os.path.dirname(os.path.abspath(__file__)) |
| |
|
| | |
| | st.set_page_config( |
| | page_title="Gemini AI", |
| | page_icon="🤖", |
| | layout="centered", |
| | initial_sidebar_state="expanded", |
| | ) |
| |
|
| | with st.sidebar: |
| | selected = option_menu("Gemini AI", |
| | ["Chatbot", |
| | "Image Captioning", |
| | ], |
| | menu_icon="robot", |
| | icons=['chat-dots-fill', 'image-fill'], |
| | default_index=0) |
| |
|
| | def translate_role_to_streamlit(user_role): |
| | if user_role == "model": |
| | return "assistant" |
| | else: |
| | return user_role |
| |
|
| | if selected == "Chatbot": |
| | model = load_gemini_pro() |
| |
|
| | |
| | if "chat_session" not in st.session_state: |
| | st.session_state.chat_session = model.start_chat(history=[]) |
| |
|
| | |
| | st.title("Gemini Chatbot 🤖") |
| |
|
| | |
| | for message in st.session_state.chat_session.history: |
| | with st.chat_message(translate_role_to_streamlit(message.role)): |
| | st.markdown(message.parts[0].text) |
| |
|
| | |
| | user_prompt = st.chat_input("Ask Gemini Pro...") |
| |
|
| | if user_prompt: |
| | st.chat_message("user").markdown(user_prompt) |
| | gemini_response = st.session_state.chat_session.send_message(user_prompt) |
| |
|
| | |
| | with st.chat_message("assistant"): |
| | st.markdown(gemini_response.text) |
| |
|
| |
|
| | if selected == "Image Captioning": |
| |
|
| | |
| | st.title("Gemini Image Caption Generation📸") |
| |
|
| | upload_image = st.file_uploader("Upload an image...", type=["jpg", "jpeg", "png"]) |
| |
|
| | if upload_image and st.button("Generate"): |
| | image = Image.open(upload_image) |
| |
|
| | col1, col2 = st.columns(2) |
| |
|
| | with col1: |
| | st.image(image, caption="Uploaded Image", use_column_width=True) |
| |
|
| | default_prompt = "Write a caption for this image" |
| |
|
| | |
| | caption = gemini_pro_vision_responce(default_prompt, image) |
| |
|
| | with col2: |
| | st.info(caption) |
| |
|