RunnableRouter<RunInput extends Object, RunOutput extends Object> class

A RunnableRouter takes the input it receives and routes it to the runnable returned by the router function.

You can create a RunnableRouter using the Runnable.fromRouter static method.

When you call invoke on a RunnableRouter, it will invoke the router function, passing the input to it. Then, the returned runnable will be invoked with the input.

Example:

final router = Runnable.fromRouter((Map<String, dynamic> input, _) {
  return switch(input['topic'] as String) {
    'langchain' => langchainChain,
    'anthropic' => anthropicChain,
    _ => generalChain,
  };
});

final fullChain = Runnable.fromMap({
      'topic': classificationChain,
      'question': Runnable.getItemFromMap('question'),
    }).pipe(router);

final res2 = await fullChain.invoke({
  'question': 'how do I use Anthropic?',
});
print(res2);
// As Dario Amodei told me, using Anthropic is a straightforward process that...
Inheritance
Available extensions

Constructors

RunnableRouter(FutureOr<Runnable<RunInput, RunnableOptions, RunOutput>> router(RunInput input, RunnableOptions? options))
A RunnableRouter takes the input it receives and routes it to the runnable returned by the router function.
const

Properties

defaultOptions RunnableOptions
The default options to use when invoking the Runnable.
finalinherited
hashCode int
The hash code for this object.
no setterinherited
router FutureOr<Runnable<RunInput, RunnableOptions, RunOutput>> Function(RunInput input, RunnableOptions? options)
The function that will be called to determine the runnable to use.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

batch(List<RunInput> inputs, {List<RunnableOptions>? options}) Future<List<RunOutput>>
Batches the invocation of the Runnable on the given inputs.
inherited
bind(RunnableOptions options) RunnableBinding<RunInput, RunnableOptions, RunOutput>
Binds the Runnable to the given options.
inherited
close() → void
Cleans up any resources associated with it the Runnable.
inherited
getCompatibleOptions(RunnableOptions? options) RunnableOptions?
Returns the given options if they are compatible with the Runnable, otherwise returns null.
inherited
invoke(RunInput input, {RunnableOptions? options}) Future<RunOutput>
Invokes the Runnable on the given input.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pipe<NewRunOutput extends Object?, NewCallOptions extends RunnableOptions>(Runnable<RunOutput, NewCallOptions, NewRunOutput> next) RunnableSequence<RunInput, NewRunOutput>
Pipes the output of this Runnable into another Runnable using a RunnableSequence.
inherited
stream(RunInput input, {RunnableOptions? options}) Stream<RunOutput>
Streams the output of invoking the Runnable on the given input.
override
streamFromInputStream(Stream<RunInput> inputStream, {RunnableOptions? options}) Stream<RunOutput>
Streams the output of invoking the Runnable on the given inputStream.
override
toString() String
A string representation of this object.
inherited
withFallbacks(List<Runnable<RunInput, RunnableOptions, RunOutput>> fallbacks) RunnableWithFallback<RunInput, RunOutput>
Adds fallback runnables to be invoked if the primary runnable fails.
inherited
withRetry({int maxRetries = 3, FutureOr<bool> retryIf(Object e)?, List<Duration?>? delayDurations, bool addJitter = false}) RunnableRetry<RunInput, RunOutput>
Adds retry logic to an existing runnable.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited
operator |(Runnable<RunOutput, RunnableOptions, NewRunOutput> next) RunnableSequence<RunInput, NewRunOutput>

Available on Runnable<RunInput, CallOptions, RunOutput>, provided by the RunnableX extension

Pipes the output of this Runnable into another Runnable.