Spaces:
Sleeping
Sleeping
import streamlit as st | |
import torch | |
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline | |
# Initialize model and tokenizer | |
model = AutoModelForCausalLM.from_pretrained( | |
"microsoft/Phi-3.5-mini-instruct", | |
device_map="cpu", | |
torch_dtype=torch.float16, | |
low_cpu_mem_usage=True, | |
trust_remote_code=True, | |
) | |
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct") | |
# Create pipeline | |
pipe = pipeline( | |
"text-generation", | |
model=model, | |
tokenizer=tokenizer | |
) | |
# Generation arguments | |
generation_args = { | |
"max_new_tokens": 500, | |
"return_full_text": False, | |
"temperature": 0.0, | |
"do_sample": False, | |
} | |
# Chat function | |
def chat(message, history, system_prompt): | |
# Prepare messages | |
messages = [ | |
{"role": "system", "content": system_prompt}, | |
] | |
# Add history to messages | |
for human, assistant in history: | |
messages.append({"role": "user", "content": human}) | |
messages.append({"role": "assistant", "content": assistant}) | |
# Add current message | |
messages.append({"role": "user", "content": message}) | |
# Generate response | |
output = pipe(messages, **generation_args) | |
response = output[0]['generated_text'] | |
return response | |
# Streamlit App Layout | |
st.title("Testing new Phi 3.5 model") | |
st.sidebar.title("Settings") | |
system_prompt = st.sidebar.text_input("System Prompt", value="You are a helpful AI assistant.") | |
# Initialize chat history | |
if "chat_history" not in st.session_state: | |
st.session_state["chat_history"] = [] | |
# Input text box | |
user_input = st.text_input("You:", key="input") | |
# Chat history display | |
if st.session_state["chat_history"]: | |
for user_msg, bot_msg in st.session_state["chat_history"]: | |
st.write(f"**You:** {user_msg}") | |
st.write(f"**Bot:** {bot_msg}") | |
# On submit | |
if user_input: | |
bot_response = chat(user_input, st.session_state["chat_history"], system_prompt) | |
st.session_state["chat_history"].append((user_input, bot_response)) | |
#st.experimental_rerun() | |
# Clear chat history button | |
if st.button("Clear Chat"): | |
st.session_state["chat_history"] = [] | |
#st.experimental_rerun() | |