import logging import os from typing import List, Tuple import gradio as gr from eagle_vl.serve.utils import convert_asis, convert_mdtext, detect_converted_mark ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) small_and_beautiful_theme = gr.themes.Soft( primary_hue=gr.themes.Color( name="nvidia-green", c50="#F3FAE6", c100="#E3F3C2", c200="#C9E98D", c300="#AFDD59", c400="#95D124", c500="#76B900", # NVIDIA green c600="#6AA600", c700="#5C9300", c800="#4F8000", c900="#426D00", c950="#2E5500", ), secondary_hue=gr.themes.Color( c50="#d3e3d3", c100="#bfd6bf", c200="#a9c7a9", c300="#93b893", c400="#7da97d", c500="#689A68", c600="#538B53", c700="#3E7C3E", c800="#296D29", c900="#145E14", c950="#0A4A0A", ), neutral_hue=gr.themes.Color( name="gray", c50="#f6f7f8", c100="#F2F2F2", c200="#e5e7eb", c300="#d1d5db", c400="#B2B2B2", c500="#808080", c600="#636363", c700="#515151", c800="#393939", c900="#2B2B2B", c950="#171717", ), radius_size=gr.themes.sizes.radius_sm, ).set( button_primary_background_fill_dark="*primary_600", button_primary_border_color_dark="*primary_600", button_primary_text_color="white", button_primary_text_color_dark="white", button_secondary_background_fill="*neutral_100", button_secondary_background_fill_hover="*neutral_50", button_secondary_background_fill_dark="*neutral_900", button_secondary_text_color="*neutral_800", button_secondary_text_color_dark="white", block_title_background_fill_dark="*primary_900", block_label_background_fill_dark="*primary_900", input_background_fill="#F6F6F6", ) def compact_text_chunks(self, prompt, text_chunks: List[str]) -> List[str]: logging.debug("Compacting text chunks...🚀🚀🚀") combined_str = [c.strip() for c in text_chunks if c.strip()] combined_str = [f"[{index+1}] {c}" for index, c in enumerate(combined_str)] combined_str = "\n\n".join(combined_str) # resplit based on self.max_chunk_overlap text_splitter = self.get_text_splitter_given_prompt(prompt, 1, padding=1) return text_splitter.split_text(combined_str) def postprocess(y: List[Tuple[str | None, str | None]]) -> List[Tuple[str | None, str | None]]: """ Parameters: y: List of tuples representing the message and response pairs. Each message and response should be a string, which may be in Markdown format. Returns: List of tuples representing the message and response. Each message and response will be a string of HTML. """ if y is None or y == []: return [] temp = [] for x in y: user, bot = x if not detect_converted_mark(user): user = convert_asis(user) if not detect_converted_mark(bot): bot = convert_mdtext(bot) temp.append((user, bot)) return temp custom_js_path = os.path.join(ROOT_PATH, "assets/custom.js") kelpy_codos_path = os.path.join(ROOT_PATH, "assets/Kelpy-Codos.js") with ( open(custom_js_path, "r", encoding="utf-8") as f, open(kelpy_codos_path, "r", encoding="utf-8") as f2, ): customJS = f.read() kelpyCodos = f2.read() def reload_javascript(): print("Reloading javascript...") js = f"" def template_response(*args, **kwargs): res = GradioTemplateResponseOriginal(*args, **kwargs) res.body = res.body.replace(b"", f"{js}".encode("utf8")) res.init_headers() return res gr.routes.templates.TemplateResponse = template_response GradioTemplateResponseOriginal = gr.routes.templates.TemplateResponse