Class FunctionToolsLoader

java.lang.Object
org.machanism.machai.ai.tools.FunctionToolsLoader

public class FunctionToolsLoader extends Object
Discovers and applies FunctionTools implementations using Java's ServiceLoader mechanism.

This class acts as the entry point for registering a curated set of local capabilities (such as file access, command execution, and HTTP retrieval) with a Genai provider. Implementations are discovered from the classpath (typically via META-INF/services provider configuration) and then applied to the provider in discovery order.

Usage Example


 Genai provider = ...;
 Class<?> appClass = ...;
 FunctionToolsLoader loader = new FunctionToolsLoader();
 loader.applyTools(provider, appClass);
 

The loader maintains a list of discovered FunctionTools instances and applies them to the provider, filtered by application class compatibility.

Author:
Viktor Tovstyi
  • Constructor Details

    • FunctionToolsLoader

      public FunctionToolsLoader()
      Constructs a new FunctionToolsLoader and discovers available FunctionTools implementations using ServiceLoader.

      Each discovered tool is added to the internal list and logged for debugging.

  • Method Details

    • applyTools

      public void applyTools(Genai provider, Class<?> appClass)
      Applies all discovered FunctionTools installers to the given provider, filtered by application class compatibility.

      For each compatible tool, both tool functions and prompts are registered with the provider.

      Parameters:
      provider - the Genai provider instance to augment with tool functions
      appClass - the application class requesting tool assignment; only tools compatible with this class are applied
      Throws:
      IllegalArgumentException - if a discovered installer cannot be instantiated