|
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() |
|
|