Spaces:
Sleeping
Sleeping
Add meta-review tab, decision field, rebuild bundle with metareview/decision
Browse files- app.py +28 -16
- bundle.json.gz +2 -2
- fetcher.py +2 -0
app.py
CHANGED
|
@@ -16,15 +16,23 @@ def _get_api_key(user_key: str) -> str:
|
|
| 16 |
def load_paper(paper_id: str):
|
| 17 |
paper_id = (paper_id or "").strip()
|
| 18 |
if not paper_id:
|
| 19 |
-
return gr.update(choices=[], value=None), "Please enter a paper ID.", ""
|
| 20 |
try:
|
| 21 |
paper = fetch_paper_reviews(paper_id)
|
| 22 |
_paper_cache[paper_id] = paper
|
| 23 |
reviewers = [r["reviewer_id"] for r in paper["reviews"]]
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
except Exception as e:
|
| 27 |
-
return gr.update(choices=[], value=None), f"Error: {e}", ""
|
| 28 |
|
| 29 |
|
| 30 |
def show_review(paper_id: str, reviewer_id: str):
|
|
@@ -113,24 +121,28 @@ with gr.Blocks(title="Review AI Rater", theme=gr.themes.Soft()) as demo:
|
|
| 113 |
with gr.Row():
|
| 114 |
paper_id_box = gr.Textbox(
|
| 115 |
label="OpenReview Paper ID",
|
| 116 |
-
placeholder="e.g. B1e3OlStPB
|
| 117 |
scale=3,
|
| 118 |
)
|
| 119 |
load_btn = gr.Button("Load Paper", variant="primary", scale=1)
|
| 120 |
|
| 121 |
paper_info = gr.Markdown("")
|
| 122 |
|
| 123 |
-
with gr.
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 134 |
reviewer_dd.change(show_review, [paper_id_box, reviewer_dd], [review_display])
|
| 135 |
rate_one_btn.click(run_rating, [paper_id_box, reviewer_dd, api_key_box], [result_display])
|
| 136 |
rate_all_btn.click(run_rating_all, [paper_id_box, api_key_box], [result_display])
|
|
|
|
| 16 |
def load_paper(paper_id: str):
|
| 17 |
paper_id = (paper_id or "").strip()
|
| 18 |
if not paper_id:
|
| 19 |
+
return gr.update(choices=[], value=None), "Please enter a paper ID.", "", ""
|
| 20 |
try:
|
| 21 |
paper = fetch_paper_reviews(paper_id)
|
| 22 |
_paper_cache[paper_id] = paper
|
| 23 |
reviewers = [r["reviewer_id"] for r in paper["reviews"]]
|
| 24 |
+
decision = paper.get("decision", "")
|
| 25 |
+
info = f"**{paper.get('title', paper_id)}**\n\n{paper.get('conference', '')}"
|
| 26 |
+
if decision:
|
| 27 |
+
info += f" 路 **Decision:** {decision}"
|
| 28 |
+
info += f" 路 {len(reviewers)} reviewer(s)"
|
| 29 |
+
|
| 30 |
+
metareview = paper.get("metareview", "")
|
| 31 |
+
meta_md = f"**Area Chair Meta-Review:**\n\n{metareview}" if metareview else "*No meta-review available.*"
|
| 32 |
+
|
| 33 |
+
return gr.update(choices=reviewers, value=reviewers[0] if reviewers else None), info, meta_md, ""
|
| 34 |
except Exception as e:
|
| 35 |
+
return gr.update(choices=[], value=None), f"Error: {e}", "", ""
|
| 36 |
|
| 37 |
|
| 38 |
def show_review(paper_id: str, reviewer_id: str):
|
|
|
|
| 121 |
with gr.Row():
|
| 122 |
paper_id_box = gr.Textbox(
|
| 123 |
label="OpenReview Paper ID",
|
| 124 |
+
placeholder="e.g. B1e3OlStPB",
|
| 125 |
scale=3,
|
| 126 |
)
|
| 127 |
load_btn = gr.Button("Load Paper", variant="primary", scale=1)
|
| 128 |
|
| 129 |
paper_info = gr.Markdown("")
|
| 130 |
|
| 131 |
+
with gr.Tabs():
|
| 132 |
+
with gr.Tab("Reviews"):
|
| 133 |
+
with gr.Row():
|
| 134 |
+
reviewer_dd = gr.Dropdown(choices=[], label="Select Reviewer", interactive=True, scale=2)
|
| 135 |
+
rate_one_btn = gr.Button("AI Rate This Reviewer", variant="primary", scale=1)
|
| 136 |
+
rate_all_btn = gr.Button("AI Rate All Reviewers", variant="secondary", scale=1)
|
| 137 |
+
review_display = gr.Markdown("")
|
| 138 |
+
gr.Markdown("---")
|
| 139 |
+
gr.Markdown("### Rating Results")
|
| 140 |
+
result_display = gr.Markdown("")
|
| 141 |
+
|
| 142 |
+
with gr.Tab("Meta-Review"):
|
| 143 |
+
meta_display = gr.Markdown("*Load a paper to see the meta-review.*")
|
| 144 |
+
|
| 145 |
+
load_btn.click(load_paper, [paper_id_box], [reviewer_dd, paper_info, meta_display, result_display])
|
| 146 |
reviewer_dd.change(show_review, [paper_id_box, reviewer_dd], [review_display])
|
| 147 |
rate_one_btn.click(run_rating, [paper_id_box, reviewer_dd, api_key_box], [result_display])
|
| 148 |
rate_all_btn.click(run_rating_all, [paper_id_box, api_key_box], [result_display])
|
bundle.json.gz
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7e8d1c3d6bb3539a50da345f4f3010ece935d3d1a0ece0aaa985c58523cdd931
|
| 3 |
+
size 102679294
|
fetcher.py
CHANGED
|
@@ -85,6 +85,8 @@ def _load_bundle():
|
|
| 85 |
_bundle[pid] = {
|
| 86 |
"title": p.get("title", pid),
|
| 87 |
"conference": p.get("conf", ""),
|
|
|
|
|
|
|
| 88 |
"reviews": [
|
| 89 |
{
|
| 90 |
"reviewer_id": r["r"],
|
|
|
|
| 85 |
_bundle[pid] = {
|
| 86 |
"title": p.get("title", pid),
|
| 87 |
"conference": p.get("conf", ""),
|
| 88 |
+
"metareview": p.get("metareview", ""),
|
| 89 |
+
"decision": p.get("decision", ""),
|
| 90 |
"reviews": [
|
| 91 |
{
|
| 92 |
"reviewer_id": r["r"],
|