FunctionInvocation<T> Class

  • java.lang.Object
    • reactor.core.publisher.Mono
      • com.microsoft.semantickernel.orchestration.FunctionInvocation<T>

Type Parameters

T

The type of the result of the function invocation.

public class FunctionInvocation<T>
extends reactor.core.publisher.Mono<FunctionResult<T>>

FunctionInvocation supports fluent invocation of a function in the kernel.

Field Summary

Modifier and Type Field and Description
protected KernelFunctionArguments arguments
protected final ContextVariableTypes contextVariableTypes
protected final KernelFunction<?> function
protected UnmodifiableKernelHooks hooks
protected final Kernel kernel
protected PromptExecutionSettings promptExecutionSettings
protected final ContextVariableType<T> resultType
protected ToolCallBehavior toolCallBehavior

Constructor Summary

Constructor Description
FunctionInvocation(Kernel kernel, KernelFunction<?> function, ContextVariableType<T> resultType)

Create a new function invocation.

FunctionInvocation(Kernel kernel, KernelFunction<T> function)

Create a new function invocation.

Method Summary

Modifier and Type Method and Description
FunctionInvocation<U> withResultType(ContextVariableType<U> resultType)

Supply the result type of function invocation.

FunctionInvocation<U> withResultType(Class<U> resultType)

Supply the result type of function invocation.

FunctionInvocation<U> withResultTypeAutoConversion(Class<U> resultType)

Supply the result type of function invocation.

FunctionInvocation<T> addKernelHook(KernelHook<?> hook)

Add a kernel hook to the function invocation.

FunctionInvocation<T> addKernelHooks(KernelHooks hooks)

Add kernel hooks to the function invocation.

void subscribe(CoreSubscriber<? super FunctionResult<T>> coreSubscriber)

This method handles the reactive stream when the KernelFunction is invoked.

FunctionInvocation<T> withArguments(KernelFunctionArguments arguments)

Supply arguments to the function invocation.

FunctionInvocation<T> withInvocationContext(InvocationContext invocationContext)

Use an invocation context variable to supply the types, tool call behavior, prompt execution settings, and kernel hooks to the function invocation.

FunctionInvocation<T> withPromptExecutionSettings(PromptExecutionSettings promptExecutionSettings)

Supply prompt execution settings to the function invocation.

FunctionInvocation<T> withToolCallBehavior(ToolCallBehavior toolCallBehavior)

Supply tool call behavior to the function invocation.

FunctionInvocation<T> withTypeConverter(ContextVariableTypeConverter<?> typeConverter)

Supply a type converter to the function invocation.

FunctionInvocation<T> withTypes(ContextVariableTypes contextVariableTypes)

Supply a context variable type to the function invocation.

Methods inherited from java.lang.Object

java.lang.Object.clone java.lang.Object.equals java.lang.Object.finalize java.lang.Object.getClass java.lang.Object.hashCode java.lang.Object.notify java.lang.Object.notifyAll java.lang.Object.wait java.lang.Object.wait java.lang.Object.wait

Methods inherited from reactor.core.publisher.Mono

reactor.core.publisher.Mono.<E>cast reactor.core.publisher.Mono.<E>doOnError(java.lang.Class<E>,java.util.function.Consumer< reactor.core.publisher.Mono.<E>onErrorContinue reactor.core.publisher.Mono.<E>onErrorContinue reactor.core.publisher.Mono.<E>onErrorMap(java.lang.Class<E>,java.util.function.Function< reactor.core.publisher.Mono.<E>onErrorResume(java.lang.Class<E>,java.util.function.Function< reactor.core.publisher.Mono.<E>onErrorReturn reactor.core.publisher.Mono.<E>subscribeWith reactor.core.publisher.Mono.<I>fromDirect(org.reactivestreams.Publisher< reactor.core.publisher.Mono.<P>as(java.util.function.Function< reactor.core.publisher.Mono.<R>doOnDiscard(java.lang.Class<R>,java.util.function.Consumer< reactor.core.publisher.Mono.<R>flatMap(java.util.function.Function< reactor.core.publisher.Mono.<R>flatMapIterable(java.util.function.Function< reactor.core.publisher.Mono.<R>flatMapMany(java.util.function.Function< reactor.core.publisher.Mono.<R>flatMapMany(java.util.function.Function< reactor.core.publisher.Mono.<R>handle(java.util.function.BiConsumer< reactor.core.publisher.Mono.<R>map(java.util.function.Function< reactor.core.publisher.Mono.<R>mapNotNull(java.util.function.Function< reactor.core.publisher.Mono.<R>publish(java.util.function.Function< reactor.core.publisher.Mono.<R>zip(java.lang.Iterable< reactor.core.publisher.Mono.<R>zip(java.util.function.Function< reactor.core.publisher.Mono.<R>zipDelayError(java.lang.Iterable< reactor.core.publisher.Mono.<R>zipDelayError(java.util.function.Function< reactor.core.publisher.Mono.<T,D>using(java.util.concurrent.Callable< reactor.core.publisher.Mono.<T,D>using(java.util.concurrent.Callable< reactor.core.publisher.Mono.<T,D>usingWhen(org.reactivestreams.Publisher<D>,java.util.function.Function< reactor.core.publisher.Mono.<T,D>usingWhen(org.reactivestreams.Publisher<D>,java.util.function.Function< reactor.core.publisher.Mono.<T1,T2,O>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6,T7,T8>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6,T7,T8>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6,T7>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6,T7>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5,T6>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4,T5>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3,T4>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2,T3>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2>zip(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T1,T2>zipDelayError(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T2,O>zipWhen(java.util.function.Function<T,reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T2,O>zipWith(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T2>zipWhen(java.util.function.Function<T,reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T2>zipWith(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T>create reactor.core.publisher.Mono.<T>defer(java.util.function.Supplier< reactor.core.publisher.Mono.<T>deferContextual(java.util.function.Function<reactor.util.context.ContextView, reactor.core.publisher.Mono.<T>deferWithContext(java.util.function.Function<reactor.util.context.Context, reactor.core.publisher.Mono.<T>empty reactor.core.publisher.Mono.<T>error reactor.core.publisher.Mono.<T>error(java.util.function.Supplier< reactor.core.publisher.Mono.<T>first(java.lang.Iterable< reactor.core.publisher.Mono.<T>first(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T>firstWithSignal(java.lang.Iterable< reactor.core.publisher.Mono.<T>firstWithSignal(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T>firstWithValue(java.lang.Iterable< reactor.core.publisher.Mono.<T>firstWithValue(reactor.core.publisher.Mono< reactor.core.publisher.Mono.<T>from(org.reactivestreams.Publisher< reactor.core.publisher.Mono.<T>fromCallable(java.util.concurrent.Callable< reactor.core.publisher.Mono.<T>fromCompletionStage(java.util.concurrent.CompletionStage< reactor.core.publisher.Mono.<T>fromCompletionStage(java.util.function.Supplier< reactor.core.publisher.Mono.<T>fromFuture(java.util.concurrent.CompletableFuture< reactor.core.publisher.Mono.<T>fromFuture(java.util.concurrent.CompletableFuture< reactor.core.publisher.Mono.<T>fromFuture(java.util.function.Supplier< reactor.core.publisher.Mono.<T>fromFuture(java.util.function.Supplier< reactor.core.publisher.Mono.<T>fromRunnable reactor.core.publisher.Mono.<T>fromSupplier(java.util.function.Supplier< reactor.core.publisher.Mono.<T>ignoreElements reactor.core.publisher.Mono.<T>just reactor.core.publisher.Mono.<T>justOrEmpty reactor.core.publisher.Mono.<T>justOrEmpty(java.util.Optional< reactor.core.publisher.Mono.<T>never reactor.core.publisher.Mono.<T>onAssembly reactor.core.publisher.Mono.<T>sequenceEqual(org.reactivestreams.Publisher< reactor.core.publisher.Mono.<T>sequenceEqual(org.reactivestreams.Publisher< reactor.core.publisher.Mono.<T>sequenceEqual(org.reactivestreams.Publisher< reactor.core.publisher.Mono.<U>delaySubscription reactor.core.publisher.Mono.<U>ofType reactor.core.publisher.Mono.<U>timeout reactor.core.publisher.Mono.<U>timeout(org.reactivestreams.Publisher<U>,reactor.core.publisher.Mono< reactor.core.publisher.Mono.<V>then reactor.core.publisher.Mono.<V>thenMany reactor.core.publisher.Mono.<V>thenReturn reactor.core.publisher.Mono.<V>transform(java.util.function.Function< reactor.core.publisher.Mono.<V>transformDeferred(java.util.function.Function< reactor.core.publisher.Mono.<V>transformDeferredContextual(java.util.function.BiFunction< reactor.core.publisher.Mono.<X>dematerialize reactor.core.publisher.Mono.and(org.reactivestreams.Publisher< reactor.core.publisher.Mono.block reactor.core.publisher.Mono.block reactor.core.publisher.Mono.blockOptional reactor.core.publisher.Mono.blockOptional reactor.core.publisher.Mono.cache reactor.core.publisher.Mono.cache reactor.core.publisher.Mono.cache reactor.core.publisher.Mono.cache(java.util.function.Function< reactor.core.publisher.Mono.cache(java.util.function.Function< reactor.core.publisher.Mono.cacheInvalidateIf(java.util.function.Predicate< reactor.core.publisher.Mono.cacheInvalidateWhen(java.util.function.Function< reactor.core.publisher.Mono.cacheInvalidateWhen(java.util.function.Function< reactor.core.publisher.Mono.cancelOn reactor.core.publisher.Mono.checkpoint reactor.core.publisher.Mono.checkpoint reactor.core.publisher.Mono.checkpoint reactor.core.publisher.Mono.concatWith(org.reactivestreams.Publisher< reactor.core.publisher.Mono.contextWrite reactor.core.publisher.Mono.contextWrite reactor.core.publisher.Mono.defaultIfEmpty reactor.core.publisher.Mono.delay reactor.core.publisher.Mono.delay reactor.core.publisher.Mono.delayElement reactor.core.publisher.Mono.delayElement reactor.core.publisher.Mono.delaySubscription reactor.core.publisher.Mono.delaySubscription reactor.core.publisher.Mono.delayUntil(java.util.function.Function< reactor.core.publisher.Mono.doAfterSuccessOrError(java.util.function.BiConsumer< reactor.core.publisher.Mono.doAfterTerminate reactor.core.publisher.Mono.doFinally reactor.core.publisher.Mono.doFirst reactor.core.publisher.Mono.doOnCancel reactor.core.publisher.Mono.doOnEach(java.util.function.Consumer< reactor.core.publisher.Mono.doOnError(java.util.function.Consumer< reactor.core.publisher.Mono.doOnError(java.util.function.Predicate< reactor.core.publisher.Mono.doOnNext(java.util.function.Consumer< reactor.core.publisher.Mono.doOnRequest reactor.core.publisher.Mono.doOnSubscribe(java.util.function.Consumer< reactor.core.publisher.Mono.doOnSuccess(java.util.function.Consumer< reactor.core.publisher.Mono.doOnSuccessOrError(java.util.function.BiConsumer< reactor.core.publisher.Mono.doOnTerminate reactor.core.publisher.Mono.elapsed reactor.core.publisher.Mono.elapsed reactor.core.publisher.Mono.expand(java.util.function.Function< reactor.core.publisher.Mono.expand(java.util.function.Function< reactor.core.publisher.Mono.expandDeep(java.util.function.Function< reactor.core.publisher.Mono.expandDeep(java.util.function.Function< reactor.core.publisher.Mono.filter(java.util.function.Predicate< reactor.core.publisher.Mono.filterWhen(java.util.function.Function< reactor.core.publisher.Mono.flux reactor.core.publisher.Mono.hasElement reactor.core.publisher.Mono.hide reactor.core.publisher.Mono.ignoreElement reactor.core.publisher.Mono.log reactor.core.publisher.Mono.log reactor.core.publisher.Mono.log reactor.core.publisher.Mono.log reactor.core.publisher.Mono.log reactor.core.publisher.Mono.log reactor.core.publisher.Mono.materialize reactor.core.publisher.Mono.mergeWith(org.reactivestreams.Publisher< reactor.core.publisher.Mono.metrics reactor.core.publisher.Mono.name reactor.core.publisher.Mono.onErrorComplete reactor.core.publisher.Mono.onErrorComplete(java.lang.Class< reactor.core.publisher.Mono.onErrorComplete(java.util.function.Predicate< reactor.core.publisher.Mono.onErrorContinue reactor.core.publisher.Mono.onErrorMap(java.util.function.Function< reactor.core.publisher.Mono.onErrorMap(java.util.function.Predicate< reactor.core.publisher.Mono.onErrorResume(java.util.function.Function< reactor.core.publisher.Mono.onErrorResume(java.util.function.Predicate< reactor.core.publisher.Mono.onErrorReturn reactor.core.publisher.Mono.onErrorReturn(java.util.function.Predicate< reactor.core.publisher.Mono.onErrorStop reactor.core.publisher.Mono.onTerminateDetach reactor.core.publisher.Mono.or(reactor.core.publisher.Mono< reactor.core.publisher.Mono.publishOn reactor.core.publisher.Mono.repeat reactor.core.publisher.Mono.repeat reactor.core.publisher.Mono.repeat reactor.core.publisher.Mono.repeat reactor.core.publisher.Mono.repeatWhen(java.util.function.Function<reactor.core.publisher.Flux<java.lang.Long>, reactor.core.publisher.Mono.repeatWhenEmpty(int,java.util.function.Function<reactor.core.publisher.Flux<java.lang.Long>, reactor.core.publisher.Mono.repeatWhenEmpty(java.util.function.Function<reactor.core.publisher.Flux<java.lang.Long>, reactor.core.publisher.Mono.retry reactor.core.publisher.Mono.retry reactor.core.publisher.Mono.retryWhen reactor.core.publisher.Mono.share reactor.core.publisher.Mono.single reactor.core.publisher.Mono.subscribe reactor.core.publisher.Mono.subscribe(java.util.function.Consumer< reactor.core.publisher.Mono.subscribe(java.util.function.Consumer< reactor.core.publisher.Mono.subscribe(java.util.function.Consumer< reactor.core.publisher.Mono.subscribe(java.util.function.Consumer< reactor.core.publisher.Mono.subscribe(java.util.function.Consumer< reactor.core.publisher.Mono.subscribe(org.reactivestreams.Subscriber< reactor.core.publisher.Mono.subscribe(reactor.core.CoreSubscriber< reactor.core.publisher.Mono.subscribeOn reactor.core.publisher.Mono.subscriberContext reactor.core.publisher.Mono.subscriberContext reactor.core.publisher.Mono.subscriberContext reactor.core.publisher.Mono.switchIfEmpty(reactor.core.publisher.Mono< reactor.core.publisher.Mono.tag reactor.core.publisher.Mono.take reactor.core.publisher.Mono.take reactor.core.publisher.Mono.takeUntilOther(org.reactivestreams.Publisher< reactor.core.publisher.Mono.then reactor.core.publisher.Mono.thenEmpty reactor.core.publisher.Mono.timed reactor.core.publisher.Mono.timed reactor.core.publisher.Mono.timeout reactor.core.publisher.Mono.timeout(java.time.Duration,reactor.core.publisher.Mono< reactor.core.publisher.Mono.timeout(java.time.Duration,reactor.core.publisher.Mono< reactor.core.publisher.Mono.timeout reactor.core.publisher.Mono.timestamp reactor.core.publisher.Mono.timestamp reactor.core.publisher.Mono.toFuture reactor.core.publisher.Mono.toProcessor reactor.core.publisher.Mono.toString reactor.core.publisher.Mono.when(java.lang.Iterable< reactor.core.publisher.Mono.when(org.reactivestreams.Publisher< reactor.core.publisher.Mono.whenDelayError(java.lang.Iterable< reactor.core.publisher.Mono.whenDelayError(org.reactivestreams.Publisher<

Field Details

arguments

protected KernelFunctionArguments arguments

contextVariableTypes

protected final ContextVariableTypes contextVariableTypes

function

protected final KernelFunction<?> function

hooks

protected KernelHooks.UnmodifiableKernelHooks hooks

kernel

protected final Kernel kernel

promptExecutionSettings

protected PromptExecutionSettings promptExecutionSettings

resultType

protected final ContextVariableType<T> resultType

toolCallBehavior

protected ToolCallBehavior toolCallBehavior

Constructor Details

FunctionInvocation

public FunctionInvocation(Kernel kernel, KernelFunction<?> function, ContextVariableType<T> resultType)

Create a new function invocation.

Parameters:

kernel - The kernel to invoke the function on.
function - The function to invoke.
resultType - The type of the result of the function invocation.

FunctionInvocation

public FunctionInvocation(Kernel kernel, KernelFunction<T> function)

Create a new function invocation.

Parameters:

kernel - The kernel to invoke the function on.
function - The function to invoke.

Method Details

withResultType

public FunctionInvocation withResultType(ContextVariableType resultType)

Supply the result type of function invocation.

Parameters:

resultType - The arguments to supply to the function invocation.

Returns:

A new FunctionInvocation for fluent chaining.

withResultType

public FunctionInvocation withResultType(Class resultType)

Supply the result type of function invocation. Uses the global context variable types.

Parameters:

resultType - The arguments to supply to the function invocation.

Returns:

A new FunctionInvocation for fluent chaining.

withResultTypeAutoConversion

public FunctionInvocation withResultTypeAutoConversion(Class resultType)

Supply the result type of function invocation. Also registers a type converter for the given type using `` ContextVariableJacksonConverter.create}.

Parameters:

resultType - The arguments to supply to the function invocation.

Returns:

A new FunctionInvocation for fluent chaining.

addKernelHook

public FunctionInvocation<T> addKernelHook(KernelHook<?> hook)

Add a kernel hook to the function invocation.

Parameters:

hook - The kernel hook to add.

Returns:

this FunctionInvocation for fluent chaining.

addKernelHooks

public FunctionInvocation<T> addKernelHooks(KernelHooks hooks)

Add kernel hooks to the function invocation.

Parameters:

hooks - The kernel hooks to add.

Returns:

this FunctionInvocation for fluent chaining.

subscribe

public void subscribe(CoreSubscriber<? super FunctionResult<T>> coreSubscriber)

This method handles the reactive stream when the KernelFunction is invoked.

Overrides:

FunctionInvocation<T>.subscribe(CoreSubscriber<? super FunctionResult<T>> coreSubscriber)

Parameters:

coreSubscriber - The subscriber to subscribe to the function invocation.

withArguments

public FunctionInvocation<T> withArguments(KernelFunctionArguments arguments)

Supply arguments to the function invocation.

Parameters:

arguments - The arguments to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

withInvocationContext

public FunctionInvocation<T> withInvocationContext(InvocationContext invocationContext)

Use an invocation context variable to supply the types, tool call behavior, prompt execution settings, and kernel hooks to the function invocation.

Parameters:

invocationContext - The invocation context to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

withPromptExecutionSettings

public FunctionInvocation<T> withPromptExecutionSettings(PromptExecutionSettings promptExecutionSettings)

Supply prompt execution settings to the function invocation.

Parameters:

promptExecutionSettings - The prompt execution settings to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

withToolCallBehavior

public FunctionInvocation<T> withToolCallBehavior(ToolCallBehavior toolCallBehavior)

Supply tool call behavior to the function invocation.

Parameters:

toolCallBehavior - The tool call behavior to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

withTypeConverter

public FunctionInvocation<T> withTypeConverter(ContextVariableTypeConverter<?> typeConverter)

Supply a type converter to the function invocation.

Parameters:

typeConverter - The type converter to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

withTypes

public FunctionInvocation<T> withTypes(ContextVariableTypes contextVariableTypes)

Supply a context variable type to the function invocation.

Parameters:

contextVariableTypes - The context variable types to supply to the function invocation.

Returns:

this FunctionInvocation for fluent chaining.

Applies to