o
    پi&
                     @   st   d Z ddlZddlZddlmZ ddlZddlmZ ddl	m
Z
mZmZmZmZmZmZ d ZG dd deZdS )	z
Measuring Mathematical Problem Solving With the MATH Dataset
Dan Hendrycks, Collin Burns, Saurav Kadavath, Akul Arora, Steven Basart, Eric Tang, Dawn Song, Jacob Steinhardt
https://arxiv.org/abs/2103.03874
    N)Optional)simple_eval_common)ANSWER_PATTERN
HTML_JINJAEval
EvalResultSamplerBaseSingleEvalResultcheck_equalitya)  
Solve the following math problem step by step. The last line of your response should be of the form Answer: $ANSWER (without quotes) where $ANSWER is the answer to the problem.

{Question}

Remember to put your answer on its own line after "Answer:", and you do not need to use a \boxed command.
c                   @   s<   e Zd Zdededee defddZdedefd	d
Z	dS )MathEvalfilenameequality_checkernum_examplesnum_threadsc                 C   sH   t |}dd | D }|rtd||}|| _|| _|| _d S )Nc                 S   s   g | ]\}}|  qS  )to_dict).0_rowr   r   P/home/ubuntu/.local/lib/python3.10/site-packages/sglang/test/simple_eval_math.py
<listcomp>,   s    z%MathEval.__init__.<locals>.<listcomp>r   )	pandasread_csviterrowsrandomRandomsampleexamplesr   r   )selfr   r   r   r   dfr   r   r   r   __init__$   s   

zMathEval.__init__samplerreturnc                    s0   dt f fdd}t|jj}t|S )Nr   c                    s    j tjd	i | ddg} |}|pd}tt|}|r#|dnd }ttj	| d |}t
jtj|t|dd|| d |d}|t|ddg }t|||dS )
Nuser)contentrole    Answer	assistant)prompt_messagesnext_messagescorecorrect_answerextracted_answer)htmlr,   convor   )_pack_messageQUERY_TEMPLATEformatresearchr   groupfloatr
   r   common	jinja_envfrom_stringr   renderdictr	   )r   r*   response_textmatchr.   r,   r/   r0   r!   r   r   r   fn4   s$   
zMathEval.__call__.<locals>.fn)r<   r8   map_with_progressr   r   aggregate_results)r   r!   r@   resultsr   r?   r   __call__3   s   
zMathEval.__call__N)
__name__
__module____qualname__strr   r   intr    r   rD   r   r   r   r   r   #   s    
r   )__doc__r   r4   typingr   r   sglang.testr   r8   sglang.test.simple_eval_commonr   r   r   r   r   r	   r
   stripr2   r   r   r   r   r   <module>   s   $
	