File size: 1,167 Bytes
545d507
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95da7d8
545d507
 
 
 
 
 
 
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
import streamlit as st
import openai

st.title("ChatGPT-Streamlit")

if 'dialogues' not in st.session_state:
    st.session_state['dialogues'] = []

def set_api_key():
    openai.api_key = st.session_state.api_key

st.text_input('Enter your OpenAI API key', type='password', key='api_key', on_change=set_api_key)

def get_response():
    st.session_state.dialogues.append({'role': 'user', 'content': st.session_state.prompt})
    st.session_state.prompt = ''
    try:
        completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=st.session_state.dialogues)
        content = completion.choices[0].message.content
    except:
        content = 'Please enter your OpenAI API key!'
    st.session_state.dialogues.append({'role': 'assistant', 'content': content})
    return content

def clear():
    st.session_state.dialogues = []

st.text_area('Press ctrl+enter or click blank space to send message', on_change=get_response, key='prompt')

st.button('Start a new chat', on_click=clear)

for message in reversed(st.session_state.dialogues):
    st.subheader('ChatGPT' if message['role'] == 'assistant' else 'You')
    st.write(message['content'])