1515from eval_protocol .models import EvaluationRow , Message
1616from eval_protocol .pytest .rollout_processor import RolloutProcessor
1717from eval_protocol .pytest .types import Dataset , RolloutProcessorConfig
18- from types import SimpleNamespace
18+ from pydantic import BaseModel
19+ from typing import Optional
20+
21+
22+ class FunctionLike (BaseModel ):
23+ name : Optional [str ] = None
24+ parameters : Any = None
25+
1926
2027logger = logging .getLogger (__name__ )
2128
@@ -53,10 +60,10 @@ async def _get_tools(self) -> Optional[List[dict[str, Any]]]:
5360 f_params = getattr (f , "parameters" , None )
5461 if hasattr (f_params , "model_dump" ):
5562 f_params = f_params .model_dump ()
56- func_obj = SimpleNamespace (name = f_name , parameters = f_params )
63+ func_obj = FunctionLike (name = f_name , parameters = f_params )
5764 t = {"type" : t .get ("type" , "function" ), "function" : func_obj }
5865 elif isinstance (f , dict ):
59- func_obj = SimpleNamespace (name = f .get ("name" ), parameters = f .get ("parameters" ))
66+ func_obj = FunctionLike (name = f .get ("name" ), parameters = f .get ("parameters" ))
6067 t = {"type" : t .get ("type" , "function" ), "function" : func_obj }
6168 tools_dicts .append (t )
6269 continue
@@ -69,7 +76,7 @@ async def _get_tools(self) -> Optional[List[dict[str, Any]]]:
6976 params_payload = params
7077 else :
7178 params_payload = {}
72- func_obj = SimpleNamespace (name = name , parameters = params_payload )
79+ func_obj = FunctionLike (name = name , parameters = params_payload )
7380 tools_dicts .append ({"type" : tool_type or "function" , "function" : func_obj })
7481 self .evaluation_row .tools = tools_dicts
7582 else :
0 commit comments