import openai import streamlit as st st.title("ChatGPT-Clone") if "openai_model" not in st.session_state: st.session_state["openai_model"] = "gpt-3.5-turbo-16k" # if "messages" not in st.session_state: # st.session_state.messages = [] if "messages" not in st.session_state or st.sidebar.button("Clear message history"): st.session_state["messages"] = [{"role": "assistant", "content": "How can I help you?"}] for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) openai.api_key = st.sidebar.text_input("OpenAI API Key", type="password") if "openai.api_key" not in st.session_state: st.session_state["openai.api_key"] = openai.api_key if not openai.api_key: st.info("Please add your OpenAI API key to continue.") st.stop() if prompt := st.chat_input("What is up?"): st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.markdown(prompt) with st.chat_message("assistant"): message_placeholder = st.empty() full_response = "" for response in openai.ChatCompletion.create( model=st.session_state["openai_model"], messages=[ {"role": m["role"], "content": m["content"]} for m in st.session_state.messages ], max_tokens=9000, stream=True, ): full_response += response.choices[0].delta.get("content", "") message_placeholder.markdown(full_response + "▌") message_placeholder.markdown(full_response) st.session_state.messages.append({"role": "assistant", "content": full_response})