File size: 3,131 Bytes
7b0adee 44f0668 7b0adee c20a82b 7b0adee 04c6814 fb72213 3f952c6 8a54bba fb72213 7b0adee 04c6814 7b0adee 44f0668 7b0adee 44f0668 7b0adee c20a82b 7b0adee c20a82b 7b0adee 04c6814 7b0adee 04c6814 7b0adee c20a82b 7b0adee c20a82b 7b0adee c20a82b fb72213 c20a82b |
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 77 78 79 80 81 82 83 84 |
import streamlit as st
from streamlit_chat import message
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.chains.conversation.memory import (ConversationBufferMemory,
ConversationSummaryMemory,
ConversationBufferWindowMemory
)
if 'conversation' not in st.session_state:
st.session_state['conversation'] =None
if 'messages' not in st.session_state:
st.session_state['messages'] =[]
if 'API_Key' not in st.session_state:
st.session_state['API_Key'] =''
# Setting page title and header
st.set_page_config(page_title="ChatMate: Your Professional AI Conversation Partner Solution", page_icon=":robot_face:")
st.markdown("<h1 style='text-align: center; color: navy;'>ChatMate: Your Professional AI Conversation Partner Solution</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Interact with a cutting-edge language model</h4>", unsafe_allow_html=True)
st.sidebar.title("🔑")
st.session_state['API_Key']= st.sidebar.text_input("Enter your OpenAI API Key here please.",type="password")
# summarise_button = st.sidebar.button("Summarise the conversation", key="summarise")
#if summarise_button:
# summarise_placeholder = st.sidebar.write("Nice chatting with you my friend ❤️")
# Function to get response from the model
def getresponse(userInput, api_key):
if st.session_state['conversation'] is None:
llm = ChatOpenAI(
temperature=0,
openai_api_key=api_key,
model_name='gpt-3.5-turbo'
)
st.session_state['conversation'] = ConversationChain(
llm=llm,
verbose=True,
memory=ConversationSummaryMemory(llm=llm)
)
response=st.session_state['conversation'].predict(input=userInput)
print(st.session_state['conversation'].memory.buffer)
return response
response_container = st.container()
# Here we will have a container for user input text box
container = st.container()
# User input and response display
with container:
with st.form(key='my_form', clear_on_submit=True):
user_input = st.text_area("Ask a question:", key='input', height=100)
submit_button = st.form_submit_button(label='Send')
if submit_button:
st.session_state['messages'].append(user_input)
model_response=getresponse(user_input,st.session_state['API_Key'])
st.session_state['messages'].append(model_response)
with response_container:
for i in range(len(st.session_state['messages'])):
if (i % 2) == 0:
message(st.session_state['messages'][i], is_user=True, key=str(i) + '_user')
else:
message(st.session_state['messages'][i], key=str(i) + '_AI')
st.markdown('<i class="fas fa-user-tie"></i> User', unsafe_allow_html=True)
|