bert / app.py
jhansi1's picture
Update app.py
533bf8f verified
import gradio as gr
from huggingface_hub import InferenceClient
from transformers import pipeline
from typing import List, Tuple # Importing for type annotations
# Initialize the BERT model pipeline for the "fill-mask" task
pipe = pipeline("fill-mask", model="bert-base-uncased")
# Function to handle the response generation using BERT
def respond(
message: str,
history: List[Tuple[str, str]], # Using List and Tuple for type annotation
system_message: str,
max_tokens: int,
temperature: float,
top_p: float,
):
messages = [{"role": "system", "content": system_message}]
# Append history to the messages list
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Append the current user message
messages.append({"role": "user", "content": message})
response = ""
# Using the BERT pipeline to fill the mask (this is different from the GPT-style completion)
# BERT doesn't generate text the same way, so we are simulating a response for this demo
result = pipe(f"Hello, how are you today? {message} [MASK]")
# Collecting the filled-in mask (likely output from BERT's "fill-mask" task)
response = result[0]['sequence']
yield response
# Setting up Gradio Interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
)
if __name__ == "__main__":
demo.launch()