Abeersherif's picture
Update app.py
6162c50 verified
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
MODEL_NAME = "Abeersherif/Medical_Homework2"
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
def respond(message, history, system_message, max_tokens, temperature, top_p):
"""
message: str -> latest user message
history: list[[user, bot], ...] -> previous chat turns (default tuples mode)
"""
# Build a simple text prompt (no chat template)
conversation = f"System: {system_message}\n\n"
for user_msg, bot_msg in history:
conversation += f"User: {user_msg}\nAssistant: {bot_msg}\n"
conversation += f"User: {message}\nAssistant:"
result = pipe(
conversation,
max_new_tokens=int(max_tokens),
temperature=float(temperature),
top_p=float(top_p),
do_sample=True,
)[0]["generated_text"]
# Keep only what the assistant said last
if "Assistant:" in result:
result = result.split("Assistant:")[-1]
return result.strip()
chatbot = gr.ChatInterface(
fn=respond,
# ⚠️ use default history format (tuples), do NOT set type="messages" here
additional_inputs=[
gr.Textbox(
"You are a helpful medical assistant. Answer concisely with brief reasoning.",
label="System message",
),
gr.Slider(1, 512, value=256, step=1, label="Max new tokens"),
gr.Slider(0.1, 4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p"),
],
)
if __name__ == "__main__":
chatbot.launch()