honeysuckle commited on
Commit
14af88b
·
1 Parent(s): 7cfeacb
Files changed (1) hide show
  1. app.py +37 -33
app.py CHANGED
@@ -7,11 +7,11 @@ import matplotlib.pyplot as plt
7
 
8
  from PIL import Image
9
  from io import BytesIO
 
10
  from huggingface_hub import HfFileSystem, hf_hub_download
11
 
12
-
13
- def request_to_endpoint (request:dict, endpoint_id='fuxao2ukl3vx2z'):
14
- api_key = "A6DTPK0VM02LEBYFSVJKKFZ9MTZQ4ED1CMBK0OE2"
15
  url = f"https://api.runpod.ai/v2/{endpoint_id}/runsync"
16
  headers = {
17
  "accept": "application/json",
@@ -44,25 +44,25 @@ character_names, character_configs = prepare_characters()
44
 
45
 
46
  def process_input (name, scale, triggers, tech_prompt, tech_negative_prompt, prompts_count, *args):
47
- boxes = list(args)
48
- prompts = []
49
- negative_prompts = []
50
-
51
  # Если хотим задать свои триггерные слова или технический промпт
52
  triggers = triggers if triggers != "" else ",".join(character_configs[name]["trigger_words"])
53
  tech_prompt = tech_prompt if tech_prompt != "" else character_configs[name]["tech_prompt"]
54
  tech_negative_prompt = tech_negative_prompt if tech_negative_prompt != "" else character_configs[name]["tech_negative_prompt"]
 
55
  model = character_configs[name]["model"]
56
  model['loras'] = {name: scale}
57
  params = character_configs[name]["params"]
58
  params["cross_attention_kwargs"]['scale'] = scale
 
 
 
 
59
  for n in range(prompts_count):
60
- prompts.append(f'{triggers}, {tech_prompt}, {boxes[2*n]}')
61
- negative_prompts.append(f"{tech_negative_prompt}, {boxes[2*n + 1]}")
62
 
63
  request_data = {
64
  "input": {
65
- "mode": "inference",
66
  "model": model,
67
  "params": params,
68
  "prompt": prompts,
@@ -105,38 +105,42 @@ with gr.Blocks() as demo:
105
  visible=True,
106
  )
107
 
 
 
 
 
 
 
 
 
 
108
  with gr.Accordion(open=False):
109
- scale = gr.Slider(0, 2.0, 0.75, step=0.01, label="Selected LoRA scale:", interactive=True)
110
  triggers = gr.Textbox(label=f"Trigger words:")
111
  tech_prompt = gr.Textbox(label=f"Technical prompt:")
112
  tech_negative_prompt = gr.Textbox(label=f"Negative technical prompt:")
113
 
114
  prompts_count = gr.State(1)
115
 
116
- with gr.Row():
117
- with gr.Column():
118
- add_btn = gr.Button("Add prompt")
119
  del_btn = gr.Button("Delete prompt")
120
 
121
- add_btn.click(lambda x: x + 1, prompts_count, prompts_count)
122
- del_btn.click(lambda x: x - 1, prompts_count, prompts_count)
123
-
124
- @gr.render(inputs=prompts_count)
125
- def render_count(count):
126
- boxes = []
127
- for i in range(count):
128
- with gr.Group():
129
- prompt = gr.Textbox(key=i, label=f"Prompt {i+1}")
130
- negative_prompt = gr.Textbox(key=i, label=f"Negative prompt {i+1}")
131
-
132
- boxes.append(prompt)
133
- boxes.append(negative_prompt)
134
-
135
- generate_btn.click(
136
- process_input,
137
- [name, scale, triggers, tech_prompt, tech_negative_prompt, prompts_count]+boxes,
138
- output
139
- )
140
 
141
  generate_btn = gr.Button("Generate!")
142
 
 
7
 
8
  from PIL import Image
9
  from io import BytesIO
10
+ from dotenv import load_dotenv
11
  from huggingface_hub import HfFileSystem, hf_hub_download
12
 
13
+ def request_to_endpoint (request:dict, endpoint_id='s4i4um7xakaq37'):
14
+ api_key = os.getenv("RUNPOD_API_KEY")
 
15
  url = f"https://api.runpod.ai/v2/{endpoint_id}/runsync"
16
  headers = {
17
  "accept": "application/json",
 
44
 
45
 
46
  def process_input (name, scale, triggers, tech_prompt, tech_negative_prompt, prompts_count, *args):
 
 
 
 
47
  # Если хотим задать свои триггерные слова или технический промпт
48
  triggers = triggers if triggers != "" else ",".join(character_configs[name]["trigger_words"])
49
  tech_prompt = tech_prompt if tech_prompt != "" else character_configs[name]["tech_prompt"]
50
  tech_negative_prompt = tech_negative_prompt if tech_negative_prompt != "" else character_configs[name]["tech_negative_prompt"]
51
+
52
  model = character_configs[name]["model"]
53
  model['loras'] = {name: scale}
54
  params = character_configs[name]["params"]
55
  params["cross_attention_kwargs"]['scale'] = scale
56
+
57
+ boxes = list(args)
58
+ prompts = []
59
+ negative_prompts = []
60
  for n in range(prompts_count):
61
+ prompts.append(f'{triggers}, {tech_prompt}, {boxes[n]}')
62
+ negative_prompts.append(f"{tech_negative_prompt}")
63
 
64
  request_data = {
65
  "input": {
 
66
  "model": model,
67
  "params": params,
68
  "prompt": prompts,
 
105
  visible=True,
106
  )
107
 
108
+ scale = gr.Slider(
109
+ minimum=0,
110
+ maximum=2.0,
111
+ value=0.75,
112
+ step=0.01,
113
+ label="Selected LoRA scale:",
114
+ interactive=True,
115
+ )
116
+
117
  with gr.Accordion(open=False):
 
118
  triggers = gr.Textbox(label=f"Trigger words:")
119
  tech_prompt = gr.Textbox(label=f"Technical prompt:")
120
  tech_negative_prompt = gr.Textbox(label=f"Negative technical prompt:")
121
 
122
  prompts_count = gr.State(1)
123
 
124
+ with gr.Group():
125
+ add_btn = gr.Button("Add prompt")
 
126
  del_btn = gr.Button("Delete prompt")
127
 
128
+ add_btn.click(lambda x: x + 1, prompts_count, prompts_count)
129
+ del_btn.click(lambda x: x - 1, prompts_count, prompts_count)
130
+
131
+ @gr.render(inputs=prompts_count)
132
+ def render_count(count):
133
+ boxes = []
134
+ for i in range(count):
135
+ with gr.Group():
136
+ prompt = gr.Textbox(key=str(i), label=f"Prompt {i+1}")
137
+ boxes.append(prompt)
138
+
139
+ generate_btn.click(
140
+ process_input,
141
+ [name, scale, triggers, tech_prompt, tech_negative_prompt, prompts_count]+boxes,
142
+ output
143
+ )
 
 
 
144
 
145
  generate_btn = gr.Button("Generate!")
146