chatml-dataset / app.py
AlekseyKorshuk's picture
update
684c432
import json
import gradio as gr
max_rows = 10
def get_row(visible=True):
with gr.Row().style(equal_height=True):
with gr.Column():
do_train = gr.Checkbox(interactive=True, label="Do train on this content?", visible=visible)
role = gr.Textbox(interactive=True, label="Role", visible=visible)
content = gr.TextArea(interactive=True, label="Content", visible=visible)
separator = gr.Markdown("---", visible=visible)
return do_train, role, content, separator
def variable_outputs(k):
k = int(k)
return [gr.update(visible=True)] * k + [gr.update(visible=False)] * (max_rows - k)
def respond(*data):
data = list(data)
k = int(data[0])
data = data[1:]
do_train_items = data[:max_rows][:k]
role_items = data[max_rows:max_rows * 2][:k]
content_items = data[max_rows * 2:][:k]
data = []
for do_train, role, content in zip(do_train_items, role_items, content_items):
data.append(
{
"do_train": do_train,
"role": role,
"content": content
}
)
output = {
"conversation": data
}
return output
with gr.Blocks() as demo:
export_button = gr.Button("Export")
# response = gr.JSON(value={}).style(container=True)
response = gr.Textbox().style(show_copy_button=True)
s = gr.Slider(1, max_rows, value=1, step=1, label="How many rows to show:")
do_train_items = []
role_items = []
content_items = []
separator_items = []
for i in range(max_rows):
do_train, role, content, separator = get_row(visible=i < s.value)
do_train_items.append(do_train)
role_items.append(role)
content_items.append(content)
separator_items.append(separator)
s.change(variable_outputs, s, do_train_items, queue=False)
s.change(variable_outputs, s, role_items, queue=False)
s.change(variable_outputs, s, content_items, queue=False)
s.change(variable_outputs, s, separator_items, queue=False)
export_button.click(respond, inputs=[s] + do_train_items + role_items + content_items, outputs=response,
queue=False)
if __name__ == "__main__":
demo.launch()