Spaces:
Sleeping
Sleeping
import streamlit as st | |
from openai import OpenAI | |
from params import params | |
from database import get_client | |
CLIENT = get_client() | |
APP_NAME: str = "Groove-GPT" | |
history = [] | |
st.set_page_config(layout="wide") | |
# INFO | |
st.title(APP_NAME) | |
l_col, r_col = st.columns((3, 1)) | |
# param column | |
with r_col: | |
( | |
submit_button, | |
remember_chat_history, | |
temperature, | |
num_samples, | |
access_key, | |
gpt_type, | |
) = params() | |
# input & response | |
with l_col: | |
user_question: str = st.text_input("Enter your groovy questions here") | |
# ON BUTTON CLICK | |
if submit_button & (access_key != "") & (user_question != ""): | |
openai_client = OpenAI(api_key=access_key) | |
with st.spinner("Loading..."): | |
# Perform the Chromadb query. | |
results = CLIENT.query( | |
query_texts=[user_question], | |
n_results=num_samples, | |
include=["documents"], | |
) | |
documents = results["documents"] | |
response = openai_client.chat.completions.create( | |
model="gpt-3.5-turbo", | |
messages=[ | |
{ | |
"role": "system", | |
"content": "You are an expert in functional programming in R5RS, with great knowledge on programming paradigms. You wish to teach the user everything you know about programming paradigms in R5RS - so you explain everything thoroughly. Surround Latex equations in dollar signs as such Inline equation: $equation$ & Display equation: $$equation$$.", | |
}, | |
{"role": "user", "content": user_question}, | |
{"role": "assistant", "content": str(documents)}, | |
{"role": "user", "content": f"Conversation History: {history}"}, | |
], | |
temperature=temperature, | |
stream=True, | |
) | |
st.header("The Super Duper Schemer Says ...") | |
text_placeholder = st.empty() | |
content = "" | |
for i, chunk in enumerate(response): | |
if chunk.choices[0].delta.content is not None: | |
# Append the chunk content to the string | |
content += chunk.choices[0].delta.content | |
text_placeholder.markdown(content) | |
history.append({user_question: content} if remember_chat_history else {}) | |
else: | |
st.write("Please provide an input and (valid) API key") | |