Spaces:
Sleeping
Sleeping
File size: 3,242 Bytes
2fe4149 ea40bfb 6b8841f ea40bfb 6b8841f 7b7a636 79ba8fd 7b7a636 5ce99d5 ea40bfb 20511e3 5ce99d5 9020425 ea40bfb 20511e3 17370e6 20511e3 4510b89 20511e3 4510b89 20511e3 2fe4149 20511e3 2fe4149 20511e3 2fe4149 4510b89 2fe4149 4510b89 e24b691 4510b89 20511e3 4510b89 20511e3 2fe4149 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import gradio as gr
import pandas as pd
import json
def convert_inputs(user_input, var):
if isinstance(var, str):
var = [var]
# diff = len(var) - len(user_input)
var += var*(len(user_input)//len(var) + 1)
diff = len(var) - len(user_input)
# if diff < 0:
# # for _ in range(-diff):
# # var.append(var[0])
# add_var = var[:-diff]
# if len(add_var) < -diff:
# var += add_var * (1 - diff - len(add_var))
# else:
# var += add_var
# if len(var) - len(user_input):
var = var[:-diff]
print("[LENGTH]", len(var), diff, len(add_var))
return var
def process_inputs(user_input_json, session_id_json, project_id_json, chat_url, update_vars_json, output_vars_json):
# Convert JSON strings into Python lists
user_input = json.loads(user_input_json)
session_id = json.loads(session_id_json)
project_id = json.loads(project_id_json)
update_vars = json.loads(update_vars_json)
output_vars = json.loads(output_vars_json)
# if isinstance(session_id, str):
# session_id = [session_id]
# if isinstance(project_id, str):
# session_id = [project_id]
# if isinstance(chat_url, str):
# session_id = [session_id]
session_id = convert_inputs(user_input,session_id)
project_id = convert_inputs(user_input,project_id)
update_vars = convert_inputs(user_input,update_vars)
output_vars = convert_inputs(user_input,output_vars)
# --- Your function logic here ---
df = pd.DataFrame({
"user_input": user_input,
"session_id": session_id,
"project_id": project_id,
"chat_url": [chat_url] * len(user_input),
"update_variables": update_vars,
"output_variables": output_vars,
"answer": [[] * len(x) if isinstance(x, list) else [] for x in user_input]
})
return df
def run_process(df):
csv_path = "output.csv"
df.to_csv(csv_path, index=False)
return csv_path
with gr.Blocks() as demo:
gr.Markdown("## 💬 JSON Input ➜ DataFrame ➜ CSV Export")
user_input = gr.Code(label="user_input (list[str] or list[list[str]])", language="json", value='["Hello", ["Hi", "How are you?"]]')
session_id = gr.Code(label="session_id (list[str])", language="json", value='["s1", "s2"]')
project_id = gr.Code(label="project_id (list[str])", language="json", value='["p1", "p2"]')
chat_url = gr.Textbox(label="chat_url", value="https://example.com/chat")
update_vars = gr.Code(label="update_variables (list[str])", language="json", value='["update1", "update2"]')
output_vars = gr.Code(label="output_variables (list[str])", language="json", value='["out1", "out2"]')
run_btn = gr.Button("Run Function")
df_output = gr.Dataframe(label="Output DataFrame", interactive=True)
process_btn = gr.Button("Process")
file_output = gr.File(label="Download CSV")
process_btn.click(
fn=run_process,
inputs=df_output,
outputs=file_output
)
run_btn.click(
fn=process_inputs,
inputs=[user_input, session_id, project_id, chat_url, update_vars, output_vars],
outputs=df_output
)
demo.launch()
|