Groove-GPT / app.py
LordFarquaad42's picture
changed layout
1487cce
raw
history blame
2.45 kB
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")