Spaces:
Sleeping
Sleeping
import google.generativeai as genai | |
import streamlit as st | |
def main(): | |
"""main""" | |
st.set_page_config( | |
page_title="Gemini Chatbot", | |
page_icon="π€", | |
layout="centered", | |
initial_sidebar_state="collapsed", | |
) | |
st.header("The Gemini Chatbot π€", divider="rainbow") | |
st.subheader( | |
"Enjoy :red[talking] with :green[Google Gemini] :sunglasses:" | |
) | |
st.markdown("[Checkout the repository](https://github.com/ThivaV/gemini_chatbot)") | |
gemini_key = st.text_input("Enter your Google Gemini API key π", type="password") | |
genai.configure(api_key=gemini_key) | |
model = genai.GenerativeModel("gemini-pro") | |
chat = model.start_chat(history=[]) | |
for message in st.session_state.messages: | |
with st.chat_message(message["role"]): | |
st.markdown(message["content"]) | |
if prompt := st.chat_input("Say something"): | |
# user message | |
with st.chat_message("user"): | |
st.markdown(prompt) | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
response = chat.send_message(prompt, stream=True) | |
complete_response = "" | |
with st.chat_message("assistant"): | |
for chunk in response: | |
complete_response += chunk.text | |
st.write(chunk.text) | |
st.session_state.messages.append( | |
{"role": "assistant", "content": complete_response} | |
) | |
if __name__ == "__main__": | |
# initialize streamlit session state | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
main() | |