import time; from common2 import *; import safety as S; SYSTEM,TASK=S.SYSTEM,S.TASK from smolagents import ToolCallingAgent, OpenAIServerModel, Tool import inspect def mk(f): sig=inspect.signature(f); T={str:"string",float:"number"} class W(Tool): name=f.__name__; description=f.__doc__; output_type="string" inputs={k:{"type":T[p.annotation],"description":k,**({"nullable":True} if p.default is not inspect._empty else {})} for k,p in sig.parameters.items()} def forward(self,*a,**k): return f(*a,**k) W.forward.__signature__=inspect.Signature([inspect.Parameter("self",1)]+list(sig.parameters.values())) return W() a=ToolCallingAgent(tools=[mk(f) for f in S.TOOLS], model=OpenAIServerModel(model_id=MODEL, api_base=BASE, api_key=KEY, temperature=0), instructions=SYSTEM, max_steps=20) s=time.time(); OUT=a.run(TASK); print("\n=====FINAL=====\n",OUT); print(f"\nELAPSED {time.time()-s:.1f}s")