Spaces:
Build error
Build error
File size: 1,224 Bytes
ad8ba8a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | from typing import Dict, Any, Callable, List
from pydantic import BaseModel
class Tool(BaseModel):
name: str
description: str
parameters: Dict[str, Any]
func: Callable
class ToolRegistry:
def __init__(self):
self._tools: Dict[str, Tool] = {}
def register(self, name: str, description: str, parameters: Dict[str, Any], func: Callable):
self._tools[name] = Tool(
name=name,
description=description,
parameters=parameters,
func=func
)
def get_tool(self, name: str) -> Tool:
return self._tools.get(name)
def list_tools(self) -> List[Tool]:
return list(self._tools.values())
def to_gemini_tools(self) -> List[Dict[str, Any]]:
# Convert to Gemini tool format
# This is a simplified conversion, actual schema mapping needed
tools = []
for tool in self._tools.values():
tools.append({
"function_declarations": [{
"name": tool.name,
"description": tool.description,
"parameters": tool.parameters
}]
})
return tools
tool_registry = ToolRegistry()
|