Spaces:
Runtime error
Runtime error
# Import the necessary libraries | |
import streamlit as st | |
from openai import OpenAI # TODO: Install the OpenAI library using pip install openai | |
from streamlit import secrets | |
st.title("Mini Project 2: Streamlit Chatbot") | |
# TODO: Replace with your actual OpenAI API key | |
# client = OpenAI(api_key='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') | |
client = OpenAI(api_key=st.secrets["OPENAI_API_KEY"]) | |
# Define a function to get the conversation history (Not required for Part-2, will be useful in Part-3) | |
# def get_conversation(): | |
# ... (code for getting conversation history) | |
# Check for existing session state variables | |
if "openai_model" not in st.session_state: | |
st.session_state['openai_model'] = "gpt-3.5-turbo" | |
if "messages" not in st.session_state: | |
st.session_state['messages'] = [] # {"role": "assistant", "content": "text"} | |
# st.session_state['messages'] = [{"role": "user", "content": "test input"}, {"role": "assistant", "content": "text"}] | |
# print(st.session_state) | |
# st.write(st.session_state) | |
# Display existing chat messages | |
for message in st.session_state['messages']: | |
st.chat_message(message['role']).write(message['content']) | |
# Wait for user input | |
if prompt := st.chat_input("What would you like to chat about?"): | |
# ... (append user message to messages) | |
st.session_state['messages'].append({"role": "user", "content": prompt}) | |
# ... (display user message) | |
st.chat_message(st.session_state['messages'][-1]['role']).write(st.session_state['messages'][-1]['content']) | |
# ... (send request to OpenAI API | |
# Generate AI response | |
with st.chat_message("assistant"): | |
# ... (send request to OpenAI API) | |
stream = client.chat.completions.create( | |
model=st.session_state['openai_model'], | |
messages=st.session_state['messages'], | |
stream=True, | |
) | |
# ... (get AI response and display it) | |
response = st.write_stream(stream) | |
# ... (append AI response to messages) | |
st.session_state['messages'].append({"role": "assistant", "content": response}) |