File size: 1,707 Bytes
c39f600
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer

def load_model(model_name):
    model = AutoModelForCausalLM.from_pretrained(model_name)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    return model, tokenizer
    
def converse(prompt, model1_name, model2_name, temperature1, temperature2):
    model1, tokenizer1 = load_model(model1_name)
    model2, tokenizer2 = load_model(model2_name)
    
    inputs = tokenizer1(prompt, return_tensors="pt")
    outputs = model1.generate(inputs.input_ids, max_new_tokens=50, temperature=temperature1, do_sample=True, pad_token_id=tokenizer1.eos_token_id)
    response1 = tokenizer1.decode(outputs[0], skip_special_tokens=True)

    inputs = tokenizer2(response1, return_tensors="pt")
    outputs = model2.generate(inputs.input_ids, max_new_tokens=50, temperature=temperature2, do_sample=True, pad_token_id=tokenizer2.eos_token_id)
    response2 = tokenizer2.decode(outputs[0], skip_special_tokens=True)

    return response1, response2

iface = gr.Interface(
    fn=converse,
    inputs=[
        gr.Textbox(label="Input Prompt"),
        gr.Dropdown(["gpt2", "distilgpt2", "EleutherAI/gpt-neo-2.7B"], label="Model 1"),
        gr.Dropdown(["gpt2", "distilgpt2", "EleutherAI/gpt-neo-2.7B"], label="Model 2"),
        gr.Slider(0.1, 1.0, step=0.1, value=0.7, label="Temperature for Model 1"),
        gr.Slider(0.1, 1.0, step=0.1, value=0.7, label="Temperature for Model 2")
    ],
    outputs=["text", "text"],
    title="Multi-Model Conversation",
    description="Input a prompt to start a conversation between two models. Adjust temperatures for more diverse outputs."
)

if __name__ == "__main__":
    iface.launch()