fromInstance

fun fromInstance(instance: Any, objectMapper: <Error class: unknown class> = jacksonObjectMapper()): MatryoshkaTool

Create a MatryoshkaTool from an instance annotated with @MatryoshkaTools.

The instance's class must be annotated with @MatryoshkaTools and contain methods annotated with @LlmTool. If any @LlmTool methods have a category specified, a category-based MatryoshkaTool is created; otherwise, all tools are exposed when the facade is invoked.

Example - Simple facade:

@MatryoshkaTools(
name = "database_operations",
description = "Database operations. Invoke to see specific tools."
)
public class DatabaseTools {
@LlmTool(description = "Execute a SQL query")
public QueryResult query(String sql) { ... }

@LlmTool(description = "Insert a record")
public InsertResult insert(String table, String data) { ... }
}

MatryoshkaTool tool = MatryoshkaTool.fromInstance(new DatabaseTools());

Example - Category-based:

@MatryoshkaTools(
name = "file_operations",
description = "File operations. Pass category to select tools."
)
public class FileTools {
@LlmTool(description = "Read file", category = "read")
public String readFile(String path) { ... }

@LlmTool(description = "Write file", category = "write")
public void writeFile(String path, String content) { ... }
}

MatryoshkaTool tool = MatryoshkaTool.fromInstance(new FileTools());
// Automatically creates category-based selection with "read" and "write" categories

Return

A MatryoshkaTool wrapping the annotated methods

Parameters

instance

The object instance annotated with @MatryoshkaTools

objectMapper

ObjectMapper for JSON parsing (optional)

Throws

if the class is not annotated with @MatryoshkaTools or has no @LlmTool methods