Spaces:
Sleeping
Sleeping
import re | |
def extract_final_answer(output: str) -> str: | |
""" | |
Extracts the text after 'FINAL ANSWER:' in the model's output. | |
Strips whitespace and ensures clean formatting. | |
If the answer is a comma-separated list, ensures a space after each comma. | |
""" | |
output = str(output) | |
marker = "FINAL ANSWER:" | |
lower_output = output.lower() | |
if marker.lower() in lower_output: | |
# Find actual case version in original output (for safety) | |
idx = lower_output.rfind(marker.lower()) | |
raw_answer = output[idx + len(marker) :].strip() | |
# Normalize comma-separated lists: ensure single space after commas | |
cleaned_answer = re.sub(r",\s*", ", ", raw_answer) | |
return cleaned_answer | |
return output | |
def replace_tool_mentions(prompt: str) -> str: | |
# Replace tool mentions in backticks: `search` -> `web_search`, `wiki` -> `wikipedia_search` | |
prompt = re.sub(r"(?<!\w)`search`(?!\w)", "`web_search`", prompt) | |
prompt = re.sub(r"(?<!\w)`wiki`(?!\w)", "`wikipedia_search`", prompt) | |
# Replace function calls: search(...) -> web_search(...), wiki(...) -> wikipedia_search(...) | |
# This ensures we only catch function calls (not words like arxiv_search) | |
prompt = re.sub(r"(?<!\w)(?<!_)search\(", "web_search(", prompt) | |
prompt = re.sub(r"(?<!\w)(?<!_)wiki\(", "wikipedia_search(", prompt) | |
return prompt | |