from typing import List
from pydantic import Field
from rm_gallery.core.reward.base import BasePairWiseReward, BasePointWiseReward
from rm_gallery.gallery.rm.finance.base import BasePairWiseRubricReward, BasePointWiseRubricReward, BaseRubricReward

DESC = """
你是一个专业的金融评估专家，你需要评估你需要评估金融助手回答对事件解读的专业性。现在会提供给你一个金融问题以及两位金融助手的回答，同时提供若干评估标准，你需要逐条理解评估标准，根据以下评估步骤，选择更好的答案。

#评估步骤
1.先判断回答中是否识别到了问题中的事件，能识别到的答案更好;
2.针对每个评估标准选择更好的回答，并给出你的理由;
3.综合评估每个评估标准下的结果，然后选出综合最优的答案，并给出理由；
"""
RUBRICS = [
"""
准确识别：准确检索识别问题中的事件
""",
"""
时间范围精准：严格匹配问题指定的时间范围，避免模糊表述；
""",
"""
核心要素准确： 是否准确无误地识别和描述了事件的关键信息。例如，在回答“美国CPI数据”问题时，必须准确引用最新的CPI数值、环比与同比增长率、以及核心CPI数据
"""
]

class EventIdentificationReward(BasePairWiseRubricReward,BasePairWiseReward):
    rubrics: List[str] = Field(default=RUBRICS, description="评估标准")
    desc: str = Field(default=DESC, description="任务描述")