Typed Tool Factory
interface TypedToolFactory
Factory interface for creating strongly typed tools. Extended by Tool.Companion to provide Tool.fromFunction methods.
Example (Java):
record AddRequest(int a, int b) {}
record AddResult(int sum) {}
Tool tool = Tool.fromFunction(
"add",
"Add two numbers",
AddRequest.class,
AddResult.class,
input -> new AddResult(input.a() + input.b())
);Content copied to clipboard
Example (Kotlin):
data class AddRequest(val a: Int, val b: Int)
data class AddResult(val sum: Int)
val tool = Tool.fromFunction<AddRequest, AddResult>(
name = "add",
description = "Add two numbers",
) { input -> AddResult(input.a + input.b) }Content copied to clipboard
Inheritors
Functions
Link copied to clipboard
open fun <I : Any, O : Any> fromFunction(name: String, description: String, inputType: Class<I>, outputType: Class<O>, function: Function<I, O>): Tool
Create a tool with strongly typed input and output (Java-friendly).
open fun <I : Any, O : Any> fromFunction(name: String, description: String, inputType: Class<I>, outputType: Class<O>, metadata: Tool.Metadata, function: Function<I, O>): Tool
Create a tool with strongly typed input and output with custom metadata (Java-friendly).
open fun <I : Any, O : Any> fromFunction(name: String, description: String, inputType: Class<I>, outputType: Class<O>, metadata: Tool.Metadata, objectMapper: <Error class: unknown class>, function: Function<I, O>): Tool
Create a tool with strongly typed input and output with custom ObjectMapper (Java-friendly).
Link copied to clipboard
inline fun <I : Any, O : Any> TypedToolFactory.fromFunction(name: String, description: String, metadata: Tool.Metadata = Tool.Metadata.DEFAULT, objectMapper: <Error class: unknown class> = jacksonObjectMapper(), noinline function: (I) -> O): Tool
Kotlin-friendly extension for creating typed tools with reified type parameters.