Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| from streamlit_chat import message | |
| import google.generativeai as genai | |
| from langchain.prompts import PromptTemplate | |
| from langchain import LLMChain | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| genai.configure(api_key=os.environ["GOOGLE_API_KEY"]) | |
| llm = ChatGoogleGenerativeAI(model="gemini-pro", | |
| temperature=0.7) | |
| template = """You are a chatbot called "CRETA" having a conversation with a human and you are created by Pachaiappan an AI Specialist. | |
| previous_chat: | |
| {chat_history} | |
| Human: {human_input} | |
| Chatbot:""" | |
| prompt = PromptTemplate( | |
| input_variables=["chat_history", "human_input"], template=template | |
| ) | |
| llm_chain = LLMChain( | |
| llm=llm, | |
| prompt=prompt, | |
| verbose=True, | |
| ) | |
| previous_response = "" | |
| def conversational_chat(query): | |
| global previous_response | |
| for i in st.session_state['history']: | |
| if i is not None: | |
| previous_response += f"Human: {i[0]}\n Chatbot: {i[1]}" | |
| print(previous_response) | |
| result = llm_chain.predict(chat_history=previous_response, human_input=query) | |
| st.session_state['history'].append((query, result)) | |
| return result | |
| st.title("ASSISTANT BOT:") | |
| if 'history' not in st.session_state: | |
| st.session_state['history'] = [] | |
| # Initialize messages | |
| if 'generated' not in st.session_state: | |
| st.session_state['generated'] = ["Hello ! Ask me anything"] | |
| if 'past' not in st.session_state: | |
| st.session_state['past'] = [" "] | |
| # Create containers for chat history and user input | |
| response_container = st.container() | |
| container = st.container() | |
| # User input form | |
| user_input = st.chat_input("Ask Your Questions π..") | |
| with container: | |
| if user_input: | |
| output = conversational_chat(user_input) | |
| # answer = response_generator(output) | |
| st.session_state['past'].append(user_input) | |
| st.session_state['generated'].append(output) | |
| # Display chat history | |
| if st.session_state['generated']: | |
| with response_container: | |
| for i in range(len(st.session_state['generated'])): | |
| if i != 0: | |
| message(st.session_state["past"][i], is_user=True, key=str(i) + '_user', avatar_style="adventurer") | |
| message(st.session_state["generated"][i], key=str(i), avatar_style="bottts") | |