File size: 3,222 Bytes
fc6f52e 8de8f0a 0021024 fc6f52e 8de8f0a fc6f52e c0e0334 ae3d2c0 c0e0334 fc6f52e c0e0334 fc6f52e 8de8f0a c0e0334 fc6f52e c0e0334 fc6f52e c0e0334 fc6f52e c0e0334 88e965c fc6f52e 88e965c fc6f52e 88e965c fc6f52e 4feaad3 8de8f0a 4de8cde 8de8f0a 4feaad3 8de8f0a 4feaad3 8de8f0a c0e0334 ae3d2c0 c0e0334 8de8f0a ae3d2c0 4feaad3 ae3d2c0 8de8f0a c0e0334 8de8f0a fc6f52e 88e965c fc6f52e c0e0334 fc6f52e ae3d2c0 fc6f52e 88e965c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
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() |