server-3 / app.py
BICORP's picture
Update app.py
55a5c28 verified
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()