import gradio as gr from llm_models import get_text_image_pairs import time from tqdm import tqdm title_markdown = """
MoE-LLaVA🚀

الراوي


صانع القصص بالذكاء الاصطناعي التوليدي

""" def get_text_images_values(k, input_prompt, api_key_openai, api_key_stability_ai): pages = int(k) segments_list, images_names = get_text_image_pairs( pages, input_prompt, api_key_openai, api_key_stability_ai ) return segments_list, images_names css = """ .gradio-container {direction: rtl} .gradio-container-4-18-0 .prose h1 {direction: rtl}; } """ with gr.Blocks(css=css) as demo: gr.Markdown(title_markdown) with gr.Row(): api_key_openai = gr.Textbox( label="Open AI API Key", placeholder="أدخل مفتاح API الخاص بك هنا", type="password", ) api_key_stability_ai = gr.Textbox( label="Stability AI API Key", placeholder="أدخل مفتاح API الخاص بك هنا", type="password", ) prompt = gr.Textbox( label="معلومات بسيطة عن القصة", info="أدخل بعض المعلومات عن القصة، مثلاً: خالد صبي في الرابعة من عمره، ويحب أن يصبح طياراً في المستقبل", placeholder="خالد صبي في الرابعة من عمره، ويحب أن يصبح طياراً في المستقبل", text_align="right", rtl=True, elem_classes="rtl-textbox", elem_id="rtl-textbox", ) with gr.Row(): max_textboxes = 10 # Define the max number of textboxed, so we will add the max number of textboxes and images to the layout def variable_outputs(k, segments_list): k = int(k) return [ gr.Textbox( label=f"الصفحة رقم {i+1}", value=item, text_align="right", visible=True, ) for i, item in enumerate(segments_list) ] + [gr.Textbox(visible=False, text_align="right", rtl=True)] * ( max_textboxes - k ) def variable_outputs_image(k, images_names): k = int(k) return [ gr.Image(value=item, scale=1, visible=True) for item in images_names ] + [gr.Image(scale=1, visible=False)] * (max_textboxes - k) with gr.Column(): s = gr.Slider( 1, max_textboxes, value=1, step=1, info="أقصى عدد صفحات يمكن توليده هو 10 صفحات", label="كم عدد صفحات القصة التي تريدها؟", ) textboxes = [] imageboxes = [] for i in tqdm(range(max_textboxes)): with gr.Row(): i_t = gr.Image(visible=False) t = gr.Textbox(visible=False) imageboxes.append(i_t) textboxes.append(t) segment_list = gr.JSON(value=[], visible=False) images_list = gr.JSON(value=[], visible=False) submit = gr.Button(value="أنشئ القصة الآن") submit.click( fn=get_text_images_values, inputs=[s, prompt, api_key_openai, api_key_stability_ai], outputs=[segment_list, images_list], ).then( fn=variable_outputs, inputs=[s, segment_list], outputs=textboxes, ).then( fn=variable_outputs_image, inputs=[s, images_list], outputs=imageboxes, ) demo.launch()