Spaces:
Sleeping
Sleeping
import gradio as gr | |
models = [ | |
{"name": "Claudfuen 1", "url": "claudfuen/photorealistic-fuen-v1"}, | |
{"name": "Deliberate", "url": "Masagin/Deliberate"}, | |
{"name": "Seek Art Mega", "url": "coreco/seek.art_MEGA"}, | |
{"name": "Realistic Vision 1.4", "url": "SG161222/Realistic_Vision_V1.4"}, | |
{"name": "Dreamshaper", "url": "Lykon/DreamShaper"}, | |
] | |
current_model = models[0] | |
text_gen = gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link") | |
models2 = [] | |
for model in models: | |
model_url = f"models/{model['url']}" | |
loaded_model = gr.Interface.load(model_url, live=True, preprocess=True) | |
models2.append(loaded_model) | |
def text_it(inputs, text_gen=text_gen): | |
return text_gen(inputs) | |
def set_model(current_model_index): | |
global current_model | |
current_model = models[current_model_index] | |
return gr.update(label=f"{current_model['name']}") | |
def send_it(inputs, model_choice): | |
proc = models2[model_choice] | |
return proc(inputs) | |
css = """ | |
<style> | |
.searchable-dropdown { | |
position: relative; | |
} | |
.searchable-dropdown input { | |
width: 100%; | |
padding: 0.5rem; | |
border-radius: 5px; | |
border: 1px solid #ccc; | |
} | |
.searchable-dropdown select { | |
width: 100%; | |
padding: 0.5rem; | |
border-radius: 5px; | |
border: 1px solid #ccc; | |
position: absolute; | |
top: 0; | |
left: 0; | |
opacity: 0; | |
pointer-events: none; | |
} | |
</style> | |
""" | |
def make_dropdown_searchable(dropdown_id): | |
script = f""" | |
<script> | |
function makeDropdownSearchable(dropdownId) {{ | |
const input = document.getElementById(dropdownId); | |
input.addEventListener("input", function() {{ | |
const value = this.value.toLowerCase(); | |
const options = Array.from(document.querySelectorAll(`#${dropdownId} option`)); | |
let found = false; | |
for (let i = 0; i < options.length; i++) {{ | |
const option = options[i]; | |
const text = option.text.toLowerCase(); | |
const match = text.includes(value); | |
option.style.display = match ? "block" : "none"; | |
if (match) {{ | |
found = true; | |
}} | |
}} | |
if (value && !found) {{ | |
const firstOption = options[0]; | |
if (firstOption) {{ | |
firstOption.selected = true; | |
}} | |
}} | |
}}); | |
}} | |
makeDropdownSearchable("{dropdown_id}"); | |
</script> | |
""" | |
return gr.outputs.HTML(script) | |
with gr.Interface( | |
fn=text_it, | |
inputs="text", | |
outputs="text", | |
css=css, | |
capture_session=True | |
) as iface: | |
model_dropdown = gr.inputs.Dropdown( | |
label="Choose Model", | |
choices=[m["name"] for m in models], | |
type="index", | |
value=current_model["name"], | |
interactive=True, | |
component_id="model_dropdown" | |
I apologize for the incomplete code. It seems that there was an error in the last part. Here's the corrected code: | |
```python | |
import gradio as gr | |
models = [ | |
{"name": "Claudfuen 1", "url": "claudfuen/photorealistic-fuen-v1"}, | |
{"name": "Deliberate", "url": "Masagin/Deliberate"}, | |
{"name": "Seek Art Mega", "url": "coreco/seek.art_MEGA"}, | |
{"name": "Realistic Vision 1.4", "url": "SG161222/Realistic_Vision_V1.4"}, | |
{"name": "Dreamshaper", "url": "Lykon/DreamShaper"}, | |
] | |
current_model = models[0] | |
text_gen = gr.Interface.load("spaces/Omnibus/MagicPrompt-Stable-Diffusion_link") | |
models2 = [] | |
for model in models: | |
model_url = f"models/{model['url']}" | |
loaded_model = gr.Interface.load(model_url, live=True, preprocess=True) | |
models2.append(loaded_model) | |
def text_it(inputs, text_gen=text_gen): | |
return text_gen(inputs) | |
def set_model(current_model_index): | |
global current_model | |
current_model = models[current_model_index] | |
return gr.outputs.Label(f"Current Model: {current_model['name']}") | |
def send_it(inputs, model_choice): | |
proc = models2[model_choice] | |
return proc(inputs) | |
css = """ | |
<style> | |
.searchable-dropdown { | |
position: relative; | |
} | |
.searchable-dropdown input { | |
width: 100%; | |
padding: 0.5rem; | |
border-radius: 5px; | |
border: 1px solid #ccc; | |
} | |
.searchable-dropdown select { | |
width: 100%; | |
padding: 0.5rem; | |
border-radius: 5px; | |
border: 1px solid #ccc; | |
position: absolute; | |
top: 0; | |
left: 0; | |
opacity: 0; | |
pointer-events: none; | |
} | |
</style> | |
""" | |
def make_dropdown_searchable(dropdown_id): | |
script = f""" | |
<script> | |
function makeDropdownSearchable(dropdownId) {{ | |
const input = document.getElementById(dropdownId); | |
input.addEventListener("input", function() {{ | |
const value = this.value.toLowerCase(); | |
const options = Array.from(document.querySelectorAll(`#${dropdownId} option`)); | |
let found = false; | |
for (let i = 0; i < options.length; i++) {{ | |
const option = options[i]; | |
const text = option.text.toLowerCase(); | |
const match = text.includes(value); | |
option.style.display = match ? "block" : "none"; | |
if (match) {{ | |
found = true; | |
}} | |
}} | |
if (value && !found) {{ | |
const firstOption = options[0]; | |
if (firstOption) {{ | |
firstOption.selected = true; | |
}} | |
}} | |
}}); | |
}} | |
makeDropdownSearchable("{dropdown_id}"); | |
</script> | |
""" | |
return gr.outputs.HTML(script) | |
iface = gr.Interface( | |
fn=text_it, | |
inputs="text", | |
outputs="text", | |
css=css, | |
capture_session=True | |
) | |
model_dropdown = gr.inputs.Dropdown( | |
label="Choose Model", | |
choices=[m["name"] for m in models], | |
type="index", | |
value=current_model["name"], | |
interactive=True, | |
description="Select the model to use for text generation" | |
) | |
iface.add_input(model_dropdown, set_model) | |
iface.add_input("text", send_it, "output") | |
iface.launch() | |