Spaces:
Build error
Build error
import re | |
import gradio as gr | |
from interfaces import utils | |
from modules import get_llm_factory | |
async def plot_gen( | |
temperature, | |
genre, place, mood, | |
side_char_enable1, side_char_enable2, side_char_enable3, | |
main_char_name, main_char_age, main_char_personality, main_char_job, | |
side_char_name1, side_char_age1, side_char_personality1, side_char_job1, | |
side_char_name2, side_char_age2, side_char_personality2, side_char_job2, | |
side_char_name3, side_char_age3, side_char_personality3, side_char_job3, | |
llm_type="PaLM" | |
): | |
factory = get_llm_factory(llm_type) | |
prompts = factory.create_prompt_manager().prompts | |
llm_service = factory.create_llm_service() | |
side_char_prompt = utils.add_side_character( | |
[side_char_enable1, side_char_enable2, side_char_enable3], | |
[side_char_name1, side_char_name2, side_char_name3], | |
[side_char_job1, side_char_job2, side_char_job3], | |
[side_char_age1, side_char_age2, side_char_age3], | |
[side_char_personality1, side_char_personality2, side_char_personality3], | |
) | |
prompt = prompts['plot_gen']['main_plot_gen'].format( | |
genre=genre, place=place, mood=mood, | |
main_char_name=main_char_name, | |
main_char_job=main_char_job, | |
main_char_age=main_char_age, | |
main_char_personality=main_char_personality, | |
side_char_placeholder=side_char_prompt, | |
) | |
print(f"generated prompt:\n{prompt}") | |
parameters = llm_service.make_params(mode="text", temperature=temperature, top_k=40, top_p=1.0, max_output_tokens=4096) | |
response_json = await utils.retry_until_valid_json(prompt, parameters=parameters) | |
return ( | |
response_json['title'], | |
f"## {response_json['title']}", | |
response_json['outline']['rising action'], | |
response_json['outline']['crisis'], | |
response_json['outline']['climax'], | |
response_json['outline']['falling action'], | |
response_json['outline']['denouement'], | |
) | |
async def first_story_gen( | |
title, | |
rising_action, crisis, climax, falling_action, denouement, | |
genre, place, mood, | |
side_char_enable1, side_char_enable2, side_char_enable3, | |
main_char_name, main_char_age, main_char_personality, main_char_job, | |
side_char_name1, side_char_age1, side_char_personality1, side_char_job1, | |
side_char_name2, side_char_age2, side_char_personality2, side_char_job2, | |
side_char_name3, side_char_age3, side_char_personality3, side_char_job3, | |
cursors, cur_cursor, | |
llm_type="PaLM" | |
): | |
factory = get_llm_factory(llm_type) | |
prompts = factory.create_prompt_manager().prompts | |
llm_service = factory.create_llm_service() | |
side_char_prompt = utils.add_side_character( | |
[side_char_enable1, side_char_enable2, side_char_enable3], | |
[side_char_name1, side_char_name2, side_char_name3], | |
[side_char_job1, side_char_job2, side_char_job3], | |
[side_char_age1, side_char_age2, side_char_age3], | |
[side_char_personality1, side_char_personality2, side_char_personality3], | |
) | |
prompt = prompts['plot_gen']['first_story_gen'].format( | |
genre=genre, place=place, mood=mood, | |
main_char_name=main_char_name, | |
main_char_job=main_char_job, | |
main_char_age=main_char_age, | |
main_char_personality=main_char_personality, | |
side_char_placeholder=side_char_prompt, | |
title=title, | |
rising_action=rising_action, | |
crisis=crisis, | |
climax=climax, | |
falling_action=falling_action, | |
denouement=denouement, | |
) | |
print(f"generated prompt:\n{prompt}") | |
parameters = llm_service.make_params(mode="text", temperature=1.0, top_k=40, top_p=1.0, max_output_tokens=4096) | |
response_json = await utils.retry_until_valid_json(prompt, parameters=parameters) | |
chapter_title = response_json["chapter_title"] | |
pattern = r"Chapter\s+\d+\s*[:.]" | |
chapter_title = re.sub(pattern, "", chapter_title) | |
cursors.append({ | |
"title": chapter_title, | |
"plot_type": "rising action", | |
"story": "\n\n".join(response_json["paragraphs"]) | |
}) | |
return ( | |
f"### {chapter_title} (\"rising action\")", | |
"\n\n".join(response_json["paragraphs"]), | |
cursors, | |
cur_cursor, | |
gr.update(interactive=True), | |
gr.update(interactive=True), | |
gr.update(value=response_json["actions"][0], interactive=True), | |
gr.update(value=response_json["actions"][1], interactive=True), | |
gr.update(value=response_json["actions"][2], interactive=True), | |
) |