Documentation
¶
Index ¶
- Constants
- func BuildInlineHistoryPrompt(ctx context.Context, prompt string, memory interfaces.Memory, ...) string
- func GetConversationID(ctx context.Context) (string, bool)
- func NewMemoryFromConfig(config map[string]interface{}, llmClient interfaces.LLM) (interfaces.Memory, error)
- func WithConversationID(ctx context.Context, conversationID string) context.Context
- type ConversationBuffer
- func (c *ConversationBuffer) AddMessage(ctx context.Context, message interfaces.Message) error
- func (c *ConversationBuffer) Clear(ctx context.Context) error
- func (c *ConversationBuffer) GetAllConversations(ctx context.Context) ([]string, error)
- func (c *ConversationBuffer) GetAllConversationsAcrossOrgs() (map[string][]string, error)
- func (c *ConversationBuffer) GetConversationMessages(ctx context.Context, conversationID string) ([]interfaces.Message, error)
- func (c *ConversationBuffer) GetConversationMessagesAcrossOrgs(conversationID string) ([]interfaces.Message, string, error)
- func (c *ConversationBuffer) GetMemoryStatistics(ctx context.Context) (totalConversations, totalMessages int, err error)
- func (c *ConversationBuffer) GetMemoryStatisticsAcrossOrgs() (totalConversations, totalMessages int, err error)
- func (c *ConversationBuffer) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
- type ConversationSummary
- type MemoryFactory
- type Option
- type RedisConfig
- type RedisMemory
- func (r *RedisMemory) AddMessage(ctx context.Context, message interfaces.Message) error
- func (r *RedisMemory) Clear(ctx context.Context) error
- func (r *RedisMemory) Close() error
- func (r *RedisMemory) GetAllConversations(ctx context.Context) ([]string, error)
- func (r *RedisMemory) GetAllConversationsAcrossOrgs() (map[string][]string, error)
- func (r *RedisMemory) GetConversationMessages(ctx context.Context, conversationID string) ([]interfaces.Message, error)
- func (r *RedisMemory) GetConversationMessagesAcrossOrgs(conversationID string) ([]interfaces.Message, string, error)
- func (r *RedisMemory) GetMemoryStatistics(ctx context.Context) (totalConversations, totalMessages int, err error)
- func (r *RedisMemory) GetMemoryStatisticsAcrossOrgs() (totalConversations, totalMessages int, err error)
- func (r *RedisMemory) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
- type RedisOption
- func WithCompression(enabled bool) RedisOption
- func WithEncryption(key []byte) RedisOption
- func WithKeyPrefix(prefix string) RedisOption
- func WithMaxMessageSize(size int) RedisOption
- func WithRetryOptions(options *RetryOptions) RedisOption
- func WithSummarization(llm interfaces.LLM, messageThreshold int, summaryCount int) RedisOption
- func WithTTL(ttl time.Duration) RedisOption
- type RetrieverOption
- type RetryOptions
- type SummaryOption
- type VectorStoreRetriever
Constants ¶
const ConversationIDKey contextKey = "conversation_id"
ConversationIDKey is the key used to store conversation ID in context
Variables ¶
This section is empty.
Functions ¶
func BuildInlineHistoryPrompt ¶ added in v0.0.58
func BuildInlineHistoryPrompt(ctx context.Context, prompt string, memory interfaces.Memory, logger logging.Logger) string
BuildInlineHistoryPrompt builds a prompt with conversation history for prompt-based models This is a generic implementation for models that don't have native conversation support
func GetConversationID ¶
GetConversationID retrieves the conversation ID from the context
func NewMemoryFromConfig ¶ added in v0.2.4
func NewMemoryFromConfig(config map[string]interface{}, llmClient interfaces.LLM) (interfaces.Memory, error)
NewMemoryFromConfig is a convenience function to create memory from config map
Types ¶
type ConversationBuffer ¶
type ConversationBuffer struct {
// contains filtered or unexported fields
}
ConversationBuffer implements a simple in-memory conversation buffer
func NewConversationBuffer ¶
func NewConversationBuffer(options ...Option) *ConversationBuffer
NewConversationBuffer creates a new conversation buffer
func (*ConversationBuffer) AddMessage ¶
func (c *ConversationBuffer) AddMessage(ctx context.Context, message interfaces.Message) error
AddMessage adds a message to the buffer
func (*ConversationBuffer) Clear ¶
func (c *ConversationBuffer) Clear(ctx context.Context) error
Clear clears the buffer for a conversation
func (*ConversationBuffer) GetAllConversations ¶ added in v0.1.7
func (c *ConversationBuffer) GetAllConversations(ctx context.Context) ([]string, error)
GetAllConversations returns all conversation IDs
func (*ConversationBuffer) GetAllConversationsAcrossOrgs ¶ added in v0.1.7
func (c *ConversationBuffer) GetAllConversationsAcrossOrgs() (map[string][]string, error)
GetAllConversationsAcrossOrgs returns all conversation IDs from all organizations
func (*ConversationBuffer) GetConversationMessages ¶ added in v0.1.7
func (c *ConversationBuffer) GetConversationMessages(ctx context.Context, conversationID string) ([]interfaces.Message, error)
GetConversationMessages gets all messages for a specific conversation
func (*ConversationBuffer) GetConversationMessagesAcrossOrgs ¶ added in v0.1.7
func (c *ConversationBuffer) GetConversationMessagesAcrossOrgs(conversationID string) ([]interfaces.Message, string, error)
GetConversationMessagesAcrossOrgs finds conversation in any org and returns messages
func (*ConversationBuffer) GetMemoryStatistics ¶ added in v0.1.7
func (c *ConversationBuffer) GetMemoryStatistics(ctx context.Context) (totalConversations, totalMessages int, err error)
GetMemoryStatistics returns basic memory statistics
func (*ConversationBuffer) GetMemoryStatisticsAcrossOrgs ¶ added in v0.1.7
func (c *ConversationBuffer) GetMemoryStatisticsAcrossOrgs() (totalConversations, totalMessages int, err error)
GetMemoryStatisticsAcrossOrgs returns memory statistics across all organizations
func (*ConversationBuffer) GetMessages ¶
func (c *ConversationBuffer) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
GetMessages retrieves messages from the buffer
type ConversationSummary ¶
type ConversationSummary struct {
// contains filtered or unexported fields
}
ConversationSummary implements a memory that summarizes old messages
func NewConversationSummary ¶
func NewConversationSummary(llmClient interfaces.LLM, options ...SummaryOption) *ConversationSummary
NewConversationSummary creates a new conversation summary memory
func (*ConversationSummary) AddMessage ¶
func (c *ConversationSummary) AddMessage(ctx context.Context, message interfaces.Message) error
AddMessage adds a message to the memory
func (*ConversationSummary) Clear ¶
func (c *ConversationSummary) Clear(ctx context.Context) error
Clear clears the memory
func (*ConversationSummary) GetMessages ¶
func (c *ConversationSummary) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
GetMessages retrieves messages from the memory
type MemoryFactory ¶ added in v0.2.4
type MemoryFactory struct{}
MemoryFactory provides factory functions to create memory instances from configuration
func NewMemoryFactory ¶ added in v0.2.4
func NewMemoryFactory() *MemoryFactory
NewMemoryFactory creates a new memory factory
func (*MemoryFactory) CreateMemory ¶ added in v0.2.4
func (f *MemoryFactory) CreateMemory(config map[string]interface{}, llmClient interfaces.LLM) (interfaces.Memory, error)
CreateMemory creates a memory instance from configuration map
type Option ¶
type Option func(*ConversationBuffer)
Option represents an option for configuring the conversation buffer
func WithMaxSize ¶
WithMaxSize sets the maximum number of messages to store
type RedisConfig ¶ added in v0.0.2
type RedisConfig struct {
// URL is the Redis URL (e.g., "localhost:6379")
URL string
// Password is the Redis password
Password string
// DB is the Redis database number
DB int
}
RedisConfig contains configuration for Redis
type RedisMemory ¶
type RedisMemory struct {
// contains filtered or unexported fields
}
RedisMemory implements a Redis-backed memory store
func NewRedisMemory ¶
func NewRedisMemory(client *redis.Client, options ...RedisOption) *RedisMemory
NewRedisMemory creates a new Redis-backed memory store
func NewRedisMemoryFromConfig ¶ added in v0.0.2
func NewRedisMemoryFromConfig(config RedisConfig, options ...RedisOption) (*RedisMemory, error)
NewRedisMemoryFromConfig creates a new Redis memory from configuration
func (*RedisMemory) AddMessage ¶
func (r *RedisMemory) AddMessage(ctx context.Context, message interfaces.Message) error
AddMessage adds a message to the memory with improved error handling and retry logic
func (*RedisMemory) Clear ¶
func (r *RedisMemory) Clear(ctx context.Context) error
Clear clears the memory for a conversation
func (*RedisMemory) Close ¶ added in v0.0.2
func (r *RedisMemory) Close() error
Close closes the underlying Redis connection
func (*RedisMemory) GetAllConversations ¶ added in v0.1.7
func (r *RedisMemory) GetAllConversations(ctx context.Context) ([]string, error)
GetAllConversations returns all conversation IDs for the current org
func (*RedisMemory) GetAllConversationsAcrossOrgs ¶ added in v0.1.7
func (r *RedisMemory) GetAllConversationsAcrossOrgs() (map[string][]string, error)
GetAllConversationsAcrossOrgs returns all conversation IDs from all organizations
func (*RedisMemory) GetConversationMessages ¶ added in v0.1.7
func (r *RedisMemory) GetConversationMessages(ctx context.Context, conversationID string) ([]interfaces.Message, error)
GetConversationMessages gets all messages for a specific conversation in current org
func (*RedisMemory) GetConversationMessagesAcrossOrgs ¶ added in v0.1.7
func (r *RedisMemory) GetConversationMessagesAcrossOrgs(conversationID string) ([]interfaces.Message, string, error)
GetConversationMessagesAcrossOrgs finds conversation in any org and returns messages
func (*RedisMemory) GetMemoryStatistics ¶ added in v0.1.7
func (r *RedisMemory) GetMemoryStatistics(ctx context.Context) (totalConversations, totalMessages int, err error)
GetMemoryStatistics returns basic memory statistics for current org
func (*RedisMemory) GetMemoryStatisticsAcrossOrgs ¶ added in v0.1.7
func (r *RedisMemory) GetMemoryStatisticsAcrossOrgs() (totalConversations, totalMessages int, err error)
GetMemoryStatisticsAcrossOrgs returns memory statistics across all organizations
func (*RedisMemory) GetMessages ¶
func (r *RedisMemory) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
GetMessages retrieves messages from the memory with improved filtering and pagination
type RedisOption ¶
type RedisOption func(*RedisMemory)
RedisOption represents an option for configuring the Redis memory
func WithCompression ¶ added in v0.0.2
func WithCompression(enabled bool) RedisOption
WithCompression enables compression for stored messages
func WithEncryption ¶ added in v0.0.2
func WithEncryption(key []byte) RedisOption
WithEncryption enables encryption for stored messages
func WithKeyPrefix ¶ added in v0.0.2
func WithKeyPrefix(prefix string) RedisOption
WithKeyPrefix sets a custom prefix for Redis keys
func WithMaxMessageSize ¶ added in v0.0.2
func WithMaxMessageSize(size int) RedisOption
WithMaxMessageSize sets the maximum size for stored messages
func WithRetryOptions ¶ added in v0.0.2
func WithRetryOptions(options *RetryOptions) RedisOption
WithRetryOptions configures retry behavior for Redis operations
func WithSummarization ¶ added in v0.0.25
func WithSummarization(llm interfaces.LLM, messageThreshold int, summaryCount int) RedisOption
WithSummarization enables automatic summarization of old messages
type RetrieverOption ¶
type RetrieverOption func(*VectorStoreRetriever)
RetrieverOption represents an option for configuring the vector store retriever
func WithAutoRecall ¶ added in v0.2.71
func WithAutoRecall() RetrieverOption
WithAutoRecall makes GetMessages search the vector store even when the caller supplies no explicit query, using the most recent user message as the query.
It is opt-in. Enabling it changes what the model sees, and the safe default for an existing deployment is no change -- but note that without it the vector store is write-only, since no provider passes interfaces.WithQuery.
func WithRecallLimit ¶ added in v0.2.71
func WithRecallLimit(n int) RetrieverOption
WithRecallLimit sets how many prior messages auto-recall may surface. Defaults to 5.
type RetryOptions ¶ added in v0.0.2
RetryOptions configures retry behavior for Redis operations
type SummaryOption ¶
type SummaryOption func(*ConversationSummary)
SummaryOption represents an option for configuring the conversation summary
func WithMaxBufferSize ¶
func WithMaxBufferSize(size int) SummaryOption
WithMaxBufferSize sets the maximum number of messages before summarizing
func WithSummaryLength ¶ added in v0.0.2
func WithSummaryLength(wordCount int) SummaryOption
WithSummaryLength sets the maximum word count target for summaries
type VectorStoreRetriever ¶
type VectorStoreRetriever struct {
// contains filtered or unexported fields
}
VectorStoreRetriever implements a memory that stores messages in a vector store
func NewVectorStoreRetriever ¶
func NewVectorStoreRetriever(vectorStore interfaces.VectorStore, options ...RetrieverOption) *VectorStoreRetriever
NewVectorStoreRetriever creates a new vector store retriever memory
func (*VectorStoreRetriever) AddMessage ¶
func (v *VectorStoreRetriever) AddMessage(ctx context.Context, message interfaces.Message) error
AddMessage adds a message to the memory
func (*VectorStoreRetriever) Clear ¶
func (v *VectorStoreRetriever) Clear(ctx context.Context) error
Clear clears the memory
func (*VectorStoreRetriever) GetMessages ¶
func (v *VectorStoreRetriever) GetMessages(ctx context.Context, options ...interfaces.GetMessagesOption) ([]interfaces.Message, error)
GetMessages retrieves messages from the memory