TEST / app.py
Reality123b's picture
Update app.py
8afc2a3 verified
raw
history blame
2.59 kB
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# Set seed for reproducibility
torch.random.manual_seed(0)
# Load the model and tokenizer (using CPU)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cpu", # Use CPU
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
# Define the pipeline
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device=-1 # CPU
)
# System message (invisible to the user)
SYSTEM_MESSAGE = {"role": "system", "content": "You are a helpful AI assistant."}
# Function to process the user input and generate output
def chatbot_response(conversation_history):
# Build message sequence
messages = [SYSTEM_MESSAGE] + [
{"role": "user", "content": message["user_input"]} for message in conversation_history
]
# Pass messages to the model
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
output = pipe(messages, **generation_args)
assistant_reply = output[0]["generated_text"]
# Append assistant's response to history
conversation_history[-1]["assistant_reply"] = assistant_reply
return conversation_history
# Define Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# AI Chatbot with System Message")
with gr.Row():
with gr.Column():
chatbox = gr.Chatbot(label="Conversation")
input_box = gr.Textbox(label="Your Message", placeholder="Type your message here...")
submit_btn = gr.Button("Submit")
conversation_state = gr.State([]) # Maintain conversation history
# Function to update the conversation
def update_conversation(user_input, history):
if user_input.strip():
history.append({"user_input": user_input})
updated_history = chatbot_response(history)
# Format conversation history for the Chatbot component
formatted_conversation = [
(msg["user_input"], msg.get("assistant_reply", ""))
for msg in updated_history
]
return formatted_conversation, updated_history, ""
return [], history, ""
submit_btn.click(
update_conversation,
inputs=[input_box, conversation_state],
outputs=[chatbox, conversation_state, input_box],
)
# Launch the interface
demo.launch()