Spaces:
Runtime error
Runtime error
| from typing import List, Callable | |
| # from googletrans import Translator | |
| from deep_translator import GoogleTranslator | |
| import random | |
| from src.prompt_configs import PromptConfig, prefix | |
| # translator = Translator() | |
| translator = GoogleTranslator(source='auto', target='en') | |
| def get_translation(text: str, dest: str = 'en') -> str: | |
| return translator.translate(text) | |
| # return translator.translate(text, dest=dest).text | |
| def llm_generate_titles( | |
| llm_generate: Callable[[str], str], | |
| description: str, | |
| prompt_config: PromptConfig, | |
| ) -> List[str]: | |
| """ | |
| Generate presentation slide titles using a language model. | |
| Args: | |
| llm_generate (Callable[[str], str]): Function to generate text using a language model. | |
| description (str): Description of the presentation. | |
| prompt_config (PromptConfig): Configuration for prompts. | |
| Returns: | |
| List[str]: List of generated slide titles. | |
| """ | |
| prompt = prompt_config.title_prompt.format( | |
| description=description | |
| ) | |
| titles_str = llm_generate(prompt) | |
| titles = [] | |
| for title in titles_str.split("\n"): | |
| sep_index = title.index('. ') | |
| title = title.strip()[sep_index:] | |
| title = title.replace('.', '') | |
| title = title.replace('\n', '') | |
| if prefix in title.lower(): | |
| title = title[ | |
| title.lower().index(prefix)+len(prefix): | |
| ] | |
| titles.append(title) | |
| return titles | |
| def llm_generate_text( | |
| llm_generate: Callable[[str], str], | |
| description: str, | |
| titles: List[str], | |
| prompt_config: PromptConfig | |
| ) -> List[str]: | |
| """ | |
| Generate text for each slide title using a language model. | |
| Args: | |
| llm_generate (Callable[[str], str]): Function to generate text using a language model. | |
| description (str): Description of the presentation. | |
| titles (List[str]): List of slide titles. | |
| prompt_config (PromptConfig): Configuration for prompts. | |
| Returns: | |
| List[str]: List of generated texts for each slide. | |
| """ | |
| texts = [] | |
| for title in titles: | |
| query = prompt_config.text_prompt.format(description=description, title=title) | |
| text = llm_generate(query) | |
| if prefix in text.lower(): | |
| text = text[text.lower().index(prefix)+len(prefix):] | |
| text = text.replace('\n', '') | |
| texts.append(text) | |
| return texts | |
| def llm_generate_image_prompt( | |
| llm_generate: Callable[[str], str], | |
| description: str, | |
| title: str, | |
| prompt_config: PromptConfig | |
| ) -> str: | |
| """ | |
| Generate an image prompt for a slide using a language model and translate it. | |
| Args: | |
| llm_generate (Callable[[str], str]): Function to generate text using a language model. | |
| description (str): Description of the presentation. | |
| title (str): Slide title. | |
| prompt_config (PromptConfig): Configuration for prompts. | |
| Returns: | |
| str: Translated image prompt. | |
| """ | |
| query = prompt_config.image_prompt.format(description=description, title=title) | |
| prompt = llm_generate(query) | |
| if prefix in prompt: | |
| prompt = prompt[prompt.lower().index(prompt)+len(prompt):] | |
| prompt = prompt.replace('\n', '') | |
| return get_translation(prompt) | |
| def llm_generate_background_prompt( | |
| llm_generate: Callable[[str], str], | |
| description: str, | |
| title: str, | |
| prompt_config: PromptConfig, | |
| background_style: str = '' | |
| ) -> str: | |
| """ | |
| Generate a background prompt for a slide using a language model and translate it. | |
| Args: | |
| llm_generate (Callable[[str], str]): Function to generate text using a language model. | |
| description (str): Description of the presentation. | |
| title (str): Slide title. | |
| prompt_config (PromptConfig): Configuration for prompts. | |
| Returns: | |
| str: Translated background prompt. | |
| """ | |
| query = prompt_config.background_prompt.format(description=description, title=title) | |
| keywords = llm_generate(query) | |
| background_prompt = f'{keywords}, {background_style}' | |
| return get_translation(background_prompt) |