NLPToolkit / app.py
Canstralian's picture
Update app.py
821b4f5 verified
raw
history blame
3.64 kB
import gradio as gr
from huggingface_hub import InferenceClient
# Hugging Face client initialization
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# Function to handle NLP responses and interaction with the model
def respond(message, history, system_message, max_tokens, temperature, top_p):
"""
Function to handle user message and generate a response using the NLP model.
Parameters:
message (str): User's current message/input.
history (list): List of tuples representing conversation history (user's and assistant's messages).
system_message (str): System-level instructions to the assistant to guide its responses.
max_tokens (int): Maximum number of tokens to generate in the response.
temperature (float): Degree of randomness in the response generation.
top_p (float): Controls the diversity of the response using nucleus sampling.
Yields:
str: Streamed response as tokens are generated.
"""
# Prepare the message for the assistant, including system-level instructions and history.
messages = [{"role": "system", "content": system_message}]
# Loop through the history and add past conversation to the messages
for user_message, assistant_message in history:
if user_message:
messages.append({"role": "user", "content": user_message})
if assistant_message:
messages.append({"role": "assistant", "content": assistant_message})
# Append the current user message to the conversation
messages.append({"role": "user", "content": message})
# Initialize the response variable
response = ""
# Get the response stream from the Hugging Face model
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
# Extract the token content and append it to the response
token = message.choices[0].delta.content
response += token
yield response
# System prompt to guide the assistant's behavior
default_system_message = (
"You are NLPToolkit Agent, an advanced natural language processing assistant. "
"You specialize in tasks such as text summarization, sentiment analysis, text classification, "
"entity recognition, and answering technical questions about NLP models and datasets. "
"Assist users with clear, concise, and actionable outputs."
)
# Create the Gradio interface for user interaction
def create_interface():
"""
Create and return a Gradio interface for the NLPToolkit Agent with customizable parameters.
Parameters:
None
Returns:
gr.Interface: The Gradio interface object.
"""
return gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value=default_system_message,
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)"
),
],
)
# Run the Gradio interface
if __name__ == "__main__":
demo = create_interface()
demo.launch()