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()