diff options
Diffstat (limited to 'src/ollama_web/tools')
| -rw-r--r-- | src/ollama_web/tools/registry.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ollama_web/tools/registry.py b/src/ollama_web/tools/registry.py index 17c755d..e3b7824 100644 --- a/src/ollama_web/tools/registry.py +++ b/src/ollama_web/tools/registry.py @@ -40,10 +40,14 @@ class ToolRegistry: executor: A callable that accepts ``(full_name, arguments)`` and returns a JSON-encoded result string. """ + if name in self._tools: + raise ValueError(f"Duplicate tool name: {name}") self._tools[name] = executor self._mcp_tool_names.add(name) # Avoid duplicate definitions if a registry is rebuilt. - self._ollama_tool_defs = [d for d in self._ollama_tool_defs if d.get("name") != name] + self._ollama_tool_defs = [ + d for d in self._ollama_tool_defs if d.get("function", {}).get("name") != name + ] self._ollama_tool_defs.append(tool_def) return executor @@ -123,4 +127,4 @@ def default_registry() -> ToolRegistry: def all_tool_callables(registry: ToolRegistry | None = None) -> Sequence[Callable[..., object]]: """Return the list of callables suitable for ``ollama`` ``tools`` argument.""" reg = registry or default_registry() - return reg.callables
\ No newline at end of file + return reg.callables |
