Spaces:
Running
Running
| from __future__ import annotations | |
| from typing import Any, Dict, Literal | |
| from paper2lab.inference.nemotron_refiner import refine_with_nemotron | |
| RefinementMode = Literal["none", "local", "nemotron"] | |
| def refine_optional( | |
| paper_card: Dict[str, Any], | |
| mode: RefinementMode = "none", | |
| return_comparison: bool = True, | |
| ) -> Dict[str, Any]: | |
| """ | |
| none/local: keep local rule-based extraction. | |
| nemotron: refine the candidate with Nemotron. | |
| """ | |
| mode = (mode or "none").lower().strip() | |
| if mode in {"none", "local"}: | |
| return { | |
| "status": "skipped", | |
| "mode": mode, | |
| "before_refinement": paper_card, | |
| "after_refinement": paper_card, | |
| "diff_summary": { | |
| "changed_fields": [], | |
| "added_fields": [], | |
| "removed_fields": [], | |
| }, | |
| } | |
| if mode == "nemotron": | |
| pack = paper_card.get("llm_evidence_pack") | |
| if not pack: | |
| return { | |
| "status": "error", | |
| "mode": "nemotron", | |
| "error": "Missing llm_evidence_pack in paper_card.", | |
| "before_refinement": paper_card, | |
| "after_refinement": paper_card, | |
| "diff_summary": { | |
| "changed_fields": [], | |
| "added_fields": [], | |
| "removed_fields": [], | |
| }, | |
| } | |
| try: | |
| return refine_with_nemotron( | |
| llm_evidence_pack=pack, | |
| return_comparison=return_comparison, | |
| ) | |
| except Exception as exc: | |
| return { | |
| "status": "error", | |
| "mode": "nemotron", | |
| "error": str(exc), | |
| "before_refinement": paper_card, | |
| "after_refinement": paper_card, | |
| "diff_summary": { | |
| "changed_fields": [], | |
| "added_fields": [], | |
| "removed_fields": [], | |
| }, | |
| } | |
| return { | |
| "status": "error", | |
| "mode": mode, | |
| "error": f"Unsupported refinement mode: {mode}", | |
| "before_refinement": paper_card, | |
| "after_refinement": paper_card, | |
| "diff_summary": { | |
| "changed_fields": [], | |
| "added_fields": [], | |
| "removed_fields": [], | |
| }, | |
| } |