Spaces:
Sleeping
Sleeping
import argparse | |
import pathlib | |
import uvicorn | |
import gradio as gr | |
from .reviewer import PDFReviewer | |
from .api import app as fastapi_app | |
def _cli_review(args): | |
reviewer = PDFReviewer(debug=args.debug) | |
result = reviewer.review_pdf(args.pdf) | |
for key, value in result.items(): | |
print(f"\n{key.upper()}:\n{value}\n") | |
def _cli_demo(args): | |
reviewer = PDFReviewer(debug=args.debug) | |
def gradio_interface(file, progress=gr.Progress()): | |
result = reviewer.review_pdf(file.name) | |
return ( | |
result["contributions"], | |
result["strengths"], | |
result["weaknesses"], | |
result["requested_changes"], | |
result["impact_concerns"], | |
result["claims_and_evidence"], | |
result["audience_interest"], | |
) | |
iface = gr.Interface( | |
fn=gradio_interface, | |
inputs=gr.File(label="Upload PDF"), | |
outputs=[ | |
gr.Textbox(label="Contributions"), | |
gr.Textbox(label="Strengths"), | |
gr.Textbox(label="Weaknesses"), | |
gr.Textbox(label="Requested Changes"), | |
gr.Textbox(label="Impact Concerns"), | |
gr.Textbox(label="Claims and Evidence"), | |
gr.Textbox(label="Audience Interest"), | |
], | |
title="PDF Review Parser", | |
description="Upload a PDF to parse and review its content.", | |
) | |
iface.launch(share=True) | |
def _cli_api(args): | |
uvicorn.run(fastapi_app, host=args.host, port=args.port, reload=args.reload) | |
def build_parser() -> argparse.ArgumentParser: | |
parser = argparse.ArgumentParser(description="TMLR PDF Reviewer") | |
subparsers = parser.add_subparsers(dest="command", required=True) | |
# Review command | |
p_review = subparsers.add_parser("review", help="Process a PDF and output to console") | |
p_review.add_argument("pdf", type=pathlib.Path, help="Path to the PDF file") | |
p_review.add_argument("--debug", action="store_true", help="Enable debug mode (uses gpt-4o and drops to pdb on errors)") | |
p_review.set_defaults(func=_cli_review) | |
# Demo command | |
p_demo = subparsers.add_parser("demo", help="Launch Gradio demo") | |
p_demo.add_argument("--debug", action="store_true", help="Enable debug mode (uses gpt-4o and drops to pdb on errors)") | |
p_demo.set_defaults(func=_cli_demo) | |
# API command | |
p_api = subparsers.add_parser("api", help="Run FastAPI server") | |
p_api.add_argument("--host", default="0.0.0.0") | |
p_api.add_argument("--port", type=int, default=8000) | |
p_api.add_argument("--reload", action="store_true") | |
p_api.set_defaults(func=_cli_api) | |
return parser | |
def main(): | |
parser = build_parser() | |
args = parser.parse_args() | |
args.func(args) | |
if __name__ == "__main__": | |
main() |