chains

package
v0.1.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: MIT Imports: 24 Imported by: 37

Documentation

Overview

Package chains contains a standard interface for chains, a number of built-in chains and functions for calling and running chains.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound = errors.New("result not found")
	ErrConvert  = errors.New("cannot convert to string")
)
View Source
var (
	// ErrInvalidInputValues is returned if the input values to a chain is invalid.
	ErrInvalidInputValues = errors.New("invalid input values")
	// ErrMissingInputValues is returned when some expected input values keys to
	// a chain is missing.
	ErrMissingInputValues = errors.New("missing key in input values")
	// ErrInputValuesWrongType is returned if an input value to a chain is of
	// wrong type.
	ErrInputValuesWrongType = errors.New("input key is of wrong type")
	// ErrMissingMemoryKeyValues is returned when some expected input values keys to
	// a chain is missing.
	ErrMissingMemoryKeyValues = errors.New("missing memory key in input values")
	// ErrMemoryValuesWrongType is returned if the memory value to a chain is of
	// wrong type.
	ErrMemoryValuesWrongType = errors.New("memory key is of wrong type")
	// ErrInvalidOutputValues is returned when expected output keys to a chain does
	// not match the actual keys in the return output values map.
	ErrInvalidOutputValues = errors.New("missing key in output values")

	// ErrMultipleInputsInRun is returned in the run function if the chain expects
	// more then one input values.
	ErrMultipleInputsInRun = errors.New("run not supported in chain with more then one expected input")
	// ErrMultipleOutputsInRun is returned in the run function if the chain expects
	// more then one output values.
	ErrMultipleOutputsInRun = errors.New("run not supported in chain with more then one expected output")
	// ErrWrongOutputTypeInRun is returned in the run function if the chain returns
	// a value that is not a string.
	ErrWrongOutputTypeInRun = errors.New("run not supported in chain that returns value that is not string")

	// ErrOutputNotStringInPredict is returned if a chain does not return a string
	// in the predict function.
	ErrOutputNotStringInPredict = errors.New("predict is not supported with a chain that does not return a string")
	// ErrMultipleOutputsInPredict is returned if a chain has multiple return values
	// in predict.
	ErrMultipleOutputsInPredict = errors.New("predict is not supported with a chain that returns multiple values")
	// ErrChainInitialization is returned if a chain is not initialized appropriately.
	ErrChainInitialization = errors.New("error initializing chain")
)
View Source
var (
	ErrInvalidInputNumberInSimpleSeq  = errors.New("single input expected for chains supplied to SimpleSequentialChain")
	ErrInvalidOutputNumberInSimpleSeq = errors.New("single output expected for chains supplied to SimpleSequentialChain")
)

Functions

func Apply

func Apply(ctx context.Context, c Chain, inputValues []map[string]any, maxWorkers int, options ...ChainCallOption) ([]map[string]any, error)

Apply executes the chain for each of the inputs asynchronously.

func Call

func Call(ctx context.Context, c Chain, inputValues map[string]any, options ...ChainCallOption) (map[string]any, error)

Call is the standard function used for executing chains.

func Predict

func Predict(ctx context.Context, c Chain, inputValues map[string]any, options ...ChainCallOption) (string, error)

Predict can be used to execute a chain if the chain only expects one string output.

func Run

func Run(ctx context.Context, c Chain, input any, options ...ChainCallOption) (string, error)

Run can be used to execute a chain if the chain only expects one input and one string output.

Types

type APIChain

type APIChain struct {
	RequestChain *LLMChain
	AnswerChain  *LLMChain
	Request      HTTPRequest
}

func NewAPIChain

func NewAPIChain(llm llms.Model, request HTTPRequest) APIChain

NewAPIChain creates a new APIChain object.

It takes a language model (llm) and an HTTPRequest (request) as parameters. It returns an APIChain object.

func (APIChain) Call

func (a APIChain) Call(ctx context.Context, values map[string]any, opts ...ChainCallOption) (map[string]any, error)

Call executes the APIChain and returns the result.

It takes a context.Context object, a map[string]any values, and optional ChainCallOption values as input parameters. It returns a map[string]any and an error as output.

func (APIChain) GetInputKeys

func (a APIChain) GetInputKeys() []string

GetInputKeys returns the input keys of the APIChain.

No parameters. Returns a slice of strings, which contains the output keys.

func (APIChain) GetMemory

func (a APIChain) GetMemory() schema.Memory

GetMemory returns the memory of the APIChain.

This function does not take any parameters. It returns a schema.Memory object.

func (APIChain) GetOutputKeys

func (a APIChain) GetOutputKeys() []string

GetOutputKeys returns the output keys of the APIChain.

It does not take any parameters. It returns a slice of strings, which contains the output keys.

type Chain

type Chain interface {
	// Call runs the logic of the chain and returns the output. This method should
	// not be called directly. Use rather the Call, Run or Predict functions that
	// handles the memory and other aspects of the chain.
	Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any, error)
	// GetMemory gets the memory of the chain.
	GetMemory() schema.Memory
	// GetInputKeys returns the input keys the chain expects.
	GetInputKeys() []string
	// GetOutputKeys returns the output keys the chain returns.
	GetOutputKeys() []string
}

Chain is the interface all chains must implement.

type ChainCallOption

type ChainCallOption func(*chainCallOption)

ChainCallOption is a function that can be used to modify the behavior of the Call function.

func WithCallback added in v0.1.2

func WithCallback(callbackHandler callbacks.Handler) ChainCallOption

WithCallback allows setting a custom Callback Handler.

func WithMaxLength

func WithMaxLength(maxLength int) ChainCallOption

WithMaxLength will add an option to set the maximum length of the generated text for LLM.Call.

func WithMaxTokens

func WithMaxTokens(maxTokens int) ChainCallOption

WithMaxTokens is an option for LLM.Call.

func WithMinLength

func WithMinLength(minLength int) ChainCallOption

WithMinLength will add an option to set the minimum length of the generated text for LLM.Call.

func WithModel

func WithModel(model string) ChainCallOption

WithModel is an option for LLM.Call.

func WithRepetitionPenalty

func WithRepetitionPenalty(repetitionPenalty float64) ChainCallOption

WithRepetitionPenalty will add an option to set the repetition penalty for sampling.

func WithSeed

func WithSeed(seed int) ChainCallOption

WithSeed will add an option to use deterministic sampling for LLM.Call.

func WithStopWords

func WithStopWords(stopWords []string) ChainCallOption

WithStopWords is an option for setting the stop words for LLM.Call.

func WithStreamingFunc

func WithStreamingFunc(streamingFunc func(ctx context.Context, chunk []byte) error) ChainCallOption

WithStreamingFunc is an option for LLM.Call that allows streaming responses.

func WithTemperature

func WithTemperature(temperature float64) ChainCallOption

WithTemperature is an option for LLM.Call.

func WithTopK

func WithTopK(topK int) ChainCallOption

WithTopK will add an option to use top-k sampling for LLM.Call.

func WithTopP

func WithTopP(topP float64) ChainCallOption

WithTopP will add an option to use top-p sampling for LLM.Call.

type ConditionalPromptSelector

type ConditionalPromptSelector struct {
	DefaultPrompt prompts.PromptTemplate
	Conditionals  []struct {
		Condition func(llms.Model) bool
		Prompt    prompts.PromptTemplate
	}
}

ConditionalPromptSelector is a formatter selector that selects a prompt depending on conditionals.

func (ConditionalPromptSelector) GetPrompt

type Constitutional

type Constitutional struct {
	// contains filtered or unexported fields
}

func NewConstitutional

func NewConstitutional(llm llms.Model, chain LLMChain, constitutionalPrinciples []ConstitutionalPrinciple,
	options map[string]*prompts.FewShotPrompt,
) *Constitutional

NewConstitutional creates a new Constitutional chain.

func (*Constitutional) Call

func (c *Constitutional) Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any,
	error,
)

Call handles the inner logic of the Constitutional chain.

func (*Constitutional) GetInputKeys

func (c *Constitutional) GetInputKeys() []string

func (*Constitutional) GetMemory

func (c *Constitutional) GetMemory() schema.Memory

func (*Constitutional) GetOutputKeys

func (c *Constitutional) GetOutputKeys() []string

type ConstitutionalExample

type ConstitutionalExample struct {
	// contains filtered or unexported fields
}

type ConstitutionalPrinciple

type ConstitutionalPrinciple struct {
	// contains filtered or unexported fields
}

func NewConstitutionalPrinciple

func NewConstitutionalPrinciple(critique, revision string, names ...string) ConstitutionalPrinciple

NewConstitutionalPrinciple creates a new ConstitutionalPrinciple.

type ConversationalRetrievalQA

type ConversationalRetrievalQA struct {
	// Retriever used to retrieve the relevant documents.
	Retriever schema.Retriever

	// Memory that remembers previous conversational back and forths directly.
	Memory schema.Memory

	// CombineDocumentsChain The chain used to combine any retrieved documents.
	CombineDocumentsChain Chain

	// CondenseQuestionChain The chain the documents and query is given to.
	// The chain used to generate a new question for the sake of retrieval.
	// This chain will take in the current question (with variable `question`)
	// and any chat history (with variable `chat_history`) and will produce
	// a new standalone question to be used later on.
	CondenseQuestionChain Chain

	// OutputKey The output key to return the final answer of this chain in.
	OutputKey string

	// RephraseQuestion Whether to pass the new generated question to the CombineDocumentsChain.
	// If true, will pass the new generated question along.
	// If false, will only use the new generated question for retrieval and pass the
	// original question along to the CombineDocumentsChain.
	RephraseQuestion bool

	// ReturnGeneratedQuestion Return the generated question as part of the final result.
	ReturnGeneratedQuestion bool

	// InputKey The input key to get the query from, by default "query".
	InputKey string

	// ReturnSourceDocuments Return the retrieved source documents as part of the final result.
	ReturnSourceDocuments bool
}

ConversationalRetrievalQA chain builds on RetrievalQA to provide a chat history component.

func NewConversationalRetrievalQA

func NewConversationalRetrievalQA(
	combineDocumentsChain Chain,
	condenseQuestionChain Chain,
	retriever schema.Retriever,
	memory schema.Memory,
) ConversationalRetrievalQA

NewConversationalRetrievalQA creates a new NewConversationalRetrievalQA.

func NewConversationalRetrievalQAFromLLM

func NewConversationalRetrievalQAFromLLM(
	llm llms.Model,
	retriever schema.Retriever,
	memory schema.Memory,
) ConversationalRetrievalQA

func (ConversationalRetrievalQA) Call

func (c ConversationalRetrievalQA) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call gets question, and relevant documents by question from the retriever and gives them to the combine documents chain.

func (ConversationalRetrievalQA) GetInputKeys

func (c ConversationalRetrievalQA) GetInputKeys() []string

func (ConversationalRetrievalQA) GetMemory

func (c ConversationalRetrievalQA) GetMemory() schema.Memory

func (ConversationalRetrievalQA) GetOutputKeys

func (c ConversationalRetrievalQA) GetOutputKeys() []string

type HTTPRequest

type HTTPRequest interface {
	Do(req *http.Request) (*http.Response, error)
}

HTTPRequest http requester interface.

type LLMChain

type LLMChain struct {
	Prompt           prompts.FormatPrompter
	LLM              llms.Model
	Memory           schema.Memory
	CallbacksHandler callbacks.Handler
	OutputParser     schema.OutputParser[any]

	OutputKey string
}

func LoadCondenseQuestionGenerator

func LoadCondenseQuestionGenerator(llm llms.Model) *LLMChain

LoadCondenseQuestionGenerator chain is used to generate a new question for the sake of retrieval.

func NewConversation

func NewConversation(llm llms.Model, memory schema.Memory) LLMChain

func NewLLMChain

func NewLLMChain(llm llms.Model, prompt prompts.FormatPrompter, opts ...ChainCallOption) *LLMChain

NewLLMChain creates a new LLMChain with an LLM and a prompt.

func (LLMChain) Call

func (c LLMChain) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call formats the prompts with the input values, generates using the llm, and parses the output from the llm with the output parser. This function should not be called directly, use rather the Call or Run function if the prompt only requires one input value.

func (LLMChain) GetCallbackHandler

func (c LLMChain) GetCallbackHandler() callbacks.Handler

func (LLMChain) GetInputKeys

func (c LLMChain) GetInputKeys() []string

GetInputKeys returns the expected input keys.

func (LLMChain) GetMemory

func (c LLMChain) GetMemory() schema.Memory

GetMemory returns the memory.

func (LLMChain) GetOutputKeys

func (c LLMChain) GetOutputKeys() []string

GetOutputKeys returns the output keys the chain will return.

type LLMMathChain

type LLMMathChain struct {
	LLMChain *LLMChain
}

LLMMathChain is a chain used for evaluating math expressions.

func NewLLMMathChain

func NewLLMMathChain(llm llms.Model) LLMMathChain

func (LLMMathChain) Call

func (c LLMMathChain) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call runs the logic of the LLM Math chain and returns the output.

func (LLMMathChain) GetInputKeys

func (c LLMMathChain) GetInputKeys() []string

func (LLMMathChain) GetMemory

func (c LLMMathChain) GetMemory() schema.Memory

func (LLMMathChain) GetOutputKeys

func (c LLMMathChain) GetOutputKeys() []string

type MapReduceDocuments

type MapReduceDocuments struct {
	// The chain to apply to each documents individually.
	LLMChain *LLMChain

	// The chain to combine the mapped results of the LLMChain.
	ReduceChain Chain

	// The memory of the chain.
	Memory schema.Memory

	// The variable name of where to put the results from the LLMChain into the collapse chain.
	// Only needed if the reduce chain has more then one expected input.
	ReduceDocumentVariableName string

	// The input variable where the documents should be placed int the LLMChain. Only needed if
	// the reduce chain has more then one expected input.
	LLMChainInputVariableName string

	// MaxNumberOfConcurrent represents the max number of concurrent calls done simultaneously to
	// the llm chain.
	MaxNumberOfConcurrent int

	// The input key where the documents to be combined should be.
	InputKey string

	// Whether to add the intermediate steps to the output.
	ReturnIntermediateSteps bool
}

MapReduceDocuments is a chain that combines documents by mapping a chain over them, then combining the results using another chain.

func LoadMapReduceQA

func LoadMapReduceQA(llm llms.Model) MapReduceDocuments

LoadMapReduceQA loads a refine documents chain for question answering. Inputs are "question" and "input_documents".

func LoadMapReduceSummarization

func LoadMapReduceSummarization(llm llms.Model) MapReduceDocuments

LoadMapReduceSummarization loads a map reduce documents chain for summarization of documents.

func NewMapReduceDocuments

func NewMapReduceDocuments(llmChain *LLMChain, reduceChain Chain) MapReduceDocuments

NewMapReduceDocuments creates a new map reduce documents chain with some default values.

func (MapReduceDocuments) Call

func (c MapReduceDocuments) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call handles the inner logic of the MapReduceDocuments documents chain.

func (MapReduceDocuments) GetInputKeys

func (c MapReduceDocuments) GetInputKeys() []string

func (MapReduceDocuments) GetMemory

func (c MapReduceDocuments) GetMemory() schema.Memory

func (MapReduceDocuments) GetOutputKeys

func (c MapReduceDocuments) GetOutputKeys() []string

type MapRerankDocuments

type MapRerankDocuments struct {
	// Chain used to rerank the documents.
	LLMChain *LLMChain

	// Number of workers to concurrently run apply on documents.
	MaxConcurrentWorkers int

	// The input variable where the documents should be placed int the LLMChain.
	LLMChainInputVariableName string

	// The name of the document variable in the LLMChain.
	DocumentVariableName string

	// Key used to access document inputs.
	InputKey string

	// Key used to access map results.
	OutputKey string

	// Key used for comparison to sort documents.
	RankKey string

	// Key used to return the answer.
	AnswerKey string

	// When true, the intermediate steps of the map rerank are returned.
	ReturnIntermediateSteps bool
}

func LoadMapRerankQA

func LoadMapRerankQA(llm llms.Model) MapRerankDocuments

LoadMapRerankQA loads a map rerank documents chain for question answering. Inputs are "question" and "input_documents".

func NewMapRerankDocuments

func NewMapRerankDocuments(mapRerankLLMChain *LLMChain) *MapRerankDocuments

NewMapRerankDocuments creates a new map rerank documents chain.

func (MapRerankDocuments) Call

func (c MapRerankDocuments) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call handles the inner logic of the MapRerankDocuments chain.

func (MapRerankDocuments) GetInputKeys

func (c MapRerankDocuments) GetInputKeys() []string

GetInputKeys returns the input keys for the MapRerankDocuments chain.

func (MapRerankDocuments) GetMemory

func (c MapRerankDocuments) GetMemory() schema.Memory

GetMemory returns the memory for the MapRerankDocuments chain.

func (MapRerankDocuments) GetOutputKeys

func (c MapRerankDocuments) GetOutputKeys() []string

GetOutputKeys returns the output keys for the MapRerankDocuments chain.

type Pair

type Pair struct {
	// contains filtered or unexported fields
}

type PromptSelector

type PromptSelector interface {
	GetPrompt(llm llms.Model) prompts.PromptTemplate
}

PromptSelector is the interface for selecting a formatter depending on the LLM given.

type RefineDocuments

type RefineDocuments struct {
	// Chain used to construct the first text using the first document.
	LLMChain *LLMChain

	// Chain used to refine the first text using the additional documents.
	RefineLLMChain *LLMChain

	// Prompt to format the documents. Documents are given in the variable
	// with the name "page_content". All metadata from the documents are
	// also given to the prompt template.
	DocumentPrompt prompts.PromptTemplate

	InputKey             string
	OutputKey            string
	DocumentVariableName string
	InitialResponseName  string
}

RefineDocuments is a chain used for combining and processing unstructured text data. The chain iterates over the documents one by one to update a running answer, at each turn using the previous version of the answer and the next document as context.

func LoadRefineQA

func LoadRefineQA(llm llms.Model) RefineDocuments

LoadRefineQA loads a refine documents chain for question answering. Inputs are "question" and "input_documents".

func LoadRefineSummarization

func LoadRefineSummarization(llm llms.Model) RefineDocuments

LoadRefineSummarization loads a refine documents chain for summarization of documents.

func NewRefineDocuments

func NewRefineDocuments(initialLLMChain, refineLLMChain *LLMChain) RefineDocuments

NewRefineDocuments creates a new refine documents chain from the llm chain used to construct the initial text and the llm used to refine the text.

func (RefineDocuments) Call

func (c RefineDocuments) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call handles the inner logic of the refine documents chain.

func (RefineDocuments) GetInputKeys

func (c RefineDocuments) GetInputKeys() []string

func (RefineDocuments) GetMemory

func (c RefineDocuments) GetMemory() schema.Memory

func (RefineDocuments) GetOutputKeys

func (c RefineDocuments) GetOutputKeys() []string

type RetrievalQA

type RetrievalQA struct {
	// Retriever used to retrieve the relevant documents.
	Retriever schema.Retriever

	// The chain the documents and query is given to.
	CombineDocumentsChain Chain

	// The input key to get the query from, by default "query".
	InputKey string

	// If the chain should return the documents used by the combine
	// documents chain in the "source_documents" key.
	ReturnSourceDocuments bool
}

RetrievalQA is a chain used for question-answering against a retriever. First the chain gets documents from the retriever, then the documents and the query is used as input to another chain. Typically, that chain combines the documents into a prompt that is sent to an LLM.

func NewRetrievalQA

func NewRetrievalQA(combineDocumentsChain Chain, retriever schema.Retriever) RetrievalQA

NewRetrievalQA creates a new RetrievalQA from a retriever and a chain for combining documents. The chain for combining documents is expected to have the expected input values for the "question" and "input_documents" key.

func NewRetrievalQAFromLLM

func NewRetrievalQAFromLLM(llm llms.Model, retriever schema.Retriever) RetrievalQA

NewRetrievalQAFromLLM loads a question answering combine documents chain from the llm and creates a new retrievalQA chain.

func (RetrievalQA) Call

func (c RetrievalQA) Call(ctx context.Context, values map[string]any, options ...ChainCallOption) (map[string]any, error)

Call gets relevant documents from the retriever and gives them to the combine documents chain.

func (RetrievalQA) GetInputKeys

func (c RetrievalQA) GetInputKeys() []string

func (RetrievalQA) GetMemory

func (c RetrievalQA) GetMemory() schema.Memory

func (RetrievalQA) GetOutputKeys

func (c RetrievalQA) GetOutputKeys() []string

type SQLDatabaseChain

type SQLDatabaseChain struct {
	LLMChain  *LLMChain
	TopK      int
	Database  *sqldatabase.SQLDatabase
	OutputKey string
}

SQLDatabaseChain is a chain used for interacting with SQL Database.

func NewSQLDatabaseChain

func NewSQLDatabaseChain(llm llms.Model, topK int, database *sqldatabase.SQLDatabase) *SQLDatabaseChain

NewSQLDatabaseChain creates a new SQLDatabaseChain. The topK is the max number of results to return.

func (SQLDatabaseChain) Call

func (s SQLDatabaseChain) Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any, error)

Call calls the chain. Inputs:

"query" : key with the query to run.
"table_names_to_use" (optionally): a slice string of the only table names
	to use(others will be ignored).

Outputs

"result" : with the result of the query.

func (SQLDatabaseChain) GetInputKeys

func (s SQLDatabaseChain) GetInputKeys() []string

func (SQLDatabaseChain) GetMemory

func (s SQLDatabaseChain) GetMemory() schema.Memory

func (SQLDatabaseChain) GetOutputKeys

func (s SQLDatabaseChain) GetOutputKeys() []string

type SequentialChain

type SequentialChain struct {
	// contains filtered or unexported fields
}

SequentialChain is a chain that runs multiple chains in sequence, where the output of one chain is the input of the next.

func NewSequentialChain

func NewSequentialChain(chains []Chain, inputKeys []string, outputKeys []string, opts ...SequentialChainOption) (*SequentialChain, error)

func (*SequentialChain) Call

func (c *SequentialChain) Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any, error)

Call runs the logic of the chains and returns the outputs. This method should not be called directly. Use rather the Call, Run or Predict functions that handles the memory and other aspects of the chain.

func (*SequentialChain) GetInputKeys

func (c *SequentialChain) GetInputKeys() []string

GetInputKeys returns the input keys the chain expects.

func (*SequentialChain) GetMemory

func (c *SequentialChain) GetMemory() schema.Memory

GetMemory gets the memory of the chain.

func (*SequentialChain) GetOutputKeys

func (c *SequentialChain) GetOutputKeys() []string

GetOutputKeys returns the output keys the chain returns.

type SequentialChainOption

type SequentialChainOption func(*SequentialChain)

func WithSeqChainMemory

func WithSeqChainMemory(memory schema.Memory) SequentialChainOption

type SimpleSequentialChain

type SimpleSequentialChain struct {
	// contains filtered or unexported fields
}

SimpleSequentialChain is a chain that runs multiple chains in sequence, where the output of one chain is the input of the next. All the chains must have a single input and a single output.

func NewSimpleSequentialChain

func NewSimpleSequentialChain(chains []Chain) (*SimpleSequentialChain, error)

func (*SimpleSequentialChain) Call

func (c *SimpleSequentialChain) Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any, error)

Call runs the logic of the chains and returns the output. This method should not be called directly. Use the Run function that handles the memory and other aspects of the chain.

func (*SimpleSequentialChain) GetInputKeys

func (c *SimpleSequentialChain) GetInputKeys() []string

GetInputKeys returns the input keys of the first chain.

func (*SimpleSequentialChain) GetMemory

func (c *SimpleSequentialChain) GetMemory() schema.Memory

GetMemory gets the memory of the chain.

func (*SimpleSequentialChain) GetOutputKeys

func (c *SimpleSequentialChain) GetOutputKeys() []string

GetOutputKeys returns the output keys of the last chain.

type StuffDocuments

type StuffDocuments struct {
	// LLMChain is the LLMChain called after formatting the documents.
	LLMChain *LLMChain

	// Input key is the input key the StuffDocuments chain expects the
	//  documents to be in.
	InputKey string

	// DocumentVariableName is the variable name used in the llm_chain to put
	// the documents in.
	DocumentVariableName string

	// Separator is the string used to join the documents.
	Separator string
}

StuffDocuments is a chain that combines documents with a separator and uses the stuffed documents in an LLMChain. The input values to the llm chain contains all input values given to this chain, and the stuffed document as a string in the key specified by the "DocumentVariableName" field that is by default set to "context".

func LoadStuffQA

func LoadStuffQA(llm llms.Model) StuffDocuments

LoadStuffQA loads a StuffDocuments chain with default prompts for the llm chain.

func LoadStuffSummarization

func LoadStuffSummarization(llm llms.Model) StuffDocuments

LoadStuffSummarization loads a summarization chain that stuffs all documents given into the prompt.

func NewStuffDocuments

func NewStuffDocuments(llmChain *LLMChain) StuffDocuments

NewStuffDocuments creates a new stuff documents chain with an LLM chain used after formatting the documents.

func (StuffDocuments) Call

func (c StuffDocuments) Call(
	ctx context.Context, values map[string]any, options ...ChainCallOption,
) (map[string]any, error)

Call handles the inner logic of the StuffDocuments chain.

func (StuffDocuments) GetInputKeys

func (c StuffDocuments) GetInputKeys() []string

GetInputKeys returns the expected input keys, by default "input_documents".

func (StuffDocuments) GetMemory

func (c StuffDocuments) GetMemory() schema.Memory

GetMemory returns a simple memory.

func (StuffDocuments) GetOutputKeys

func (c StuffDocuments) GetOutputKeys() []string

GetOutputKeys returns the output keys the chain will return.

type Transform

type Transform struct {
	Memory     schema.Memory
	Transform  TransformFunc
	InputKeys  []string
	OutputKeys []string
}

Transform is a chain that runs an arbitrary function.

func NewTransform

func NewTransform(f TransformFunc, inputVariables []string, outputVariables []string) Transform

NewTransform creates a new transform chain with the function to use, the expected input and output variables.

func (Transform) Call

func (c Transform) Call(ctx context.Context, inputs map[string]any, options ...ChainCallOption) (map[string]any, error)

Call returns the output of the transform function.

func (Transform) GetInputKeys

func (c Transform) GetInputKeys() []string

GetInputKeys returns the input keys the chain expects.

func (Transform) GetMemory

func (c Transform) GetMemory() schema.Memory

GetMemory gets the memory of the chain.

func (Transform) GetOutputKeys

func (c Transform) GetOutputKeys() []string

GetOutputKeys returns the output keys the chain returns.

type TransformFunc

type TransformFunc func(context.Context, map[string]any, ...ChainCallOption) (map[string]any, error)

TransformFunc is the function type that the transform chain uses.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL