Documentation
¶
Index ¶
- func CreateAgent(model llms.Model, inputTools []tools.Tool, opts ...CreateAgentOption) (*graph.StateRunnable, error)
- func CreateReactAgent(model llms.Model, inputTools []tools.Tool) (*graph.StateRunnable, error)
- func CreateSupervisor(model llms.Model, members map[string]*graph.StateRunnable) (*graph.StateRunnable, error)
- type ChatMessageHistory
- func (h *ChatMessageHistory) AddAIMessage(ctx context.Context, message string) error
- func (h *ChatMessageHistory) AddMessage(ctx context.Context, message llms.ChatMessage) error
- func (h *ChatMessageHistory) AddUserMessage(ctx context.Context, message string) error
- func (h *ChatMessageHistory) Clear(ctx context.Context) error
- func (h *ChatMessageHistory) GetHistory() schema.ChatMessageHistory
- func (h *ChatMessageHistory) Messages(ctx context.Context) ([]llms.ChatMessage, error)
- func (h *ChatMessageHistory) SetMessages(ctx context.Context, messages []llms.ChatMessage) error
- type CreateAgentOption
- type CreateAgentOptions
- type Document
- type DocumentLoader
- type DocumentWithScore
- type Embedder
- type InMemoryVectorStore
- func (s *InMemoryVectorStore) AddDocuments(ctx context.Context, documents []Document, embeddings [][]float64) error
- func (s *InMemoryVectorStore) SimilaritySearch(ctx context.Context, query string, k int) ([]Document, error)
- func (s *InMemoryVectorStore) SimilaritySearchWithScore(ctx context.Context, query string, k int) ([]DocumentWithScore, error)
- type LangChainDocumentLoader
- type LangChainEmbedder
- type LangChainMemory
- func NewConversationBufferMemory(options ...memory.ConversationBufferOption) *LangChainMemory
- func NewConversationTokenBufferMemory(llm llms.Model, maxTokenLimit int, options ...memory.ConversationBufferOption) *LangChainMemory
- func NewConversationWindowBufferMemory(windowSize int, options ...memory.ConversationBufferOption) *LangChainMemory
- func NewLangChainMemory(buffer schema.Memory) *LangChainMemory
- func (m *LangChainMemory) Clear(ctx context.Context) error
- func (m *LangChainMemory) GetMessages(ctx context.Context) ([]llms.ChatMessage, error)
- func (m *LangChainMemory) LoadMemoryVariables(ctx context.Context, inputs map[string]any) (map[string]any, error)
- func (m *LangChainMemory) SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
- type LangChainTextSplitter
- type LangChainVectorStore
- func (s *LangChainVectorStore) AddDocuments(ctx context.Context, documents []Document, embeddings [][]float64) error
- func (s *LangChainVectorStore) SimilaritySearch(ctx context.Context, query string, k int) ([]Document, error)
- func (s *LangChainVectorStore) SimilaritySearchWithScore(ctx context.Context, query string, k int) ([]DocumentWithScore, error)
- type Memory
- type MockEmbedder
- type RAGConfig
- type RAGPipeline
- type RAGState
- type Reranker
- type Retriever
- type SimpleReranker
- type SimpleTextSplitter
- type StaticDocumentLoader
- type TextSplitter
- type ToolExecutor
- type ToolInvocation
- type ToolNode
- type VectorStore
- type VectorStoreRetriever
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateAgent ¶ added in v0.3.1
func CreateAgent(model llms.Model, inputTools []tools.Tool, opts ...CreateAgentOption) (*graph.StateRunnable, error)
CreateAgent creates a new agent graph with options
func CreateReactAgent ¶
CreateReactAgent creates a new ReAct agent graph
func CreateSupervisor ¶
func CreateSupervisor(model llms.Model, members map[string]*graph.StateRunnable) (*graph.StateRunnable, error)
CreateSupervisor creates a supervisor graph that orchestrates multiple agents
Types ¶
type ChatMessageHistory ¶
type ChatMessageHistory struct {
// contains filtered or unexported fields
}
ChatMessageHistory provides direct access to chat message history
func NewChatMessageHistory ¶
func NewChatMessageHistory(options ...memory.ChatMessageHistoryOption) *ChatMessageHistory
NewChatMessageHistory creates a new chat message history
func (*ChatMessageHistory) AddAIMessage ¶
func (h *ChatMessageHistory) AddAIMessage(ctx context.Context, message string) error
AddAIMessage adds an AI message to the history
func (*ChatMessageHistory) AddMessage ¶
func (h *ChatMessageHistory) AddMessage(ctx context.Context, message llms.ChatMessage) error
AddMessage adds a message to the history
func (*ChatMessageHistory) AddUserMessage ¶
func (h *ChatMessageHistory) AddUserMessage(ctx context.Context, message string) error
AddUserMessage adds a user message to the history
func (*ChatMessageHistory) Clear ¶
func (h *ChatMessageHistory) Clear(ctx context.Context) error
Clear clears all messages from the history
func (*ChatMessageHistory) GetHistory ¶
func (h *ChatMessageHistory) GetHistory() schema.ChatMessageHistory
GetHistory returns the underlying langchaingo ChatMessageHistory
func (*ChatMessageHistory) Messages ¶
func (h *ChatMessageHistory) Messages(ctx context.Context) ([]llms.ChatMessage, error)
Messages returns all messages in the history
func (*ChatMessageHistory) SetMessages ¶
func (h *ChatMessageHistory) SetMessages(ctx context.Context, messages []llms.ChatMessage) error
SetMessages sets the messages in the history
type CreateAgentOption ¶ added in v0.3.1
type CreateAgentOption func(*CreateAgentOptions)
CreateAgentOption is a function that configures CreateAgentOptions
func WithCheckpointer ¶ added in v0.3.1
func WithCheckpointer(checkpointer graph.CheckpointStore) CreateAgentOption
WithCheckpointer sets the checkpointer for the agent Note: Currently this is a placeholder and may not be fully integrated into the graph execution yet
func WithStateModifier ¶ added in v0.3.1
func WithStateModifier(modifier func(messages []llms.MessageContent) []llms.MessageContent) CreateAgentOption
WithStateModifier sets a function to modify messages before they are sent to the model
func WithSystemMessage ¶ added in v0.3.1
func WithSystemMessage(message string) CreateAgentOption
WithSystemMessage sets the system message for the agent
type CreateAgentOptions ¶ added in v0.3.1
type CreateAgentOptions struct {
SystemMessage string
StateModifier func(messages []llms.MessageContent) []llms.MessageContent
Checkpointer graph.CheckpointStore
}
CreateAgentOptions contains options for creating an agent
type DocumentLoader ¶
DocumentLoader loads documents from various sources
type DocumentWithScore ¶
DocumentWithScore represents a document with its similarity score
type Embedder ¶
type Embedder interface {
EmbedDocuments(ctx context.Context, texts []string) ([][]float64, error)
EmbedQuery(ctx context.Context, text string) ([]float64, error)
}
Embedder generates embeddings for text
type InMemoryVectorStore ¶
type InMemoryVectorStore struct {
// contains filtered or unexported fields
}
InMemoryVectorStore is a simple in-memory vector store implementation
func NewInMemoryVectorStore ¶
func NewInMemoryVectorStore(embedder Embedder) *InMemoryVectorStore
NewInMemoryVectorStore creates a new InMemoryVectorStore
func (*InMemoryVectorStore) AddDocuments ¶
func (s *InMemoryVectorStore) AddDocuments(ctx context.Context, documents []Document, embeddings [][]float64) error
AddDocuments adds documents with their embeddings to the store
func (*InMemoryVectorStore) SimilaritySearch ¶
func (s *InMemoryVectorStore) SimilaritySearch(ctx context.Context, query string, k int) ([]Document, error)
SimilaritySearch performs similarity search and returns top k documents
func (*InMemoryVectorStore) SimilaritySearchWithScore ¶
func (s *InMemoryVectorStore) SimilaritySearchWithScore(ctx context.Context, query string, k int) ([]DocumentWithScore, error)
SimilaritySearchWithScore performs similarity search and returns documents with scores
type LangChainDocumentLoader ¶
type LangChainDocumentLoader struct {
// contains filtered or unexported fields
}
LangChainDocumentLoader adapts langchaingo's documentloaders.Loader to our DocumentLoader interface
func NewLangChainDocumentLoader ¶
func NewLangChainDocumentLoader(loader documentloaders.Loader) *LangChainDocumentLoader
NewLangChainDocumentLoader creates a new adapter for langchaingo document loaders
func (*LangChainDocumentLoader) Load ¶
func (l *LangChainDocumentLoader) Load(ctx context.Context) ([]Document, error)
Load loads documents using the underlying langchaingo loader
func (*LangChainDocumentLoader) LoadAndSplit ¶
func (l *LangChainDocumentLoader) LoadAndSplit(ctx context.Context, splitter textsplitter.TextSplitter) ([]Document, error)
LoadAndSplit loads and splits documents using langchaingo's text splitter
type LangChainEmbedder ¶
type LangChainEmbedder struct {
// contains filtered or unexported fields
}
LangChainEmbedder adapts langchaingo's embeddings.Embedder to our Embedder interface
func NewLangChainEmbedder ¶
func NewLangChainEmbedder(embedder embeddings.Embedder) *LangChainEmbedder
NewLangChainEmbedder creates a new adapter for langchaingo embedders
func (*LangChainEmbedder) EmbedDocuments ¶
func (e *LangChainEmbedder) EmbedDocuments(ctx context.Context, texts []string) ([][]float64, error)
EmbedDocuments generates embeddings for multiple documents
func (*LangChainEmbedder) EmbedQuery ¶
EmbedQuery generates an embedding for a single query
type LangChainMemory ¶
type LangChainMemory struct {
// contains filtered or unexported fields
}
LangChainMemory adapts langchaingo's memory implementations to our Memory interface
func NewConversationBufferMemory ¶
func NewConversationBufferMemory(options ...memory.ConversationBufferOption) *LangChainMemory
NewConversationBufferMemory creates a new conversation buffer memory with default settings
func NewConversationTokenBufferMemory ¶
func NewConversationTokenBufferMemory(llm llms.Model, maxTokenLimit int, options ...memory.ConversationBufferOption) *LangChainMemory
NewConversationTokenBufferMemory creates a new conversation token buffer memory that keeps conversation history within a token limit
func NewConversationWindowBufferMemory ¶
func NewConversationWindowBufferMemory(windowSize int, options ...memory.ConversationBufferOption) *LangChainMemory
NewConversationWindowBufferMemory creates a new conversation window buffer memory that keeps only the last N conversation turns
func NewLangChainMemory ¶
func NewLangChainMemory(buffer schema.Memory) *LangChainMemory
NewLangChainMemory creates a new adapter for langchaingo memory Supports ConversationBuffer, ConversationWindowBuffer, ConversationTokenBuffer, etc.
func (*LangChainMemory) Clear ¶
func (m *LangChainMemory) Clear(ctx context.Context) error
Clear clears memory contents
func (*LangChainMemory) GetMessages ¶
func (m *LangChainMemory) GetMessages(ctx context.Context) ([]llms.ChatMessage, error)
GetMessages returns all messages in memory This is a convenience method that extracts messages from the memory buffer
func (*LangChainMemory) LoadMemoryVariables ¶
func (m *LangChainMemory) LoadMemoryVariables(ctx context.Context, inputs map[string]any) (map[string]any, error)
LoadMemoryVariables loads memory variables
func (*LangChainMemory) SaveContext ¶
func (m *LangChainMemory) SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
SaveContext saves the context from this conversation to buffer
type LangChainTextSplitter ¶
type LangChainTextSplitter struct {
// contains filtered or unexported fields
}
LangChainTextSplitter adapts langchaingo's textsplitter.TextSplitter to our TextSplitter interface
func NewLangChainTextSplitter ¶
func NewLangChainTextSplitter(splitter textsplitter.TextSplitter) *LangChainTextSplitter
NewLangChainTextSplitter creates a new adapter for langchaingo text splitters
func (*LangChainTextSplitter) SplitDocuments ¶
func (s *LangChainTextSplitter) SplitDocuments(documents []Document) ([]Document, error)
SplitDocuments splits documents using the underlying langchaingo splitter
type LangChainVectorStore ¶
type LangChainVectorStore struct {
// contains filtered or unexported fields
}
LangChainVectorStore adapts langchaingo's vectorstores.VectorStore to our VectorStore interface
func NewLangChainVectorStore ¶
func NewLangChainVectorStore(store vectorstores.VectorStore) *LangChainVectorStore
NewLangChainVectorStore creates a new adapter for langchaingo vector stores
func (*LangChainVectorStore) AddDocuments ¶
func (s *LangChainVectorStore) AddDocuments(ctx context.Context, documents []Document, embeddings [][]float64) error
AddDocuments adds documents to the vector store
func (*LangChainVectorStore) SimilaritySearch ¶
func (s *LangChainVectorStore) SimilaritySearch(ctx context.Context, query string, k int) ([]Document, error)
SimilaritySearch searches for similar documents
func (*LangChainVectorStore) SimilaritySearchWithScore ¶
func (s *LangChainVectorStore) SimilaritySearchWithScore(ctx context.Context, query string, k int) ([]DocumentWithScore, error)
SimilaritySearchWithScore searches for similar documents and returns them with scores
type Memory ¶
type Memory interface {
// SaveContext saves the context from this conversation to buffer
SaveContext(ctx context.Context, inputValues map[string]any, outputValues map[string]any) error
// LoadMemoryVariables loads memory variables
LoadMemoryVariables(ctx context.Context, inputs map[string]any) (map[string]any, error)
// Clear clears memory contents
Clear(ctx context.Context) error
// GetMessages returns all messages in memory
GetMessages(ctx context.Context) ([]llms.ChatMessage, error)
}
Memory is the interface for conversation memory management in langgraphgo
type MockEmbedder ¶
type MockEmbedder struct {
Dimension int
}
MockEmbedder is a simple mock embedder for testing
func NewMockEmbedder ¶
func NewMockEmbedder(dimension int) *MockEmbedder
NewMockEmbedder creates a new MockEmbedder
func (*MockEmbedder) EmbedDocuments ¶
EmbedDocuments generates mock embeddings for documents
func (*MockEmbedder) EmbedQuery ¶
EmbedQuery generates a mock embedding for a query
type RAGConfig ¶
type RAGConfig struct {
// Retrieval configuration
TopK int // Number of documents to retrieve
ScoreThreshold float64 // Minimum relevance score
UseReranking bool // Whether to use reranking
UseFallback bool // Whether to use fallback search
// Generation configuration
SystemPrompt string
IncludeCitations bool
MaxTokens int
Temperature float64
// Components
Loader DocumentLoader
Splitter TextSplitter
Embedder Embedder
VectorStore VectorStore
Retriever Retriever
Reranker Reranker
LLM llms.Model
}
RAGConfig configures a RAG pipeline
func DefaultRAGConfig ¶
func DefaultRAGConfig() *RAGConfig
DefaultRAGConfig returns a default RAG configuration
type RAGPipeline ¶
type RAGPipeline struct {
// contains filtered or unexported fields
}
RAGPipeline represents a complete RAG pipeline
func NewRAGPipeline ¶
func NewRAGPipeline(config *RAGConfig) *RAGPipeline
NewRAGPipeline creates a new RAG pipeline with the given configuration
func (*RAGPipeline) BuildAdvancedRAG ¶
func (p *RAGPipeline) BuildAdvancedRAG() error
BuildAdvancedRAG builds an advanced RAG pipeline: Retrieve -> Rerank -> Generate
func (*RAGPipeline) BuildBasicRAG ¶
func (p *RAGPipeline) BuildBasicRAG() error
BuildBasicRAG builds a basic RAG pipeline: Retrieve -> Generate
func (*RAGPipeline) BuildConditionalRAG ¶
func (p *RAGPipeline) BuildConditionalRAG() error
BuildConditionalRAG builds a RAG pipeline with conditional routing based on relevance
func (*RAGPipeline) Compile ¶
func (p *RAGPipeline) Compile() (*graph.Runnable, error)
Compile compiles the RAG pipeline into a runnable graph
func (*RAGPipeline) GetGraph ¶
func (p *RAGPipeline) GetGraph() *graph.MessageGraph
GetGraph returns the underlying graph for visualization
type RAGState ¶
type RAGState struct {
Query string
Documents []Document
RetrievedDocuments []Document
RankedDocuments []DocumentWithScore
Context string
Answer string
Citations []string
Metadata map[string]interface{}
}
RAGState represents the state flowing through a RAG pipeline
type Reranker ¶
type Reranker interface {
Rerank(ctx context.Context, query string, documents []Document) ([]DocumentWithScore, error)
}
Reranker reranks retrieved documents based on relevance
type Retriever ¶
type Retriever interface {
GetRelevantDocuments(ctx context.Context, query string) ([]Document, error)
}
Retriever retrieves relevant documents for a query
type SimpleReranker ¶
type SimpleReranker struct {
}
SimpleReranker is a simple reranker that scores documents based on keyword matching
func NewSimpleReranker ¶
func NewSimpleReranker() *SimpleReranker
NewSimpleReranker creates a new SimpleReranker
func (*SimpleReranker) Rerank ¶
func (r *SimpleReranker) Rerank(ctx context.Context, query string, documents []Document) ([]DocumentWithScore, error)
Rerank reranks documents based on query relevance
type SimpleTextSplitter ¶
SimpleTextSplitter splits text into chunks of a given size
func NewSimpleTextSplitter ¶
func NewSimpleTextSplitter(chunkSize, chunkOverlap int) *SimpleTextSplitter
NewSimpleTextSplitter creates a new SimpleTextSplitter
func (*SimpleTextSplitter) SplitDocuments ¶
func (s *SimpleTextSplitter) SplitDocuments(documents []Document) ([]Document, error)
SplitDocuments splits documents into smaller chunks
type StaticDocumentLoader ¶
type StaticDocumentLoader struct {
Documents []Document
}
StaticDocumentLoader loads documents from a static list
func NewStaticDocumentLoader ¶
func NewStaticDocumentLoader(documents []Document) *StaticDocumentLoader
NewStaticDocumentLoader creates a new StaticDocumentLoader
type TextSplitter ¶
TextSplitter splits documents into smaller chunks
type ToolExecutor ¶
type ToolExecutor struct {
// contains filtered or unexported fields
}
ToolExecutor executes tools based on invocations
func NewToolExecutor ¶
func NewToolExecutor(inputTools []tools.Tool) *ToolExecutor
NewToolExecutor creates a new ToolExecutor with the given tools
func (*ToolExecutor) Execute ¶
func (te *ToolExecutor) Execute(ctx context.Context, invocation ToolInvocation) (string, error)
Execute executes a single tool invocation
func (*ToolExecutor) ExecuteMany ¶
func (te *ToolExecutor) ExecuteMany(ctx context.Context, invocations []ToolInvocation) ([]string, error)
ExecuteMany executes multiple tool invocations in parallel (if needed, but here sequential for simplicity) In a real graph, this might be a ParallelNode, but here we provide a helper.
func (*ToolExecutor) ToolNode ¶
func (te *ToolExecutor) ToolNode(ctx context.Context, state interface{}) (interface{}, error)
ToolNode is a graph node function that executes tools It expects the state to contain a list of ToolInvocation or a single ToolInvocation This is a simplified version. In a real agent, it would parse messages.
type ToolInvocation ¶
ToolInvocation represents a request to execute a tool
type ToolNode ¶
type ToolNode struct {
Executor *ToolExecutor
}
ToolNode is a reusable node that executes tool calls from the last AI message. It expects the state to be a map[string]interface{} with a "messages" key containing []llms.MessageContent.
func NewToolNode ¶
NewToolNode creates a new ToolNode with the given tools.
type VectorStore ¶
type VectorStore interface {
AddDocuments(ctx context.Context, documents []Document, embeddings [][]float64) error
SimilaritySearch(ctx context.Context, query string, k int) ([]Document, error)
SimilaritySearchWithScore(ctx context.Context, query string, k int) ([]DocumentWithScore, error)
}
VectorStore stores and retrieves document embeddings
type VectorStoreRetriever ¶
type VectorStoreRetriever struct {
VectorStore VectorStore
TopK int
}
VectorStoreRetriever implements Retriever using a VectorStore
func NewVectorStoreRetriever ¶
func NewVectorStoreRetriever(vectorStore VectorStore, topK int) *VectorStoreRetriever
NewVectorStoreRetriever creates a new VectorStoreRetriever
func (*VectorStoreRetriever) GetRelevantDocuments ¶
func (r *VectorStoreRetriever) GetRelevantDocuments(ctx context.Context, query string) ([]Document, error)
GetRelevantDocuments retrieves relevant documents for a query