Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from pingpong import PingPong | |
| from interfaces import utils | |
| from modules.llms import get_llm_factory | |
| def rollback_last_ui(history): | |
| return history[:-1] | |
| def add_side_character(enable, name, age, personality, job, llm_type='PaLM'): | |
| prompts = get_llm_factory(llm_type).create_prompt_manager().prompts | |
| cur_side_chars = 1 | |
| prompt = "" | |
| for idx in range(len(enable)): | |
| if enable[idx]: | |
| prompt += prompts['chat_gen']['add_side_character'].format( | |
| cur_side_chars=cur_side_chars, | |
| name=name[idx], | |
| job=job[idx], | |
| age=age[idx], | |
| personality=personality[idx] | |
| ) | |
| cur_side_chars += 1 | |
| return "\n" + prompt if prompt else "" | |
| def add_chapter_title_ctx(chapter_title, chapter_plot, llm_type='PaLM'): | |
| prompts = get_llm_factory(llm_type).create_prompt_manager().prompts | |
| title_idx = 1 | |
| prompt = "" | |
| for idx in range(len(chapter_title)): | |
| if chapter_title[idx] : | |
| prompt += prompts['chat_gen']['chapter_title_ctx'].format( | |
| title_idx=title_idx, | |
| chapter_title=chapter_title[idx], | |
| chapter_plot=chapter_plot[idx], | |
| ) | |
| title_idx += 1 | |
| return "\n" + prompt if prompt else "" | |
| async def chat( | |
| user_input, chat_mode, chat_state, | |
| genre, place, mood, | |
| 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, | |
| chapter1_title, chapter2_title, chapter3_title, chapter4_title, | |
| chapter1_plot, chapter2_plot, chapter3_plot, chapter4_plot, | |
| side_char_enable1, side_char_enable2, side_char_enable3, | |
| llm_type='PaLM', | |
| ): | |
| prompts = get_llm_factory(llm_type).create_prompt_manager().prompts | |
| chapter_title_ctx = add_chapter_title_ctx( | |
| [chapter1_title, chapter2_title, chapter3_title, chapter4_title], | |
| [chapter1_plot, chapter2_plot, chapter3_plot, chapter4_plot], | |
| ) | |
| side_char_prompt = 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['chat_gen']['chat_context'].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, | |
| chapter_title_placeholder=chapter_title_ctx, | |
| ) | |
| ppm = chat_state[chat_mode] | |
| ppm.ctx = ctx | |
| ppm.add_pingpong( | |
| PingPong(user_input, '') | |
| ) | |
| prompt = utils.build_prompts(ppm) | |
| response_txt = await utils.get_chat_response(prompt, ctx=ctx) | |
| ppm.replace_last_pong(response_txt) | |
| chat_state[chat_mode] = ppm | |
| return ( | |
| "", | |
| chat_state, | |
| ppm.build_uis(), | |
| gr.update(interactive=True) | |
| ) | |
| async def chat_regen(chat_mode, chat_state): | |
| ppm = chat_state[chat_mode] | |
| user_input = ppm.pingpongs[-1].ping | |
| ppm.pingpongs = ppm.pingpongs[:-1] | |
| ppm.add_pingpong( | |
| PingPong(user_input, '') | |
| ) | |
| prompt = utils.build_prompts(ppm) | |
| response_txt = await utils.get_chat_response(prompt, ctx=ppm.ctx) | |
| ppm.replace_last_pong(response_txt) | |
| chat_state[chat_mode] = ppm | |
| return ( | |
| chat_state, | |
| ppm.build_uis() | |
| ) | |
| def chat_reset(chat_mode, chat_state, llm_type='PaLM'): | |
| factory = get_llm_factory(llm_type) | |
| chat_state[chat_mode] = factory.create_ui_pp_manager() | |
| return ( | |
| "", | |
| chat_state, | |
| [], | |
| gr.update(interactive=False) | |
| ) |