Spaces:
Sleeping
Sleeping
Download src/tool_registry.py from FlyingNunchucks/07-tool-using-agent: direct link, hf CLI and curl.
- Browser
- Download file 3.42 kB
-
https://huggingface.co/spaces/FlyingNunchucks/07-tool-using-agent/resolve/main/src/tool_registry.py
- Command line
-
hf download hf://spaces/FlyingNunchucks/07-tool-using-agent/src/tool_registry.py
-
curl -L -o tool_registry.py https://huggingface.co/spaces/FlyingNunchucks/07-tool-using-agent/resolve/main/src/tool_registry.py
3.42 kB
| from typing import Any, Callable, Dict | |
| from src.tools.calculator import calculator | |
| from src.tools.database import search_inventory | |
| from src.tools.external_api import lookup_country | |
| ToolFunction = Callable[..., Dict[str, Any]] | |
| TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { | |
| "calculator": { | |
| "function": calculator, | |
| "description": ( | |
| "Safely evaluate a mathematical expression. " | |
| "Use this tool for arithmetic and calculations." | |
| ), | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "expression": { | |
| "type": "string", | |
| "description": ( | |
| "A mathematical expression such as " | |
| "'125 * 4' or '(100 / 4) + 7'." | |
| ), | |
| } | |
| }, | |
| "required": ["expression"], | |
| "additionalProperties": False, | |
| }, | |
| }, | |
| "search_inventory": { | |
| "function": search_inventory, | |
| "description": ( | |
| "Search the local inventory database by item name, " | |
| "category, or both." | |
| ), | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "item_name": { | |
| "type": "string", | |
| "description": ( | |
| "Optional item name or partial item name." | |
| ), | |
| }, | |
| "category": { | |
| "type": "string", | |
| "description": ( | |
| "Optional exact inventory category such as " | |
| "'Electronics', 'Furniture', or " | |
| "'Office Supplies'." | |
| ), | |
| }, | |
| }, | |
| "additionalProperties": False, | |
| }, | |
| }, | |
| "lookup_country": { | |
| "function": lookup_country, | |
| "description": ( | |
| "Look up structured information about a country " | |
| "using the World Bank Countries API." | |
| ), | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "country_name": { | |
| "type": "string", | |
| "description": ( | |
| "The country name to look up, such as " | |
| "'Japan' or 'Canada'." | |
| ), | |
| } | |
| }, | |
| "required": ["country_name"], | |
| "additionalProperties": False, | |
| }, | |
| }, | |
| } | |
| def get_tool(name: str) -> ToolFunction: | |
| """Return an approved tool function by name.""" | |
| if name not in TOOL_REGISTRY: | |
| raise ValueError( | |
| f"Tool '{name}' is not registered." | |
| ) | |
| return TOOL_REGISTRY[name]["function"] | |
| def get_tool_definitions() -> list[Dict[str, Any]]: | |
| """ | |
| Return tool definitions in OpenAI-compatible function-call format. | |
| """ | |
| definitions = [] | |
| for name, config in TOOL_REGISTRY.items(): | |
| definitions.append( | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": name, | |
| "description": config["description"], | |
| "parameters": config["parameters"], | |
| }, | |
| } | |
| ) | |
| return definitions | |
| def list_tools() -> list[str]: | |
| """Return the names of all approved tools.""" | |
| return sorted(TOOL_REGISTRY.keys()) |