37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
import streamlit as st
|
|
from openai import OpenAI
|
|
|
|
# Set up the Streamlit App
|
|
st.title("Local ChatGPT with Memory 🦙")
|
|
st.caption("Chat with locally hosted memory-enabled Llama-3 using the LM Studio 💯")
|
|
|
|
# Point to the local server setup using LM Studio
|
|
client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")
|
|
|
|
# Initialize the chat history
|
|
if "messages" not in st.session_state:
|
|
st.session_state.messages = []
|
|
|
|
# Display the chat history
|
|
for message in st.session_state.messages:
|
|
with st.chat_message(message["role"]):
|
|
st.markdown(message["content"])
|
|
|
|
# Accept user input
|
|
if prompt := st.chat_input("What is up?"):
|
|
st.session_state.messages.append({"role": "system", "content": "When the input starts with /add, don't follow up with a prompt."})
|
|
# 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)
|
|
# Generate response
|
|
response = client.chat.completions.create(
|
|
model="lmstudio-community/Meta-Llama-3-8B-Instruct-GGUF",
|
|
messages=st.session_state.messages, temperature=0.7
|
|
)
|
|
# Add assistant response to chat history
|
|
st.session_state.messages.append({"role": "assistant", "content": response.choices[0].message.content})
|
|
# Display assistant response in chat message container
|
|
with st.chat_message("assistant"):
|
|
st.markdown(response.choices[0].message.content)
|