Spaces:
Build error
Build error
import copy | |
import random | |
import gradio as gr | |
import numpy | |
import PIL | |
from pathlib import Path | |
from constants.init_values import ( | |
places, moods, jobs, random_names, default_character_images | |
) | |
from modules import ( | |
ImageMaker, palmchat | |
) | |
from interfaces import utils | |
# TODO: Replace checkpoint filename to Huggingface URL | |
#img_maker = ImageMaker('hellonijicute25d_V10b.safetensors', vae="kl-f8-anime2.vae.safetensors") | |
img_maker = ImageMaker('hellonijicute25d_V10b.safetensors') # without_VAE | |
############ | |
# for plotting | |
def get_random_name(cur_char_name, char_name1, char_name2, char_name3): | |
tmp_random_names = copy.deepcopy(random_names) | |
tmp_random_names.remove(cur_char_name) | |
tmp_random_names.remove(char_name1) | |
tmp_random_names.remove(char_name2) | |
tmp_random_names.remove(char_name3) | |
return random.choice(tmp_random_names) | |
def gen_character_image( | |
gallery_images, | |
name, age, mbti, personality, job, | |
genre, place, mood, creative_mode | |
): | |
# generate prompts for character image with PaLM | |
for _ in range(3): | |
try: | |
prompt, neg_prompt = img_maker.generate_character_prompts(name, age, job, keywords=[mbti, personality, genre, place, mood], creative_mode=creative_mode) | |
print(f"Image Prompt: {prompt}") | |
print(f"Negative Prompt: {neg_prompt}") | |
break | |
except Exception as e: | |
print(e) | |
if not prompt: | |
raise ValueError("Failed to generate prompts for character image.") | |
# generate image | |
try: | |
img_filename = img_maker.text2image(prompt, neg_prompt=neg_prompt, ratio='3:4', cfg=4.5) | |
except ValueError as e: | |
print(e) | |
img_filename = str(Path('.') / 'assets' / 'nsfw_warning.png') | |
# update gallery | |
gen_image = numpy.asarray(PIL.Image.open(img_filename)) | |
gallery_images.insert(0, gen_image) | |
return gr.update(value=gallery_images), gallery_images | |
def update_on_age(evt: gr.SelectData): | |
job_list = jobs[evt.value] | |
return ( | |
gr.update(value=places[evt.value][0], choices=places[evt.value]), | |
gr.update(value=moods[evt.value][0], choices=moods[evt.value]), | |
gr.update(value=job_list[0], choices=job_list), | |
gr.update(value=job_list[0], choices=job_list), | |
gr.update(value=job_list[0], choices=job_list), | |
gr.update(value=job_list[0], choices=job_list) | |
) | |
############ | |
# for tabbing | |
def update_on_main_tabs(chat_state, evt: gr.SelectData): | |
chat_mode = "plot_chat" | |
if evt.value.lower() == "background setup": | |
chat_mode = "plot_chat" | |
elif evt.value.lower() == "story generation": | |
chat_mode = "story_chat" | |
else: # export | |
chat_mode = "export_chat" | |
ppm = chat_state[chat_mode] | |
return chat_mode, ppm.build_uis() | |