Spaces:
Sleeping
Sleeping
File size: 3,152 Bytes
5e994a1 5914582 250dba9 5e994a1 5914582 64c7a8a 5e994a1 5914582 ab53869 470ad92 7f8f7cd ab53869 5914582 64c7a8a 5914582 72b0075 ab53869 72b0075 5914582 64c7a8a 250dba9 ab53869 64c7a8a ab53869 64c7a8a ab53869 64c7a8a 9f9e34c 64c7a8a 250dba9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import streamlit as st
import chromadb
from chromadb.utils import embedding_functions
from sentence_transformers import SentenceTransformer
from openai import OpenAI
client = chromadb.PersistentClient(path="./chromadb/")
MODEL_NAME: str = "mixedbread-ai/mxbai-embed-large-v1" # ~ 0.5 gb
COLLECTION_NAME: str = "scheme"
EMBEDDING_FUNC = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=MODEL_NAME)
schemer = client.get_collection(
name=COLLECTION_NAME,
embedding_function=EMBEDDING_FUNC,
)
DATA_AVAL: bool = schemer.count() > 0
APP_NAME: str = "Groove-GPT"
history: list(str) = []
st.title(APP_NAME)
st.header("What is Groovy-GPT?")
st.write("Groovy-GPT is a RAG (Retrieval-Augmented Generation) model that uses ChromaDB to retrieve relevant documents and then uses OpenAI's models to generate a response.")
st.write("The model is trained on the MIT Scheme textbook and a handful of Discrete Math and Paradigms related content that Professor Troeger posted")
st.write("Data Avaliable: ", DATA_AVAL)
user_question: str = st.text_area("Enter your groovy questions here")
remember_chat_history = st.toggle("Remember This Chat's History")
temperature = st.slider("Creativity of Model", 0, 2, 1, 'float')
st.markdown("High creativity will make it go crazy - keep it low")
access_key: str = st.text_input("Enter your gpt key here", type="password")
st.markdown("*For more information about how to get an access key, read [this article](https://platform.openai.com/api-keys). Make sure it has money in it ☠️*", unsafe_allow_html=True)
gpt_type: str = st.selectbox(label="Choose GPT Type", options=["gpt-3.5-turbo", "gpt-3.5-turbo-1106", "gpt-3.5-turbo-0125", "gpt-4-32k-0613", "gpt-4-0613", "gpt-4-0125-preview"], index=0)
st.markdown("*For more information about GPT types, read [this article](https://platform.openai.com/docs/models).*", unsafe_allow_html=True)
st.divider()
if st.button('Query Database') & (access_key != "") & (user_question != ""):
openai_client = OpenAI(api_key=access_key)
with st.spinner('Loading...'):
# Perform the Chromadb query.
results = schemer.query(
query_texts=[user_question],
n_results=10,
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 Scheme, with great knowledge on programming paradigms. You wish to teach the user everything you know about programming paradigms in scheme - so you explain everything thoroughly"},
{"role": "user", "content": user_question},
{"role": "assistant", "content": str(documents)},
{"role": "assistant", "history": str(history)}
],
temperature=temperature
)
history.append({user_question : response.choices[0].message.content} if remember_chat_history else {})
st.header("Prof Says ...")
st.write(response.choices[0].message.content)
|