Spaces:
Sleeping
Sleeping
import json | |
import requests | |
import gradio as gr | |
# Load the JSON data once at startup | |
URL = "https://github.com/THU-KEG/AgentIF/raw/refs/heads/main/data/eval.json" | |
response = requests.get(URL) | |
data = response.json() | |
def format_input(input_list): | |
if not isinstance(input_list, list): | |
return "Invalid format for 'input' field." | |
formatted = [] | |
for msg in input_list: | |
role = msg.get("role", "unknown").capitalize() | |
content = msg.get("content", "").strip() | |
block = f"### {role}:\n```\n{content}\n```" | |
formatted.append(block) | |
return "\n\n".join(formatted) | |
def get_entry(index): | |
try: | |
index = int(index) | |
if index < 0 or index >= len(data): | |
return f"Index {index} out of range.", "", "" | |
entry = data[index] | |
entry_type = entry.get("type", "") | |
# Prepare input | |
input_formatted = format_input(entry.get("input", [])) | |
# Raw data excluding exec, output, and input | |
raw_data = json.dumps(entry, indent=2, ensure_ascii=False) | |
print(f"Showing entry {index}: {entry_type}") | |
return f"Showing entry {index}", input_formatted, raw_data | |
except ValueError: | |
return "Please enter a valid integer index.", "", "" | |
with gr.Blocks(title="AgentIF Viewer") as demo: | |
gr.Markdown("# AgentIF Viewer") | |
gr.Markdown(f"π [AgentIF](https://arxiv.org/abs/2505.16944) contains examples in **both English and Chinese**. Use the index below to browse them.") | |
index_range = f"[0, {len(data)})" | |
index_input = gr.Textbox( | |
label="Enter Index", | |
value="100", | |
info=f"Valid range: {index_range}", | |
placeholder="Enter an integer index" | |
) | |
status_output = gr.Textbox(label="Status", lines=1) | |
input_md = gr.Markdown(label="Input") | |
with gr.Accordion("Raw Data", open=False): | |
raw_data = gr.Code(label="Raw JSON (excluding input/output/exec)", language="json") | |
index_input.change(fn=get_entry, inputs=index_input, outputs=[status_output, input_md, raw_data]) | |
demo.load(fn=lambda: get_entry("100"), outputs=[ | |
status_output, input_md, raw_data | |
]) | |
if __name__ == "__main__": | |
demo.launch() | |