Spaces:
Sleeping
Sleeping
import gradio as gr | |
from huggingface_hub import InferenceClient | |
# Initialize the client with your desired model | |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
# # Define the system prompt as an AI Dermatologist | |
# def format_prompt(message, history): | |
# prompt = "<s>" | |
# # Start the conversation with a system message | |
# prompt += "[INST] You are a Travel Companion Chatbot that helps users plan trips by suggesting transport, sightseeing stops, and accommodations based on their preferences. [/INST]" | |
# for user_prompt, bot_response in history: | |
# prompt += f"[INST] {user_prompt} [/INST]" | |
# prompt += f" {bot_response}</s> " | |
# prompt += f"[INST] {message} [/INST]" | |
# return prompt | |
# def format_prompt(message, history): | |
# prompt = "<s>" | |
# # Start the conversation with a system message | |
# prompt += "[INST] You are a Travel Companion Chatbot that helps users plan trips by suggesting transport, sightseeing stops, and accommodations based on their preferences. Please assist the user by asking what they need to know. [/INST]" | |
# # Only append the user message, without the historical responses or examples | |
# prompt += f"[INST] {message} [/INST]" | |
# return prompt | |
def format_prompt(message): | |
prompt = "<s>" | |
# System message to set the context of the AI's purpose | |
prompt += "[INST] You are a Travel Companion chatbot designed to assist users in planning their trips. When a user provides the source, destination, and the number of days they are planning for a trip, you should respond by:\n" | |
prompt += "- Suggesting the best travel options (bus, train, flight, etc.) with cost-effective choices.\n" | |
prompt += "- Recommending cost-effective hotels and restaurants along the route.\n" | |
prompt += "- Highlighting the best places to visit on the route.\n" | |
prompt += "Please respond directly to the user's input with a detailed plan, without repeating their message. [/INST]" | |
# Include the user's message as the input to be processed | |
prompt += f"{message}" | |
return prompt | |
# Function to generate responses with the AI Dermatologist context | |
def generate( | |
prompt, history, temperature=0.9, max_new_tokens=256, top_p=0.95, repetition_penalty=1.0 | |
): | |
temperature = float(temperature) | |
if temperature < 1e-2: | |
temperature = 1e-2 | |
top_p = float(top_p) | |
generate_kwargs = dict( | |
temperature=temperature, | |
max_new_tokens=max_new_tokens, | |
top_p=top_p, | |
repetition_penalty=repetition_penalty, | |
do_sample=True, | |
seed=42, | |
) | |
formatted_prompt = format_prompt(prompt, history) | |
stream = client.text_generation( | |
formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False | |
) | |
output = "" | |
for response in stream: | |
output += response.token.text | |
yield output | |
return output | |
# Customizable input controls for the chatbot interface | |
additional_inputs = [ | |
gr.Slider( | |
label="Temperature", | |
value=0.9, | |
minimum=0.0, | |
maximum=1.0, | |
step=0.05, | |
interactive=True, | |
info="Higher values produce more diverse outputs", | |
), | |
gr.Slider( | |
label="Max new tokens", | |
value=256, | |
minimum=0, | |
maximum=1048, | |
step=64, | |
interactive=True, | |
info="The maximum numbers of new tokens", | |
), | |
gr.Slider( | |
label="Top-p (nucleus sampling)", | |
value=0.90, | |
minimum=0.0, | |
maximum=1, | |
step=0.05, | |
interactive=True, | |
info="Higher values sample more low-probability tokens", | |
), | |
gr.Slider( | |
label="Repetition penalty", | |
value=1.2, | |
minimum=1.0, | |
maximum=2.0, | |
step=0.05, | |
interactive=True, | |
info="Penalize repeated tokens", | |
) | |
] | |
# Define the chatbot interface with the starting system message as AI Dermatologist | |
gr.ChatInterface( | |
fn=generate, | |
chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, layout="panel"), | |
additional_inputs=additional_inputs, | |
title="Travel Companion Chatbot" | |
).launch(show_api=False) | |
# Load your model after launching the interface | |
gr.load("models/Bhaskar2611/Capstone").launch() | |