from openai import OpenAI import streamlit as st from langchain_openai import ChatOpenAI from tools import sentiment_analysis_util import numpy as np from dotenv import load_dotenv import os st.title("💬 Chatbot") st.caption("") openai_api_key = os.environ["OPENAI_API_KEY"] # Initialize session state for storing messages if it doesn't already exist if "messages" not in st.session_state: st.session_state["messages"] = [{"role": "assistant", "content": "How can I help you?"}] # Display all previous messages for msg in st.session_state.messages: st.chat_message(msg["role"]).write(msg["content"]) # Input for new prompts prompt = st.chat_input("Enter your question:") if prompt: if not openai_api_key: st.error("No OpenAI API key found. Please set the OPENAI_API_KEY environment variable.") st.stop() # Append the new user message to session state st.session_state.messages.append({"role": "user", "content": prompt}) st.chat_message("user").write(prompt) # Use a spinner to indicate that the model is generating a response with st.spinner('Thinking...'): client = OpenAI(api_key=openai_api_key) response = client.chat.completions.create(model="gpt-3.5-turbo", messages=st.session_state.messages) msg = response.choices[0].message.content # Append and display the assistant's response st.session_state.messages.append({"role": "assistant", "content": msg}) st.chat_message("assistant").write(msg)