File size: 2,818 Bytes
9383b4e
 
 
 
 
 
 
 
 
 
 
 
 
eefd049
9383b4e
 
eefd049
9383b4e
 
 
 
 
 
eefd049
9383b4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eefd049
9383b4e
 
 
 
 
 
 
 
 
eefd049
9383b4e
 
 
 
eefd049
9383b4e
 
 
eefd049
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
import gradio as gr
from transformers import pipeline, AutoTokenizer

def load_model(model_name):
    return pipeline("text-generation", model=model_name, device="cpu")

def generate(
    model_name,
    template_name,
    user_input,
    temperature=0.4,
    top_p=0.95,
    top_k=50,
    max_new_tokens=256,
):
    pipe = load_model(model_name)
    # Hier weitere Optionen hinzufügen
    if template_name == "Falcon 1B Template":
        message_template = [
            {"role": "user", "content": "Hello!"},
            {"role": "assistant", "content": "Hello! How can I assist you today?"},
            {"role": "user", "content": user_input},
        ]
    else:  # Standardmäßig "TinyLlama Template"
        message_template = [
            {
                "role": "system",
                "content": "You are a highly knowledgeable and friendly chatbot equipped with extensive information across various domains. Your goal is to understand and respond to user inquiries with accuracy and clarity. You're adept at providing detailed explanations, concise summaries, and insightful responses. Your interactions are always respectful, helpful, and focused on delivering the most relevant information to the user.",
            },
            {"role": "user", "content": user_input},
        ]

    prompt = pipe.tokenizer.apply_chat_template(message_template, tokenize=False, add_generation_prompt=True)
    outputs = pipe(prompt, max_new_tokens=max_new_tokens, do_sample=True,
                   temperature=temperature, top_k=top_k, top_p=top_p, repetition_penalty=1.10)
    return outputs[0]["generated_text"]

model_choices = ["TinyLlama/TinyLlama-1.1B-Chat-v1.0", "ericzzz/falcon-rw-1b-chat"]
template_choices = ["TinyLlama Template", "Falcon Template"]

g = gr.Interface(
    fn=generate,
    inputs=[
        gr.components.Dropdown(choices=model_choices, label="Model", value=model_choices[0], interactive=True),
        gr.components.Dropdown(choices=template_choices, label="Template", value=template_choices[0], interactive=True),
        gr.components.Textbox(lines=2, label="Prompt", value="How many planets are in our solar system?"),
        gr.components.Slider(minimum=0, maximum=1, value=0.4, label="Temperature"),
        gr.components.Slider(minimum=0, maximum=1, value=0.95, label="Top p"),
        gr.components.Slider(minimum=0, maximum=100, step=1, value=50, label="Top k"),
        gr.components.Slider(minimum=1, maximum=1024, step=1, value=256, label="Max tokens"),  
    ],
    outputs=[gr.Textbox(lines=10, label="Output")],
    title="Hugging Face Transformers Model",
    description="A simple interface for generating text with a Hugging Face Transformers model.",
    theme='syddharth/gray-minimal',  # Hinzugefügtes Theme
    concurrency_limit=1
)

g.launch(max_threads=2)