Spaces:
Paused
Paused
Download src/math_env/interface.py from emrekuruu/math-openenv: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/spaces/emrekuruu/math-openenv/resolve/main/src/math_env/interface.py
- Command line
-
hf download hf://spaces/emrekuruu/math-openenv/src/math_env/interface.py
-
curl -L -o interface.py https://huggingface.co/spaces/emrekuruu/math-openenv/resolve/main/src/math_env/interface.py
1.83 kB
| """Framework-neutral MATH actor-facing interface helpers.""" | |
| from __future__ import annotations | |
| from typing import Any | |
| def environment_description() -> str: | |
| """Return the factual, label-free single-attempt environment contract.""" | |
| return ( | |
| "MATH is a single-attempt mathematics problem-solving environment. The current " | |
| "observation contains one problem statement. Submit exactly one complete final " | |
| "answer string in the answer field. The server grades the submitted answer against " | |
| "a hidden reference answer and terminates immediately. Either the answer matches or " | |
| "it does not; there is no partial credit and no retry. Answer as a bare value (for " | |
| "example a number, expression, or set), without explanation, in plain text or " | |
| "LaTeX." | |
| ) | |
| def build_task_prompt(instruction: str) -> str: | |
| """Build the actor-facing MATH prompt from a frozen task record. | |
| The actor sees only the problem statement. Official class and difficulty are post-hoc | |
| metadata and must never reach the solver. | |
| """ | |
| return ( | |
| "# Problem\n" | |
| f"{instruction}\n\n" | |
| "# Task\n" | |
| "Solve the problem and provide only the final answer. Return the answer string in " | |
| "the action object's `answer` field." | |
| ) | |
| def extract_answer(value: Any) -> str: | |
| """Return the submitted answer string, stripping an outer fenced block if present.""" | |
| text = str(value).strip() | |
| if text.startswith("```"): | |
| # strip one optional language tag + fences | |
| lines = text.splitlines() | |
| lines = lines[1:] if lines and not lines[0].startswith("```answer") else [lines[0]] + lines[1:] | |
| lines = [line for line in lines if not line.strip().startswith("```")] | |
| text = "\n".join(lines).strip() | |
| return text |