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 = "Your name is Lake 1 Base but my is User" 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_model, # Change this to selected_model selected_preset ): print(f"Selected Model: {selected_model}") # Debugging line print(f"Available Models: {pseudonyms}") # Debugging line # Find the actual model name from the pseudonym try: model_name = next(model[0] for model in model_choices if model[1] == selected_model) except StopIteration: return f"Error: The selected model '{selected_model}' is not valid. Please select a valid model." # 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=pseudonyms, label="Select Model", value=pseudonyms[0]), # Pseudonym selection dropdown gr.Dropdown(choices=list(presets["mistralai/Mistral-7B-Instruct-v0.3"].keys()), label="Select Preset", value="Fast") # Preset selection dropdown ], ) if __name__ == "__main__": demo.launch()