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'])