import gradio as gr from huggingface_hub import InferenceClient # Default client with the first model client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.3") # Function to switch between models based on selection def switch_client(model_name: str): return InferenceClient(model_name) # Define presets for each model presets = { "mistralai/Mistral-7B-Instruct-v0.3": { "Fast": {"max_tokens": 256, "temperature": 1.0, "top_p": 0.9}, "Normal": {"max_tokens": 512, "temperature": 0.7, "top_p": 0.95}, "Quality": {"max_tokens": 1024, "temperature": 0.5, "top_p": 0.90}, "Unreal Performance": {"max_tokens": 2048, "temperature": 0.6, "top_p": 0.75}, } } # Fixed system message SYSTEM_MESSAGE = "Lake 1 Base" def respond( message, history: list, model_name, preset_name ): # Switch client based on model selection global client client = switch_client(model_name) messages = [{"role": "system", "content": SYSTEM_MESSAGE}] # Ensure history is a list of dictionaries for val in history: if isinstance(val, dict) and 'role' in val and 'content' in val: messages.append({"role": val['role'], "content": val['content']}) messages.append({"role": "user", "content": message}) # Get the preset settings preset = presets[model_name][preset_name] max_tokens = preset["max_tokens"] temperature = preset["temperature"] top_p = preset["top_p"] # Get the response from the model response = client.chat_completion( messages, max_tokens=max_tokens, temperature=temperature, top_p=top_p, ) # Extract the content from the response final_response = response.choices[0].message['content'] return final_response # Model names and their pseudonyms model_choices = [ ("mistralai/Mistral-7B-Instruct-v0.3", "Lake 1 Base") ] # Convert pseudonyms to model names for the dropdown pseudonyms = [model[1] for model in model_choices] # Function to handle model selection and pseudonyms def respond_with_pseudonym( message, history: list, selected_pseudonym, selected_preset ): # Find the actual model name from the pseudonym model_name = next(model[0] for model in model_choices if model[1] == selected_pseudonym) # Call the existing respond function response = respond(message, history, model_name, selected_preset) return response # Gradio Chat Interface demo = gr.ChatInterface( fn=respond_with_pseudonym, additional_inputs=[ gr.Dropdown(choices=list(presets["mistralai/Mistral-7B-Instruct-v0.3"].keys()), label="Select Preset", value="Fast"), # Preset selection dropdown gr.Dropdown(choices=pseudonyms, label="Select Model", value=pseudonyms[0]) # Pseudonym selection dropdown ], ) if __name__ == "__main__": demo.launch()