|
import gradio as gr |
|
from button_interface import Backend |
|
from generator import APIHelper |
|
from utils.header import ConfigReader |
|
|
|
DEBUG_MODE = False |
|
|
|
def generate_page(backend): |
|
with gr.Blocks(title="Scientific Paper Idea Proposer") as demo: |
|
|
|
gr.Markdown( |
|
""" |
|
# Scientific Paper Idea Proposer |
|
""" |
|
) |
|
|
|
with gr.Blocks() as d: |
|
with gr.Tab("Keywords"): |
|
key_words = gr.Textbox(placeholder="Interested key words", label="Keywords (Provide at least 1 keyword)") |
|
with gr.Tab("Background"): |
|
background = gr.Textbox(placeholder="Background", label="Background") |
|
if DEBUG_MODE: |
|
with gr.Tab("Json"): |
|
json_file = gr.File() |
|
json_background = gr.Textbox(placeholder="Background", label="Background") |
|
json_strs = gr.Textbox(visible=False) |
|
json_file.upload(backend.upload_json_callback, inputs=[json_file], outputs=[json_background]) |
|
else: |
|
json_strs = None |
|
|
|
|
|
|
|
with gr.Row(equal_height=True): |
|
gr.ClearButton(value="π Clear", components=[background], scale=1) |
|
background2brainstorm = gr.Button("π Brainstorm", scale=1) |
|
|
|
|
|
|
|
with gr.Row(equal_height=True): |
|
brainstorm_txt = gr.Textbox(placeholder="Generated brainstorm ideas", label="Brainstorm ideas", info="Feel free to improve them before next step", max_lines=500) |
|
brainstorm_md = gr.Markdown(label="Brainstorm ideas") |
|
|
|
|
|
|
|
with gr.Row(equal_height=True): |
|
gr.ClearButton(value="π Clear", components=[brainstorm_txt], scale=1) |
|
brainstorm2entities = gr.Button("Extract Entities", scale=1) |
|
entities = gr.CheckboxGroup([], label="Expanded key words", visible=True) |
|
entities2literature = gr.Button("π Retrieve Literature") |
|
literature_intact = gr.State() |
|
|
|
|
|
|
|
retrieved_literature = gr.Textbox(placeholder="Retrieved literature", label="Retrieved related works", info="", max_lines=500) |
|
|
|
with gr.Row(equal_height=True): |
|
gr.ClearButton(value="π Clear", components=[retrieved_literature], scale=1) |
|
literature2initial_ideas = gr.Button("π€ Generate Initial ideas", scale=1) |
|
|
|
|
|
|
|
with gr.Row(): |
|
initial_ideas_txt = gr.Textbox(placeholder="Initial ideas", label="Initial ideas", info="Feel free to improve them before next step", max_lines=500) |
|
initial_ideas_md = gr.Markdown(label="Initial ideas") |
|
|
|
with gr.Row(equal_height=True): |
|
gr.ClearButton(value="π Clear", components=[initial_ideas_txt], scale=1) |
|
initial2final = gr.Button("π₯ Refine Ideas") |
|
|
|
|
|
with gr.Row(): |
|
final_ideas_txt = gr.Textbox(placeholder="Final ideas", label="Final ideas", info="", max_lines=500) |
|
final_ideas_md = gr.Markdown(label="Final ideas") |
|
|
|
|
|
background2brainstorm.click(backend.background2brainstorm_callback, inputs=[background], outputs=[brainstorm_txt]) |
|
brainstorm2entities.click(backend.brainstorm2entities_callback, inputs=[background, brainstorm_txt], outputs=[entities]) |
|
brainstorm_txt.change(lambda input: input, inputs=brainstorm_txt, outputs=brainstorm_md) |
|
initial_ideas_txt.change(lambda input: input, inputs=initial_ideas_txt, outputs=initial_ideas_md) |
|
final_ideas_txt.change(lambda input: input, inputs=final_ideas_txt, outputs=final_ideas_md) |
|
entities2literature.click(backend.entities2literature_callback, inputs=[background, entities], outputs=[retrieved_literature, literature_intact]) |
|
literature2initial_ideas.click(backend.literature2initial_ideas_callback, inputs=[background, literature_intact], outputs=[initial_ideas_txt, final_ideas_txt]) |
|
initial2final.click(backend.initial2final_callback, inputs=[initial_ideas_txt], outputs=[final_ideas_txt]) |
|
return demo |
|
|
|
if __name__ == "__main__": |
|
backend = Backend() |
|
demo = generate_page(backend) |
|
demo.launch(server_name="0.0.0.0", share=True) |