File size: 3,069 Bytes
02fc79d
 
7e0679d
933893f
cfb47bd
02fc79d
933893f
 
 
02fc79d
933893f
 
 
 
d96f124
 
 
8d5d779
d96f124
933893f
 
6e7b9cd
 
02fc79d
19b3bf4
 
 
 
 
7e0679d
19b3bf4
c364451
19b3bf4
d96f124
19b3bf4
 
02fc79d
19b3bf4
 
 
 
 
 
 
 
 
a6327bc
 
 
19b3bf4
a6327bc
 
 
 
 
19b3bf4
a6327bc
19b3bf4
a6327bc
 
 
a9c5062
0aeebcd
a9c5062
 
 
 
 
 
 
 
 
 
a6327bc
a9c5062
 
 
19b3bf4
 
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
import gradio as gr
from gpt4all import GPT4All
from urllib.request import urlopen
import json
import time

url = "https://raw.githubusercontent.com/nomic-ai/gpt4all/main/gpt4all-chat/metadata/models3.json"
response = urlopen(url)
data_json = json.loads(response.read())

def model_choices():
    model_list = [data_json[i]['filename'] for i in range(len(data_json))]
    return model_list

model_description = {model['filename']: model['description'] for model in data_json}

def llm_intro(selected_model):
    return model_description.get(selected_model, "No description available for this model selection.")

def generate_text(input_text, selected_model):
    model = GPT4All(selected_model)
    output = model.generate(input_text, max_tokens=100)
    return output

# model_dropdown = gr.Dropdown(choices=model_choices(), 
#                              multiselect=False, 
#                              label="LLMs to choose from", 
#                              type="value", 
#                              value="orca-mini-3b-gguf2-q4_0.gguf")

# explanation = gr.Textbox(label="Model Description", interactive=True, lines=10)

# model_dropdown.change(fn=llm_intro, inputs=model_dropdown, outputs=explanation)

# input_text = gr.Textbox(lines=5, label="Input Text")
# output_text = gr.Textbox(lines=5, label="Generated Text")

# gr.Interface(fn=generate_text, 
#              inputs=[input_text, model_dropdown], 
#              outputs=output_text, 
#              theme = gr.themes.Soft(), 
#              analytics_enabled=True, 
#              title="GPT4All Text Generation Experiment").launch()

with gr.Blocks() as demo:
    gr.Markdown("## GPT4All Text Generation Experiment")

    with gr.Row():
        
    
        model_selection = gr.Dropdown(choices=model_choices(), 
                                     multiselect=False, 
                                     label="LLMs to choose from", 
                                     type="value", 
                                     value="orca-mini-3b-gguf2-q4_0.gguf")
    
        explanation = gr.Textbox(label="Model Description", lines=3, interactive=False, value=llm_intro("orca-mini-3b-gguf2-q4_0.gguf"))
    
        # Link the dropdown with the textbox to update the description based on the selected model
        model_selection.change(fn=llm_intro, inputs=model_selection, outputs=explanation)

    chatbot = gr.Chatbot()
    input_text = gr.Textbox(lines=3, label="Input Text")
    # output_text = gr.Textbox(lines=10, label="Generated Text")
    clear = gr.ClearButton([input_text, chatbot])

    def respond(message, chat_history):
        bot_reply = gr.Textbox(lines=10, label="Generated Text")
        chat_history.append((message, bot_reply))
        time.sleep(2)
        return "", chat_history

    input_text.submit(respond, [input_text, chatbot], [input_text, chatbot])
        
    # # Button to generate text
    # generate_btn = gr.Button("Generate")
    # generate_btn.click(fn=generate_text, inputs=[input_text, model_selection], outputs=output_text)

demo.launch()