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.set_page_config(page_title="LangChain Agent", layout="wide") load_dotenv() OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] llm = ChatOpenAI(model="gpt-3.5-turbo") from langchain_core.runnables import RunnableConfig st.title("💬 ExpressMood") @st.cache_resource def initialize_session_state(): if "chat_history" not in st.session_state: st.session_state["messages"] = [{"role":"system", "content":""" You are a sentiment analysis expert. Answer all questions related to cryptocurrency investment reccommendations. Say I don't know if you don't know. """}] initialize_session_state() client = OpenAI(api_key=OPENAI_API_KEY) if "openai_model" not in st.session_state: st.session_state["openai_model"] = "gpt-3.5-turbo" if prompt := st.chat_input("Any other questions? "): # Add user message to chat history st.session_state.messages.append({"role": "user", "content": prompt}) # Display user message in chat message container with st.chat_message("user"): st.markdown(prompt) # Display assistant response in chat message container with st.chat_message("assistant"): stream = client.chat.completions.create( model=st.session_state["openai_model"], messages=[ {"role": m["role"], "content": m["content"]} for m in st.session_state.messages ], stream=True, ) response = st.write_stream(stream) st.session_state.messages.append({"role": "assistant", "content": response})