File size: 3,615 Bytes
7b0adee
 
44f0668
7b0adee
 
 
 
 
 
 
 
 
 
 
 
c20a82b
7b0adee
 
04c6814
2527697
04c6814
 
b46fda5
 
fb72213
8a54bba
fb72213
 
 
 
7b0adee
04c6814
7b0adee
 
 
 
44f0668
7b0adee
 
44f0668
7b0adee
 
 
 
 
 
 
 
 
 
c20a82b
7b0adee
 
 
c20a82b
 
7b0adee
 
 
 
04c6814
7b0adee
 
04c6814
7b0adee
 
 
 
c20a82b
7b0adee
c20a82b
7b0adee
3a1ba74
 
 
 
 
 
 
7b0adee
 
3a1ba74
 
 
 
 
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
85
86
87
88
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 Partner</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Interact with a cutting-edge language model</h4>", unsafe_allow_html=True)

# API Keys
# st.sidebar.text_input() will automatically update st.session_state['API_Key'] with the input value whenever the user types into the field. 
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')
        
            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, user_icon='<i class="fas fa-user-tie"></i>', key=str(i) + '_user')
                    else:
                        message(st.session_state['messages'][i], bot_icon='<i class="fas fa-robot"></i>', key=str(i) + '_AI')