MCPcopy Create free account
hub / github.com/microsoft/TypeChat / MathAgent

Class MathAgent

python/examples/multiSchema/agents.py:46–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46class MathAgent:
47 _validator: TypeChatProgramValidator
48 _translator: TypeChatProgramTranslator
49
50 def __init__(self, model: TypeChatLanguageModel):
51 super().__init__()
52 self._validator = TypeChatProgramValidator()
53 self._translator = TypeChatProgramTranslator(model, self._validator, math_schema.MathAPI)
54
55 async def _handle_json_program_call(self, func: str, args: Sequence[object]) -> int | float:
56 print(f"{func}({json.dumps(args)}) ")
57
58 for arg in args:
59 if not isinstance(arg, (int, float)):
60 raise ValueError("All arguments are expected to be numeric.")
61
62 args = cast(Sequence[int | float], args)
63
64 match func:
65 case "add":
66 return args[0] + args[1]
67 case "sub":
68 return args[0] - args[1]
69 case "mul":
70 return args[0] * args[1]
71 case "div":
72 return args[0] / args[1]
73 case "neg":
74 return -1 * args[0]
75 case "id":
76 return args[0]
77 case _:
78 raise ValueError(f'Unexpected function name {func}')
79
80 async def handle_request(self, line: str):
81 result = await self._translator.translate(line)
82 if isinstance(result, Failure):
83 print(result.message)
84 else:
85 result = result.value
86 print(json.dumps(result, indent=2))
87
88 math_result = await evaluate_json_program(result, self._handle_json_program_call)
89 print(f"Math Result: {math_result}")
90
91
92class MusicAgent:

Callers 1

mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…