Documentation
¶
Overview ¶
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现
本文件实现配置系统的 Mock:
- MockConfigProvider: 模拟配置提供者,支持多种配置类型的存取
注意:为避免与 config/agent 包的循环导入,本 Mock 使用 map[string]any 存储配置数据,而非直接引用 config.AgentConfig 等类型。 在测试中可以存储任意配置对象,取出时使用类型断言转换。
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
本文件实现图编排 Executable 接口的 Mock:
- MockExecutable: 模拟 graph.Executable 接口,用于时间旅行调试器测试
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
本文件实现 Agent 网络通信的 Mock:
- MockNetwork: 模拟 Agent 网络通信,支持消息发送、广播和记录
- MockMessage: 记录网络中传递的消息
注意:为避免与 agent 包的循环导入,本 Mock 使用字符串 ID 标识 Agent, 不直接引用 agent.Agent 接口。
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
Package mock 提供 Hexagon AI Agent 框架测试的 Mock 实现 ¶
本文件实现向量存储和向量生成器的 Mock:
- MockVectorStore: 模拟 vector.Store 接口
- MockEmbedder: 模拟 vector.Embedder 接口
Index ¶
- func SimpleDocuments(contents ...string) []rag.Document
- type EmbedderOption
- type LLMProvider
- func (p *LLMProvider) AddErrorResponse(err error) *LLMProvider
- func (p *LLMProvider) AddResponse(content string) *LLMProvider
- func (p *LLMProvider) AddToolCallResponse(toolCalls []llm.ToolCall) *LLMProvider
- func (p *LLMProvider) CallCount() int
- func (p *LLMProvider) Calls() []llm.CompletionRequest
- func (p *LLMProvider) Complete(ctx context.Context, req llm.CompletionRequest) (*llm.CompletionResponse, error)
- func (p *LLMProvider) CountTokens(messages []llm.Message) (int, error)
- func (p *LLMProvider) LastCall() *llm.CompletionRequest
- func (p *LLMProvider) Models() []llm.ModelInfo
- func (p *LLMProvider) Name() string
- func (p *LLMProvider) Reset()
- func (p *LLMProvider) Stream(ctx context.Context, req llm.CompletionRequest) (*llm.Stream, error)
- func (p *LLMProvider) WithResponseFn(fn func(req llm.CompletionRequest) (*llm.CompletionResponse, error)) *LLMProvider
- type Memory
- func (m *Memory) AddEntries(entries []memory.Entry)
- func (m *Memory) AddEntry(entry memory.Entry)
- func (m *Memory) Clear(ctx context.Context) error
- func (m *Memory) Delete(ctx context.Context, id string) error
- func (m *Memory) Entries() map[string]memory.Entry
- func (m *Memory) Get(ctx context.Context, id string) (*memory.Entry, error)
- func (m *Memory) Reset()
- func (m *Memory) Save(ctx context.Context, entry memory.Entry) error
- func (m *Memory) SaveBatch(ctx context.Context, entries []memory.Entry) error
- func (m *Memory) SaveCalls() []memory.Entry
- func (m *Memory) Search(ctx context.Context, query memory.SearchQuery) ([]memory.Entry, error)
- func (m *Memory) SearchCalls() []memory.SearchQuery
- func (m *Memory) Stats() memory.MemoryStats
- type MessageType
- type MockConfigProvider
- func (m *MockConfigProvider) Count() int
- func (m *MockConfigProvider) CountByNamespace(namespace string) int
- func (m *MockConfigProvider) Get(namespace, name string) (any, bool)
- func (m *MockConfigProvider) List(namespace string) []string
- func (m *MockConfigProvider) Remove(namespace, name string)
- func (m *MockConfigProvider) Reset()
- func (m *MockConfigProvider) Set(namespace, name string, value any)
- type MockEmbedder
- func (e *MockEmbedder) Dimension() int
- func (e *MockEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)
- func (e *MockEmbedder) EmbedCallCount() int
- func (e *MockEmbedder) EmbedCalls() [][]string
- func (e *MockEmbedder) EmbedOne(ctx context.Context, text string) ([]float32, error)
- type MockExecutable
- func (e *MockExecutable) AddNode(id, name string, output any, nextNode string, err error) *MockExecutable
- func (e *MockExecutable) Calls() []string
- func (e *MockExecutable) ExecuteNode(ctx context.Context, nodeID string, state map[string]any) (output any, nextNode string, err error)
- func (e *MockExecutable) GetEntryPoint() string
- func (e *MockExecutable) GetNodeName(nodeID string) string
- type MockMessage
- type MockNetwork
- func (n *MockNetwork) AgentCount() int
- func (n *MockNetwork) Broadcast(_ context.Context, from string, content any) error
- func (n *MockNetwork) ClearInbox(agentID string) error
- func (n *MockNetwork) GetAgentName(agentID string) (string, bool)
- func (n *MockNetwork) Inbox(agentID string) ([]MockMessage, error)
- func (n *MockNetwork) ListAgentIDs() []string
- func (n *MockNetwork) MessageCount() int
- func (n *MockNetwork) Messages() []MockMessage
- func (n *MockNetwork) MessagesFrom(agentID string) []MockMessage
- func (n *MockNetwork) MessagesTo(agentID string) []MockMessage
- func (n *MockNetwork) RegisterAgent(id, name string) error
- func (n *MockNetwork) Reset()
- func (n *MockNetwork) Send(_ context.Context, from, to string, content any) error
- func (n *MockNetwork) Unregister(agentID string) error
- type MockResponse
- type MockVectorStore
- func (s *MockVectorStore) Add(ctx context.Context, docs []vector.Document) error
- func (s *MockVectorStore) Clear(ctx context.Context) error
- func (s *MockVectorStore) Close() error
- func (s *MockVectorStore) Count(ctx context.Context) (int, error)
- func (s *MockVectorStore) Delete(ctx context.Context, ids []string) error
- func (s *MockVectorStore) Get(ctx context.Context, id string) (*vector.Document, error)
- func (s *MockVectorStore) Search(ctx context.Context, query []float32, k int, opts ...vector.SearchOption) ([]vector.Document, error)
- func (s *MockVectorStore) SearchCallCount() int
- func (s *MockVectorStore) SearchCalls() []searchCall
- type Retriever
- func (r *Retriever) AddDocument(doc rag.Document) *Retriever
- func (r *Retriever) AddDocuments(docs []rag.Document) *Retriever
- func (r *Retriever) Reset()
- func (r *Retriever) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)
- func (r *Retriever) RetrieveCalls() []string
- type RetrieverOption
- type Tool
- func (t *Tool) AddErrorResult(err error) *Tool
- func (t *Tool) AddResult(data any) *Tool
- func (t *Tool) CallCount() int
- func (t *Tool) Calls() []map[string]any
- func (t *Tool) Description() string
- func (t *Tool) Execute(ctx context.Context, args map[string]any) (tool.Result, error)
- func (t *Tool) LastCall() map[string]any
- func (t *Tool) Name() string
- func (t *Tool) Reset()
- func (t *Tool) Schema() *llm.Schema
- func (t *Tool) Validate(args map[string]any) error
- type ToolOption
- type VectorStoreOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SimpleDocuments ¶
SimpleDocuments 创建简单文档列表
Types ¶
type EmbedderOption ¶
type EmbedderOption func(*MockEmbedder)
EmbedderOption MockEmbedder 选项
func WithEmbedFn ¶
WithEmbedFn 自定义 embed 函数
type LLMProvider ¶
type LLMProvider struct {
// contains filtered or unexported fields
}
LLMProvider Mock LLM Provider
func NewLLMProvider ¶
func NewLLMProvider(name string) *LLMProvider
NewLLMProvider 创建 Mock LLM Provider
func SequenceProvider ¶
func SequenceProvider(responses ...string) *LLMProvider
SequenceProvider 创建按顺序返回响应的 Provider
func (*LLMProvider) AddErrorResponse ¶
func (p *LLMProvider) AddErrorResponse(err error) *LLMProvider
AddErrorResponse 添加错误响应
func (*LLMProvider) AddResponse ¶
func (p *LLMProvider) AddResponse(content string) *LLMProvider
AddResponse 添加模拟响应
func (*LLMProvider) AddToolCallResponse ¶
func (p *LLMProvider) AddToolCallResponse(toolCalls []llm.ToolCall) *LLMProvider
AddToolCallResponse 添加工具调用响应
func (*LLMProvider) Complete ¶
func (p *LLMProvider) Complete(ctx context.Context, req llm.CompletionRequest) (*llm.CompletionResponse, error)
Complete 模拟完成请求
func (*LLMProvider) CountTokens ¶
func (p *LLMProvider) CountTokens(messages []llm.Message) (int, error)
CountTokens 模拟 Token 计数
func (*LLMProvider) LastCall ¶
func (p *LLMProvider) LastCall() *llm.CompletionRequest
LastCall 返回最后一次调用
func (*LLMProvider) Stream ¶
func (p *LLMProvider) Stream(ctx context.Context, req llm.CompletionRequest) (*llm.Stream, error)
Stream 模拟流式请求
func (*LLMProvider) WithResponseFn ¶
func (p *LLMProvider) WithResponseFn(fn func(req llm.CompletionRequest) (*llm.CompletionResponse, error)) *LLMProvider
WithResponseFn 设置自定义响应函数
type Memory ¶
type Memory struct {
// contains filtered or unexported fields
}
Memory Mock Memory 实现
func (*Memory) SearchCalls ¶
func (m *Memory) SearchCalls() []memory.SearchQuery
SearchCalls 返回所有搜索调用
type MessageType ¶
type MessageType string
MessageType 消息类型(与 agent.MessageType 对应,但独立定义以避免循环导入)
const ( // MessageTypeRequest 请求消息 MessageTypeRequest MessageType = "request" // MessageTypeResponse 响应消息 MessageTypeResponse MessageType = "response" // MessageTypeBroadcast 广播消息 MessageTypeBroadcast MessageType = "broadcast" )
type MockConfigProvider ¶
type MockConfigProvider struct {
// contains filtered or unexported fields
}
MockConfigProvider 配置提供者 Mock
提供内存中的配置存储,用于测试中模拟配置系统。 使用 map[string]any 存储配置,避免对 config 包的循环依赖。 支持按命名空间分类存储配置(如 "agent"、"team"、"workflow")。
线程安全:所有方法都使用读写锁保护。
func NewMockConfigProvider ¶
func NewMockConfigProvider() *MockConfigProvider
NewMockConfigProvider 创建配置提供者 Mock
func (*MockConfigProvider) CountByNamespace ¶
func (m *MockConfigProvider) CountByNamespace(namespace string) int
CountByNamespace 返回指定命名空间下的配置数量
func (*MockConfigProvider) Get ¶
func (m *MockConfigProvider) Get(namespace, name string) (any, bool)
Get 获取配置
返回配置值和是否存在的标志。 调用方需要使用类型断言将返回值转换为目标类型。
func (*MockConfigProvider) List ¶
func (m *MockConfigProvider) List(namespace string) []string
List 列出指定命名空间下的所有配置名称
func (*MockConfigProvider) Remove ¶
func (m *MockConfigProvider) Remove(namespace, name string)
Remove 移除配置
func (*MockConfigProvider) Set ¶
func (m *MockConfigProvider) Set(namespace, name string, value any)
Set 存储配置
namespace 为配置命名空间(如 "agent"、"team"、"workflow") name 为配置名称 value 为配置值(可以是任意类型,如 *config.AgentConfig)
type MockEmbedder ¶
type MockEmbedder struct {
// contains filtered or unexported fields
}
MockEmbedder 模拟向量生成器 支持固定维度向量生成、自定义 embed 函数和错误注入
func NewMockEmbedder ¶
func NewMockEmbedder(dim int, opts ...EmbedderOption) *MockEmbedder
NewMockEmbedder 创建 Mock 向量生成器
func (*MockEmbedder) EmbedCallCount ¶
func (e *MockEmbedder) EmbedCallCount() int
EmbedCallCount 返回调用次数
func (*MockEmbedder) EmbedCalls ¶
func (e *MockEmbedder) EmbedCalls() [][]string
EmbedCalls 返回所有调用记录
type MockExecutable ¶
type MockExecutable struct {
// contains filtered or unexported fields
}
MockExecutable 模拟 Executable 接口 支持自定义节点执行结果、入口节点设置和调用追踪
func NewMockExecutable ¶
func NewMockExecutable(entryPoint string) *MockExecutable
NewMockExecutable 创建 Mock Executable
func (*MockExecutable) AddNode ¶
func (e *MockExecutable) AddNode(id, name string, output any, nextNode string, err error) *MockExecutable
AddNode 添加节点定义 output: 节点执行输出 nextNode: 下一个节点 ID(空字符串表示结束) err: 节点执行错误
func (*MockExecutable) ExecuteNode ¶
func (e *MockExecutable) ExecuteNode(ctx context.Context, nodeID string, state map[string]any) (output any, nextNode string, err error)
ExecuteNode 执行单个节点
func (*MockExecutable) GetEntryPoint ¶
func (e *MockExecutable) GetEntryPoint() string
GetEntryPoint 获取入口节点
func (*MockExecutable) GetNodeName ¶
func (e *MockExecutable) GetNodeName(nodeID string) string
GetNodeName 获取节点名称
type MockMessage ¶
type MockMessage struct {
// From 发送者 Agent ID
From string
// To 接收者 Agent ID(空字符串表示广播)
To string
// Content 消息内容
Content any
// Type 消息类型
Type MessageType
// Time 发送时间
Time time.Time
}
MockMessage 记录网络中传递的消息
type MockNetwork ¶
type MockNetwork struct {
// contains filtered or unexported fields
}
MockNetwork Agent 网络通信 Mock
提供简化的网络通信模拟能力,不需要启动真正的消息路由器。 使用字符串 ID 标识 Agent,不依赖 agent 包以避免循环导入。 所有消息操作都会被记录到 messages 列表中,供测试断言使用。
线程安全:所有方法都使用读写锁保护。
func (*MockNetwork) ClearInbox ¶
func (n *MockNetwork) ClearInbox(agentID string) error
ClearInbox 清空指定 Agent 的收件箱
func (*MockNetwork) GetAgentName ¶
func (n *MockNetwork) GetAgentName(agentID string) (string, bool)
GetAgentName 获取已注册 Agent 的名称
func (*MockNetwork) Inbox ¶
func (n *MockNetwork) Inbox(agentID string) ([]MockMessage, error)
Inbox 获取指定 Agent 的收件箱消息
func (*MockNetwork) ListAgentIDs ¶
func (n *MockNetwork) ListAgentIDs() []string
ListAgentIDs 列出所有已注册的 Agent ID
func (*MockNetwork) MessagesFrom ¶
func (n *MockNetwork) MessagesFrom(agentID string) []MockMessage
MessagesFrom 返回指定发送者的消息
func (*MockNetwork) MessagesTo ¶
func (n *MockNetwork) MessagesTo(agentID string) []MockMessage
MessagesTo 返回发送给指定接收者的消息
func (*MockNetwork) RegisterAgent ¶
func (n *MockNetwork) RegisterAgent(id, name string) error
RegisterAgent 注册 Agent 到网络(使用字符串 ID 和名称)
func (*MockNetwork) Unregister ¶
func (n *MockNetwork) Unregister(agentID string) error
Unregister 从网络注销 Agent
type MockResponse ¶
MockResponse 模拟响应
type MockVectorStore ¶
type MockVectorStore struct {
// contains filtered or unexported fields
}
MockVectorStore 模拟向量存储 支持内存存储、搜索结果注入、错误注入和调用追踪
func NewMockVectorStore ¶
func NewMockVectorStore(opts ...VectorStoreOption) *MockVectorStore
NewMockVectorStore 创建 Mock 向量存储
func (*MockVectorStore) Clear ¶
func (s *MockVectorStore) Clear(ctx context.Context) error
Clear 清空存储
func (*MockVectorStore) Count ¶
func (s *MockVectorStore) Count(ctx context.Context) (int, error)
Count 返回文档数量
func (*MockVectorStore) Delete ¶
func (s *MockVectorStore) Delete(ctx context.Context, ids []string) error
Delete 删除文档
func (*MockVectorStore) Search ¶
func (s *MockVectorStore) Search(ctx context.Context, query []float32, k int, opts ...vector.SearchOption) ([]vector.Document, error)
Search 搜索文档
func (*MockVectorStore) SearchCallCount ¶
func (s *MockVectorStore) SearchCallCount() int
SearchCallCount 返回搜索调用次数
func (*MockVectorStore) SearchCalls ¶
func (s *MockVectorStore) SearchCalls() []searchCall
SearchCalls 返回搜索调用记录
type Retriever ¶
type Retriever struct {
// contains filtered or unexported fields
}
Retriever Mock Retriever 实现
func NewRetriever ¶
func NewRetriever(opts ...RetrieverOption) *Retriever
NewRetriever 创建 Mock Retriever
func (*Retriever) AddDocument ¶
AddDocument 添加文档
func (*Retriever) AddDocuments ¶
AddDocuments 批量添加文档
func (*Retriever) Retrieve ¶
func (r *Retriever) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)
Retrieve 检索文档
func (*Retriever) RetrieveCalls ¶
RetrieveCalls 返回所有检索调用
type RetrieverOption ¶
type RetrieverOption func(*Retriever)
RetrieverOption Retriever 选项
func WithRetrieveFn ¶
func WithRetrieveFn(fn func(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)) RetrieverOption
WithRetrieveFn 设置自定义检索函数
type Tool ¶
type Tool struct {
// contains filtered or unexported fields
}
Tool Mock Tool 实现
type ToolOption ¶
type ToolOption func(*Tool)
ToolOption Tool 选项
func WithToolDescription ¶
func WithToolDescription(desc string) ToolOption
WithToolDescription 设置描述
func WithToolExecuteFn ¶
func WithToolExecuteFn(fn func(ctx context.Context, args map[string]any) (tool.Result, error)) ToolOption
WithToolExecuteFn 设置执行函数
type VectorStoreOption ¶
type VectorStoreOption func(*MockVectorStore)
VectorStoreOption MockVectorStore 选项
func WithSearchFn ¶
func WithSearchFn(fn func(ctx context.Context, query []float32, k int, opts ...vector.SearchOption) ([]vector.Document, error)) VectorStoreOption
WithSearchFn 自定义搜索函数
func WithSearchResults ¶
func WithSearchResults(docs []vector.Document) VectorStoreOption
WithSearchResults 预设搜索结果