BaseChain<MemoryType extends BaseMemory> class abstract

Base class for creating structured sequences of calls to components.

Chains should be used to encode a sequence of calls to components like models, document retrievers, other chains, etc., and provide a simple interface to this sequence.

The BaseChain interface makes it easy to create apps that are:

  • Stateful: add Memory to any Chain to give it state.
  • Observable: pass Callbacks to a Chain to execute additional functionality, like logging, outside the main sequence of component calls.
  • Composable: the Chain API is flexible enough that it is easy to combine Chains with other components, including other Chains.

The main methods exposed by chains are:

  • call Chains are callable. The call method is the primary way to execute a Chain. This takes inputs as a dictionary and returns a dictionary output.
  • run A convenience method that takes inputs and returns the output as a string. This method can only be used if the Chain has a single string output.
Inheritance
Implementers

Constructors

BaseChain({MemoryType? memory, ChainOptions? defaultOptions})
Base class for creating structured sequences of calls to components.
const

Properties

chainType → String
Return the string type key uniquely identifying this class of chain.
no setter
defaultOptions → ChainOptions
The default options to use when invoking the Runnable.
finalinherited
hashCode → int
The hash code for this object.
no setterinherited
inputKeys → Set<String>
Input keys for this chain.
no setter
memory → MemoryType?
Memory to use for this chain.
final
outputKeys → Set<String>
Output keys for this chain.
no setter
runOutputKey → String
Output key from where the run method needs to take the return value.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

apply(List<ChainValues> inputs) → Future<List<ChainValues>>
Call the chain on all inputs in the list.
batch(List<ChainValues> inputs, {List<ChainOptions>? options}) → Future<List<ChainValues>>
Batches the invocation of the Runnable on the given inputs.
inherited
bind(ChainOptions options) → RunnableBinding<ChainValues, ChainOptions, ChainValues>
Binds the Runnable to the given options.
inherited
call(dynamic input, {bool returnOnlyOutputs = false}) → Future<ChainValues>
Runs the core logic of this chain with the given values. If memory is not null, it will be used to load and save values.
callInternal(ChainValues inputs) → Future<ChainValues>
Call method to be implemented by subclasses (called by call). This is where the core logic of the chain should be implemented.
close() → void
Cleans up any resources associated with it the Runnable.
inherited
getCompatibleOptions(RunnableOptions? options) → ChainOptions?
Returns the given options if they are compatible with the Runnable, otherwise returns null.
inherited
invoke(ChainValues input, {ChainOptions? options}) → Future<ChainValues>
Runs the core logic of this chain with 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<ChainValues, NewCallOptions, NewRunOutput> next) → RunnableSequence<ChainValues, NewRunOutput>
Pipes the output of this Runnable into another Runnable using a RunnableSequence.
inherited
run(dynamic input) → Future<String>
Convenience method for executing chain when there's a single string output.
stream(ChainValues input, {ChainOptions? options}) → Stream<ChainValues>
Streams the output of invoking the Runnable on the given input.
inherited
streamFromInputStream(Stream<ChainValues> inputStream, {ChainOptions? options}) → Stream<ChainValues>
Streams the output of invoking the Runnable on the given inputStream.
inherited
toString() → String
A string representation of this object.
inherited
withFallbacks(List<Runnable<ChainValues, RunnableOptions, ChainValues>> fallbacks) → RunnableWithFallback<ChainValues, ChainValues>
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<ChainValues, ChainValues>
Adds retry logic to an existing runnable.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Constants

defaultInputKey → const String
Default input key for the input of the chain.
defaultOutputKey → const String
Default output key for the output of the chain.