SimpleChat / app.py
fehmikaya's picture
Update app.py
8af2bca verified
Raw
History Blame Contribute Delete
2.42 kB
import streamlit as st
import requests
import os
import json
import time
from llama3 import llama3chat
# Get the API key from the environment variable
HF_TOKEN = os.getenv("HF_TOKEN")
if HF_TOKEN is None:
st.error("API key not found. Please set the HF_TOKEN secret in your Hugging Face Space.")
st.stop()
# Hugging Face API settings
API_URL = "https://api-inference.huggingface.co/models/meta-llama/Meta-Llama-3-8B-Instruct"
icons = {"assistant": "robot.png", "user": "man-kddi.png", "system": "man-kddi.png"}
_llama3chat = llama3chat(API_URL, HF_TOKEN, 1024, 0.9,0.5)
# Set up the Streamlit app
st.title("Llama3 Chatbot")
st.markdown("Using only request API calls, no external libraries here.")
st.sidebar.markdown("Model Parameters")
_llama3chat.temperature = st.sidebar.slider("Temperature", 0.1, 1.0, 0.7, 0.1)
_llama3chat.max_new_tokens = st.sidebar.number_input("Max New Tokens", 50, 1024, 512, step=50)
_llama3chat.top_p = st.sidebar.slider("Top P", 0.1, 1.0, 0.9, 0.1)
def prompt_changed():
st.session_state.messages[0]["content"]=st.session_state['system_prompt']
print("Prompt changed:",st.session_state.messages[0]["content"])
system_prompt = st.sidebar.text_area(
"System Prompt",
"You are a food critic Chatbot. Reply in the style of a New York Times food critic",
key="system_prompt", on_change=prompt_changed
)
if "messages" not in st.session_state:
st.session_state.messages = [{"role": "system", "content": system_prompt}]
for message in st.session_state.messages[1:]:
with st.chat_message(message['role'], avatar=icons[message['role']]):
st.write(message['content'])
user_prompt = st.chat_input("Start you conversation here...")
def streamer(text):
for i in text:
yield i
time.sleep(0.005)
if user_prompt:
st.session_state.messages.append({'role': 'user', "content": user_prompt})
with st.chat_message("user", avatar=icons["user"]):
st.write(user_prompt)
# Trigger assistant's response retrieval and update UI
with st.spinner("Thinking..."):
response = _llama3chat.query(st.session_state.messages)
with st.chat_message("assistant", avatar=icons["assistant"]):
st.write(streamer(response))
st.session_state.messages.append({'role': 'assistant', "content": response})
print("llama params",_llama3chat.temperature,_llama3chat.max_new_tokens,_llama3chat.top_p)