File size: 1,270 Bytes
91ed61f
 
 
 
 
 
a4fc0e3
91ed61f
 
 
 
 
c7726e4
91ed61f
 
 
 
 
 
745281b
 
ec0eab0
745281b
a4fc0e3
 
 
745281b
 
c7726e4
745281b
 
40f7c1a
745281b
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from smolagents import LiteLLMModel
from src.settings import Settings
from src.utils import InputTokenRateLimiter
from smolagents.tools import Tool
from litellm import completion
import os
import re

settings = Settings()
print(settings.llm_model_id)
class FinalAnswerTool(Tool):
    name = "final_answer"
    description = "Return only the final answer as a clean string. Provides the exact, few comma separated words or a single final answer to the given question."
    inputs = {
        "answer": {"type": "string", "description": "The final, correctly formatted answer string."},
    }
    output_type = "string"

    def forward(self, answer: str) -> str:
        if not answer or str(answer).strip() == "":
            return "I am unable to answer"  # Fallback string for submission

        answer = str(answer).strip()
        match = re.search(r'boxed\{([^}]+)\}', answer)
        if match:
            answer = match.group(1)
        # Remove LaTeX symbols and keep letters, digits, commas
        answer = re.sub(r'[\$\{\}\\]', '', answer)
        answer = re.sub(r'[^A-Za-z0-9,\.\-\+/ ]', ' ', answer)
        answer = " ".join(answer.split())  # Remove extra spaces

        if not answer:
            return "I am unable to answer"

        return answer