Hooks are functions attached to the Kernel that are triggered during specific lifecycle events. They allow you to intercept, modify, or observe the execution of functions and AI service calls.
There are two ways to register hooks:
Global Registration: Hooks added to kernel.getGlobalKernelHooks() are effective for every operation performed by that kernel instance.
kernel.getGlobalKernelHooks().addHook("hookName", KernelHook);
Single Call Registration: Hooks passed as a parameter to invokeAsync are effective only for that specific execution.
KernelHooks kernelHooks = new KernelHooks();
kernelHooks.addPreChatCompletionHook(...);
var result = kernel.invokeAsync(writerFunction)
.withArguments(KernelFunctionArguments.builder().build())
.addKernelHooks(kernelHooks)
.block();
// Global registration
kernel.getGlobalKernelHooks().addHook("hookName", KernelHook);
// Single call registration
KernelHooks kernelHooks = new KernelHooks();
kernelHooks.addPreChatCompletionHook(...);
var result = kernel.invokeAsync(writerFunction)
.withArguments(KernelFunctionArguments.builder().build())
.addKernelHooks(kernelHooks)
.block();