Код Middle Агенты и вызов инструментов обновлено
Проверить вызов инструмента перед выполнением
Условие
Напишите validate_call(call, tools). tools: словарь имя -> {"required": [...], "types": {аргумент: "str" | "int" | "bool"}}. call: {"name": str, "args": dict}. Проверьте по порядку и верните первую ошибку строкой или "ok":
- инструмента нет:
"unknown_tool"; - нет обязательного аргумента:
"missing:<имя>"(первый по порядкуrequired); - есть аргумент, которого нет в
types:"unexpected:<имя>"(первый по алфавиту); - тип не совпадает:
"type:<имя>"(первый по алфавиту). Дляintзначениеboolне подходит.
Примеры
validate_call({"name":"get_order","args":{"order_id":"A-17"}}, {"get_order":{"required":["order_id"],"types":{"order_id":"str"}}}) // "ok"
validate_call({"name":"drop_db","args":{}}, {"get_order":{"required":[],"types":{}}}) // "unknown_tool"
validate_call({"name":"refund","args":{"amount":100}}, {"refund":{"required":["order_id","amount"],"types":{"order_id":"str","amount":"int"}}}) // "missing:order_id"
Как подойти
Подсказки: 1
isinstance(True, int)в Python истинно.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.