LuisMBA's picture
Update app.py
dd1dd14 verified
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
from logic import get_author_by_title, get_year_by_title, get_summary_by_title, find_book_by_description
# Load the fine-tuned model
model_name = "LuisMBA/sci_fi_books_chat_100_ex"
tokenizer = AutoTokenizer.from_pretrained('gpt2')
model = AutoModelForCausalLM.from_pretrained(model_name)
def chatbot_response(prompt):
# Detect intent and handle queries (answer questions directly -> more reliable)
'''if "author of" in prompt.lower():
title = prompt.split("of")[-1].strip()
return get_author_by_title(title)
elif "year" in prompt.lower():
title = prompt.split("book")[-1].strip()
return get_year_by_title(title)
elif "about" in prompt.lower() or "summary" in prompt.lower():
title = prompt.split("book")[-1].strip()
return get_summary_by_title(title)
elif "book about" in prompt.lower() or "recommend a book" in prompt.lower():
description = prompt.split("about")[-1].strip()
return find_book_by_description(description)'''
# Default: Use the fine-tuned model
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Gradio interface
iface = gr.Interface(
fn=chatbot_response,
inputs=gr.Textbox(label="Ask about books"),
outputs=gr.Textbox(label="Response"),
title="Book Q&A Chatbot"
)
if __name__ == "__main__":
iface.launch()