from huggingface_hub import InferenceClient import gradio as gr from datetime import datetime from textblob import TextBlob # for typo correction API_URL = "https://api-inference.huggingface.co/models/" # Initialize the InferenceClient client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.1") def format_prompt(message, history): """Format the prompt for the text generation model.""" prompt = "" for user_prompt, bot_response in history: prompt += f"[INST] {user_prompt} [/INST]" prompt += f" {bot_response} " prompt += f"[INST] {message} [/INST]" return prompt def correct_typos(text): """Correct typos in the text using TextBlob.""" corrected_text = str(TextBlob(text).correct()) return corrected_text def generate(prompt, history): """Generate a response using the text generation model.""" # Correct typos in the prompt prompt = correct_typos(prompt) # Check if the prompt is asking who created the bot if "who created you" in prompt.lower(): return "I was created by Aniket Kumar and many more." # Handle small talk elif "how are you" in prompt.lower(): return "I'm an AI and don't have feelings, but I'm here to help you. How can I assist you today?" # Set up parameters for text generation generate_kwargs = dict( temperature=0.9, max_new_tokens=512, top_p=0.95, repetition_penalty=1.0, do_sample=True, ) # Format the prompt formatted_prompt = format_prompt(prompt, history) # Generate the response 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 def create_interface(): """Create the Gradio interface.""" customCSS = """ #component-7 { # this is the default element ID of the chat component height: 800px; # adjust the height as needed flex-grow: 1; } """ with gr.Blocks(css=customCSS) as demo: gr.ChatInterface( generate, ) demo.queue().launch(debug=True) # Run the application create_interface()