Skip to content

tinker_cookbook.tool_use.tools.tool

tinker_cookbook.tool_use.tools.tool(fn)

Decorator to create a tool from a function or method.

The decorated function must return a ToolResult. Use simple_tool_result() helper for basic cases, or construct ToolResult directly for metrics/metadata.

Usage: @tool async def search(query: Annotated[str, "The search query"]) -> ToolResult: '''Search for information.''' results = await do_search(query) return simple_tool_result( json.dumps({"results": results}), metrics={"result_count": len(results)} )

As class method with shared state:

class MySharedStateTools: def init(self, api_key: str): self.api_key = api_key

@tool async def search(self, query: Annotated[str, "Query"]) -> ToolResult: '''Search for information.''' results = await do_search(query, api_key=self.api_key) return simple_tool_result(json.dumps(results))

Parameters:

  • fn (Callable[..., Any])

Returns: FunctionTool