Share via


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 resultType

toolCallBehavior

protected ToolCallBehavior toolCallBehavior

Constructor Details

FunctionInvocation

public FunctionInvocation(Kernel kernel, KernelFunction function, ContextVariableType 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 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 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 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> 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 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 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 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 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 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 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