File size: 2,507 Bytes
7841db2
0a8cafa
4fc9e70
7841db2
 
4fc9e70
7841db2
 
 
 
4fc9e70
7841db2
 
 
 
 
 
 
 
 
 
 
 
 
0a8cafa
 
7841db2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0a8cafa
 
4fc9e70
7841db2
f3d87e2
 
7841db2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f3d87e2
 
0a8cafa
 
7841db2
 
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
import os
import gradio as gr
from huggingface_hub import login, InferenceClient

# Authenticate with Hugging Face API
api_key = os.getenv("TOKEN")
login(api_key)

# Initialize clients for different models
llama_client = InferenceClient("meta-llama/Llama-3.1-70B-Instruct")
gpt_client = InferenceClient("openai/gpt-4")

# Define the response function
def respond(
    message,
    history: list[dict],
    system_message,
    max_tokens,
    temperature,
    top_p,
    selected_models,
):
    messages = [{"role": "system", "content": system_message}] + history
    messages.append({"role": "user", "content": message})

    responses = {}

    if "Llama" in selected_models:
        llama_response = ""
        for token in llama_client.chat_completion(
            messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p
        ):
            delta = token.choices[0].delta.content
            llama_response += delta
        responses["Llama"] = llama_response

    if "GPT" in selected_models:
        gpt_response = ""
        for token in gpt_client.chat_completion(
            messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p
        ):
            delta = token.choices[0].delta.content
            gpt_response += delta
        responses["GPT"] = gpt_response

    return responses

# Build Gradio app
def create_demo():
    with gr.Blocks() as demo:
        gr.Markdown("# AI Model Comparison Tool 🌟")
        gr.ChatInterface(
            respond,
            type="messages",
            additional_inputs=[
                gr.Textbox(
                    value="You are a helpful assistant providing answers for technical and customer support queries.",
                    label="System message"
                ),
                gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
                gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
                gr.Slider(
                    minimum=0.1,
                    maximum=1.0,
                    value=0.95,
                    step=0.05,
                    label="Top-p (nucleus sampling)"
                ),
                gr.CheckboxGroup(
                    ["Llama", "GPT"],
                    label="Select models to compare",
                    value=["Llama"]
                ),
            ],
        )
    return demo

if __name__ == "__main__":
    demo = create_demo()
    demo.launch()