Documentation
¶
Overview ¶
Package memory provides an interface for managing conversational data and a variety of implementations for storing and retrieving that data.
The main components of this package are: - ChatMessageHistory: a struct that stores chat messages. - ConversationBuffer: a simple form of memory that remembers previous conversational back and forths directly.
Index ¶
- Variables
- type ChatMessageHistory
- func (h *ChatMessageHistory) AddAIMessage(_ context.Context, text string) error
- func (h *ChatMessageHistory) AddMessage(_ context.Context, message schema.ChatMessage) error
- func (h *ChatMessageHistory) AddUserMessage(_ context.Context, text string) error
- func (h *ChatMessageHistory) Clear(_ context.Context) error
- func (h *ChatMessageHistory) Messages(_ context.Context) ([]schema.ChatMessage, error)
- func (h *ChatMessageHistory) SetMessages(_ context.Context, messages []schema.ChatMessage) error
- type ChatMessageHistoryOption
- type ConversationBuffer
- func (m *ConversationBuffer) Clear(ctx context.Context) error
- func (m *ConversationBuffer) GetMemoryKey(context.Context) string
- func (m *ConversationBuffer) LoadMemoryVariables(ctx context.Context, _ map[string]any) (map[string]any, error)
- func (m *ConversationBuffer) MemoryVariables(context.Context) []string
- func (m *ConversationBuffer) SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
- type ConversationBufferOption
- func WithAIPrefix(aiPrefix string) ConversationBufferOption
- func WithChatHistory(chatHistory schema.ChatMessageHistory) ConversationBufferOption
- func WithHumanPrefix(humanPrefix string) ConversationBufferOption
- func WithInputKey(inputKey string) ConversationBufferOption
- func WithMemoryKey(memoryKey string) ConversationBufferOption
- func WithOutputKey(outputKey string) ConversationBufferOption
- func WithReturnMessages(returnMessages bool) ConversationBufferOption
- type ConversationDatabase
- func (m *ConversationDatabase) Clear(ctx context.Context) error
- func (m *ConversationDatabase) GetMemoryKey(context.Context) string
- func (m *ConversationDatabase) LoadMemoryVariables(ctx context.Context, _ map[string]any) (map[string]any, error)
- func (m *ConversationDatabase) MemoryVariables(context.Context) []string
- func (m *ConversationDatabase) SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
- type ConversationDatabaseOption
- func WithConversationId(conversationId string) ConversationDatabaseOption
- func WithLoadFunc(fun func(ctx context.Context, conversationId string, maxcache int) []string) ConversationDatabaseOption
- func WithMaxCache(maxcache int) ConversationDatabaseOption
- func WithRefreshAtOnce(atOnce bool) ConversationDatabaseOption
- func WithSaveFunc(fun func(ctx context.Context, conversationId, question, answer string) error) ConversationDatabaseOption
- type ConversationTokenBuffer
- func (tb *ConversationTokenBuffer) Clear(ctx context.Context) error
- func (tb *ConversationTokenBuffer) LoadMemoryVariables(ctx context.Context, inputs map[string]any) (map[string]any, error)
- func (tb *ConversationTokenBuffer) MemoryVariables(ctx context.Context) []string
- func (tb *ConversationTokenBuffer) SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
- type Simple
- func (m Simple) Clear(context.Context) error
- func (m Simple) GetMemoryKey(context.Context) string
- func (m Simple) LoadMemoryVariables(context.Context, map[string]any) (map[string]any, error)
- func (m Simple) MemoryVariables(context.Context) []string
- func (m Simple) SaveContext(context.Context, map[string]any, map[string]any) error
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidInputValues = errors.New("invalid input values")
ErrInvalidInputValues is returned when input values given to a memory in save context are invalid.
Functions ¶
This section is empty.
Types ¶
type ChatMessageHistory ¶
type ChatMessageHistory struct {
// contains filtered or unexported fields
}
ChatMessageHistory is a struct that stores chat messages.
func NewChatMessageHistory ¶
func NewChatMessageHistory(options ...ChatMessageHistoryOption) *ChatMessageHistory
NewChatMessageHistory creates a new ChatMessageHistory using chat message options.
func (*ChatMessageHistory) AddAIMessage ¶
func (h *ChatMessageHistory) AddAIMessage(_ context.Context, text string) error
AddAIMessage adds an AIMessage to the chat message history.
func (*ChatMessageHistory) AddMessage ¶
func (h *ChatMessageHistory) AddMessage(_ context.Context, message schema.ChatMessage) error
func (*ChatMessageHistory) AddUserMessage ¶
func (h *ChatMessageHistory) AddUserMessage(_ context.Context, text string) error
AddUserMessage adds an user to the chat message history.
func (*ChatMessageHistory) Messages ¶
func (h *ChatMessageHistory) Messages(_ context.Context) ([]schema.ChatMessage, error)
Messages returns all messages stored.
func (*ChatMessageHistory) SetMessages ¶
func (h *ChatMessageHistory) SetMessages(_ context.Context, messages []schema.ChatMessage) error
type ChatMessageHistoryOption ¶
type ChatMessageHistoryOption func(m *ChatMessageHistory)
ChatMessageHistoryOption is a function for creating new chat message history with other then the default values.
func WithPreviousMessages ¶
func WithPreviousMessages(previousMessages []schema.ChatMessage) ChatMessageHistoryOption
WithPreviousMessages is an option for NewChatMessageHistory for adding previous messages to the history.
type ConversationBuffer ¶
type ConversationBuffer struct {
ChatHistory schema.ChatMessageHistory
ReturnMessages bool
InputKey string
OutputKey string
HumanPrefix string
AIPrefix string
MemoryKey string
}
ConversationBuffer is a simple form of memory that remembers previous conversational back and forths directly.
func NewConversationBuffer ¶
func NewConversationBuffer(options ...ConversationBufferOption) *ConversationBuffer
NewConversationBuffer is a function for crating a new buffer memory.
func (*ConversationBuffer) Clear ¶
func (m *ConversationBuffer) Clear(ctx context.Context) error
Clear sets the chat messages to a new and empty chat message history.
func (*ConversationBuffer) GetMemoryKey ¶
func (m *ConversationBuffer) GetMemoryKey(context.Context) string
func (*ConversationBuffer) LoadMemoryVariables ¶
func (m *ConversationBuffer) LoadMemoryVariables( ctx context.Context, _ map[string]any, ) (map[string]any, error)
LoadMemoryVariables returns the previous chat messages stored in memory. Previous chat messages are returned in a map with the key specified in the MemoryKey field. This key defaults to "history". If ReturnMessages is set to true the output is a slice of schema.ChatMessage. Otherwise, the output is a buffer string of the chat messages.
func (*ConversationBuffer) MemoryVariables ¶
func (m *ConversationBuffer) MemoryVariables(context.Context) []string
MemoryVariables gets the input key the buffer memory class will load dynamically.
func (*ConversationBuffer) SaveContext ¶
func (m *ConversationBuffer) SaveContext( ctx context.Context, inputValues map[string]any, outputValues map[string]any, ) error
SaveContext uses the input values to the llm to save a user message, and the output values of the llm to save a ai message. If the input or output key is not set, the input values or output values must contain only one key such that the function can know what string to add as a user and AI message. On the other hand, if the output key or input key is set, the input key must be a key in the input values and the output key must be a key in the output values. The values in the input and output values used to save a user and ai message must be strings.
type ConversationBufferOption ¶
type ConversationBufferOption func(b *ConversationBuffer)
ConversationBufferOption is a function for creating new buffer with other then the default values.
func WithAIPrefix ¶
func WithAIPrefix(aiPrefix string) ConversationBufferOption
WithAIPrefix is an option for specifying the AI prefix.
func WithChatHistory ¶
func WithChatHistory(chatHistory schema.ChatMessageHistory) ConversationBufferOption
WithChatHistory is an option for providing the chat history store.
func WithHumanPrefix ¶
func WithHumanPrefix(humanPrefix string) ConversationBufferOption
WithHumanPrefix is an option for specifying the human prefix.
func WithInputKey ¶
func WithInputKey(inputKey string) ConversationBufferOption
WithInputKey is an option for specifying the input key.
func WithMemoryKey ¶
func WithMemoryKey(memoryKey string) ConversationBufferOption
WithMemoryKey is an option for specifying the memory key.
func WithOutputKey ¶
func WithOutputKey(outputKey string) ConversationBufferOption
WithOutputKey is an option for specifying the output key.
func WithReturnMessages ¶
func WithReturnMessages(returnMessages bool) ConversationBufferOption
WithReturnMessages is an option for specifying should it return messages.
type ConversationDatabase ¶
type ConversationDatabase struct {
ChatHistory schema.ChatMessageHistory
ConversationId string
// suggest to set true when distributed services
RefreshAtOnce bool
MaxCache int
SaveFunc func(ctx context.Context, conversationId, question, answer string) error
LoadFunc func(ctx context.Context, conversationId string, maxcache int) []string
// contains filtered or unexported fields
}
func NewConversationDatabase ¶
func NewConversationDatabase(options ...ConversationDatabaseOption) *ConversationDatabase
NewConversationDatabase is a function for crating a new buffer memory.
func (*ConversationDatabase) Clear ¶
func (m *ConversationDatabase) Clear(ctx context.Context) error
Clear sets the chat messages to a new and empty chat message history.
func (*ConversationDatabase) GetMemoryKey ¶
func (m *ConversationDatabase) GetMemoryKey(context.Context) string
func (*ConversationDatabase) LoadMemoryVariables ¶
func (m *ConversationDatabase) LoadMemoryVariables( ctx context.Context, _ map[string]any, ) (map[string]any, error)
LoadMemoryVariables returns the previous chat messages stored in memory. Previous chat messages are returned in a map with the key specified in the memoryKey field. This key defaults to "history". If ReturnMessages is set to true the output is a slice of schema.ChatMessage. Otherwise, the output is a buffer string of the chat messages.
func (*ConversationDatabase) MemoryVariables ¶
func (m *ConversationDatabase) MemoryVariables(context.Context) []string
MemoryVariables gets the input key the buffer memory class will load dynamically.
func (*ConversationDatabase) SaveContext ¶
func (m *ConversationDatabase) SaveContext( ctx context.Context, inputValues map[string]any, outputValues map[string]any, ) error
SaveContext uses the input values to the llm to save a user message, and the output values of the llm to save an ai message. If the input or output key is not set, the input values or output values must contain only one key such that the function can know what string to add as a user and AI message. On the other hand, if the output key or input key is set, the input key must be a key in the input values and the output key must be a key in the output values. The values in the input and output values used to save a user and ai message must be strings.
type ConversationDatabaseOption ¶
type ConversationDatabaseOption func(b *ConversationDatabase)
ConversationDatabaseOption is a function for creating new db storage with other then the default values.
func WithConversationId ¶
func WithConversationId(conversationId string) ConversationDatabaseOption
WithConversationId is an option for providing the conversation id.
func WithLoadFunc ¶
func WithLoadFunc(fun func(ctx context.Context, conversationId string, maxcache int) []string) ConversationDatabaseOption
WithLoadFunc is an option for providing the save func.
func WithMaxCache ¶
func WithMaxCache(maxcache int) ConversationDatabaseOption
WithMaxCache is an option for providing max item for user message buf.
func WithRefreshAtOnce ¶
func WithRefreshAtOnce(atOnce bool) ConversationDatabaseOption
WithRefreshAtOnce is an option for providing RefreshAtOnce. when it set to true and LoadFunc is set, every conversation will be load by LoadFunc otherwise use local memory
func WithSaveFunc ¶
func WithSaveFunc(fun func(ctx context.Context, conversationId, question, answer string) error) ConversationDatabaseOption
WithSaveFunc is an option for providing the save func.
type ConversationTokenBuffer ¶
type ConversationTokenBuffer struct {
ConversationBuffer
LLM llms.LanguageModel
MaxTokenLimit int
}
ConversationTokenBuffer for storing conversation memory.
func NewConversationTokenBuffer ¶
func NewConversationTokenBuffer( llm llms.LanguageModel, maxTokenLimit int, options ...ConversationBufferOption, ) *ConversationTokenBuffer
NewConversationTokenBuffer is a function for crating a new token buffer memory.
func (*ConversationTokenBuffer) Clear ¶
func (tb *ConversationTokenBuffer) Clear(ctx context.Context) error
Clear uses ConversationBuffer method for clearing buffer memory.
func (*ConversationTokenBuffer) LoadMemoryVariables ¶
func (tb *ConversationTokenBuffer) LoadMemoryVariables( ctx context.Context, inputs map[string]any, ) (map[string]any, error)
LoadMemoryVariables uses ConversationBuffer method for loading memory variables.
func (*ConversationTokenBuffer) MemoryVariables ¶
func (tb *ConversationTokenBuffer) MemoryVariables(ctx context.Context) []string
MemoryVariables uses ConversationBuffer method for memory variables.
func (*ConversationTokenBuffer) SaveContext ¶
func (tb *ConversationTokenBuffer) SaveContext( ctx context.Context, inputValues map[string]any, outputValues map[string]any, ) error
SaveContext uses ConversationBuffer method for saving context and prunes memory buffer if needed.
type Simple ¶
type Simple struct{}
Simple is a class that implement the memory interface, but does nothing. The class is used as default in multiple chains.