init-commit

This commit is contained in:
lilinyang 2025-05-23 15:27:15 +08:00
commit 18a552597a
3461 changed files with 1150579 additions and 0 deletions

View file

@ -0,0 +1,89 @@
from abc import ABC, abstractmethod
class BaseEnvironment(ABC):
def __init__(self, problem_description: str = None, *args, **kwargs):
"""
构造函数接收题目描述和其他参数初始化环境
:param problem_description: 题目描述文本
:param args: 其他位置参数
:param kwargs: 其他关键字参数
"""
self.problem_description = problem_description
self.kwargs = kwargs
for k,v in self.kwargs.items():
setattr(self, k, v)
@abstractmethod
def generator(self) -> object:
"""
构建具体的题目实例生成或加载题目数据
"""
pass
@abstractmethod
def solver(self) -> object:
"""
解题函数执行解题逻辑并返回结果
"""
pass
@abstractmethod
def check_solution(self, solution: object) -> bool:
"""
检查提供的解答是否正确
:param solution: 提供的答案对象
:return: 如果解答正确返回True否则False
"""
pass
@abstractmethod
def reset(self) -> None:
"""
重置环境到初始状态
"""
pass
@property
@abstractmethod
def is_solved(self) -> bool:
"""
获取题目是否已被解决的状态
"""
pass
def get_question(self) -> str:
"""
提供生成题目的问题或解决题目的问题
"""
return "No question available."
def get_question_following(self) -> str:
"""
提供题目回答的可替换后缀如回复格式规范等
"""
followings = []
followings.append("""\n请以如下格式输出结果:
```json
{
'final_answer': <your answer>
}
```""")
def get_hint(self) -> str:
"""
提供关于如何生成或解决问题的提示信息可选
"""
return "No hint available."
def get_additional_resources(self) -> list:
"""
返回可用于解决问题的额外资源列表可选
"""
return []
def __str__(self) -> str:
"""
返回环境的字符串表示通常包含当前环境的状态信息
"""
return f"Environment for problem: {self.problem_description}"