Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 2,350 Bytes
dddb041 c49f67b dddb041 c49f67b dddb041 ab14713 c49f67b 1b088a5 c49f67b 1b088a5 ab14713 06fd0d1 bf71179 8669462 c49f67b 538d554 057bc07 a200bb2 1b088a5 057bc07 c133494 057bc07 c49f67b 057bc07 a200bb2 057bc07 c49f67b 057bc07 c03b3ba 057bc07 |
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 |
import gradio as gr
import requests
import io
from PIL import Image
import json
import os
# Load LoRAs from JSON
with open('loras.json', 'r') as f:
loras = json.load(f)
# API call function
def query(payload, api_url, token):
headers = {"Authorization": f"Bearer {token}"}
print(f"Sending API request with payload: {payload}")
response = requests.post(api_url, headers=headers, json=payload)
if response.status_code == 200:
return io.BytesIO(response.content)
else:
print(f"API Error: {response.text}")
return None
# Define the function to run when the button is clicked
def run_lora(prompt, selected_lora_index):
if selected_lora_index is not None: # Check if selected_lora_index is not None
selected_lora = loras[selected_lora_index]
api_url = f"https://api-inference.huggingface.co/models/{selected_lora['repo']}"
trigger_word = selected_lora["trigger_word"]
token = os.getenv("API_TOKEN")
payload = {"inputs": f"{prompt} {trigger_word}"}
image_bytes = query(payload, api_url, token)
if image_bytes:
return Image.open(image_bytes)
return "API Error or No LoRA selected"
# Placeholder for gallery.select function
def update_selection(selected):
return selected, # Return as a tuple
# Gradio UI
with gr.Blocks(css="custom.css") as app:
title = gr.HTML("<h1>LoRA the Explorer</h1>")
selected_state = gr.State(0) # Initialize with the index of the first LoRA
with gr.Row():
gallery = gr.Gallery(
[(item["image"], item["title"]) for item in loras],
label="LoRA Gallery",
allow_preview=False,
columns=3
)
with gr.Column():
prompt_title = gr.Markdown("### Click on a LoRA in the gallery to select it")
with gr.Row():
prompt = gr.Textbox(label="Prompt", show_label=False, lines=1, max_lines=1, placeholder="Type a prompt after selecting a LoRA")
button = gr.Button("Run")
result = gr.Image(interactive=False, label="Generated Image")
gallery.select(
update_selection,
outputs=[selected_state]
)
button.click(
fn=run_lora,
inputs=[prompt, selected_state],
outputs=[result]
)
app.queue(max_size=20)
app.launch()
|