import streamlit as st | |
from PIL import Image | |
from datetime import time as t | |
import time | |
from operator import itemgetter | |
import os | |
import json | |
import getpass | |
import openai | |
from langchain.vectorstores import Pinecone | |
from langchain.embeddings import OpenAIEmbeddings | |
import pinecone | |
from results import results_agent | |
from filter import filter_agent | |
from reranker import reranker | |
from utils import build_filter | |
OPENAI_API = st.secrets["OPENAI_API"] | |
PINECONE_API = st.secrets["PINECONE_API"] | |
openai.api_key = OPENAI_API | |
pinecone.init( | |
api_key= PINECONE_API, | |
environment="gcp-starter" | |
) | |
index_name = "use-class-db" | |
embeddings = OpenAIEmbeddings(openai_api_key = OPENAI_API) | |
index = pinecone.Index(index_name) | |
k = 5 | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
st.title("USC GPT - Find the perfect class") | |
class_time = st.slider( | |
"Filter Class Times:", | |
value=(t(11, 30), t(12, 45))) | |
# st.write("You're scheduled for:", class_time) | |
units = st.slider( | |
"Number of units", | |
1, 4, | |
value = (1, 4) | |
) | |
# for message in st.session_state.messages: | |
# with st.chat_message(message["role"]): | |
# st.markdown(message["content"]) | |
assistant = st.chat_message("assistant") | |
assistant.write("How can I help you today?") | |
def assistant_response(response): | |
message_placeholder = st.empty() | |
full_response = "" | |
assistant_response = response | |
# Simulate stream of response with milliseconds delay | |
for chunk in assistant_response.split(): | |
full_response += chunk + " " | |
time.sleep(0.05) | |
# Add a blinking cursor to simulate typing | |
assistant.markdown(full_response + "β") | |
assistant.markdown(full_response) | |
# Add assistant response to chat history | |
st.session_state.messages.append({"role": "assistant", "content": full_response}) | |
assistant_response("Yah I'm tired af right now boi") | |
# if prompt := st.chat_input("What kind of class are you looking for?"): | |
# # Display user message in chat message container | |
# with st.chat_message("user"): | |
# st.markdown(prompt) | |
# # Add user message to chat history | |
# st.session_state.messages.append({"role": "user", "content": prompt}) | |
# response = filter_agent(prompt, OPENAI_API) | |
# query = response | |
# response = index.query( | |
# vector= embeddings.embed_query(query), | |
# # filter= build_filter(json), | |
# top_k=5, | |
# include_metadata=True | |
# ) | |
# response = reranker(query, response) | |
# result_query = 'Original Query:' + query + 'Query Results:' + str(response) | |
# assistant_response = results_agent(result_query, OPENAI_API) | |
# if assistant_response: | |
# with st.chat_message("assistant"): | |
# message_placeholder = st.empty() | |
# full_response = "" | |
# # Simulate stream of response with milliseconds delay | |
# for chunk in assistant_response.split(): | |
# full_response += chunk + " " | |
# time.sleep(0.05) | |
# # Add a blinking cursor to simulate typing | |
# message_placeholder.markdown(full_response + "β") | |
# message_placeholder.markdown(full_response) | |
# # Add assistant response to chat history | |
# st.session_state.messages.append({"role": "assistant", "content": full_response}) | |