mock

package
v0.5.12 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func SimpleDocuments

func SimpleDocuments(contents ...string) []rag.Document

SimpleDocuments 创建简单文档列表

Types

type EmbedderOption

type EmbedderOption func(*MockEmbedder)

EmbedderOption MockEmbedder 选项

func WithEmbedError

func WithEmbedError(err error) EmbedderOption

WithEmbedError 预设 embed 错误

func WithEmbedFn

func WithEmbedFn(fn func(ctx context.Context, texts []string) ([][]float32, error)) EmbedderOption

WithEmbedFn 自定义 embed 函数

type LLMProvider

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

LLMProvider Mock LLM Provider

func EchoProvider

func EchoProvider() *LLMProvider

EchoProvider 创建回声 Provider(返回输入作为输出)

func ErrorProvider

func ErrorProvider(err error) *LLMProvider

ErrorProvider 创建总是返回错误的 Provider

func FixedProvider

func FixedProvider(response string) *LLMProvider

FixedProvider 创建固定响应 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) CallCount

func (p *LLMProvider) CallCount() int

CallCount 返回调用次数

func (*LLMProvider) Calls

func (p *LLMProvider) Calls() []llm.CompletionRequest

Calls 返回所有调用记录

func (*LLMProvider) Complete

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) Models

func (p *LLMProvider) Models() []llm.ModelInfo

Models 返回支持的模型列表

func (*LLMProvider) Name

func (p *LLMProvider) Name() string

Name 返回 Provider 名称

func (*LLMProvider) Reset

func (p *LLMProvider) Reset()

Reset 重置状态

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 NewMemory

func NewMemory() *Memory

NewMemory 创建 Mock Memory

func (*Memory) AddEntries

func (m *Memory) AddEntries(entries []memory.Entry)

AddEntries 批量添加条目

func (*Memory) AddEntry

func (m *Memory) AddEntry(entry memory.Entry)

AddEntry 直接添加条目(用于测试准备)

func (*Memory) Clear

func (m *Memory) Clear(ctx context.Context) error

Clear 清空记忆

func (*Memory) Delete

func (m *Memory) Delete(ctx context.Context, id string) error

Delete 删除记忆条目

func (*Memory) Entries

func (m *Memory) Entries() map[string]memory.Entry

Entries 返回所有条目

func (*Memory) Get

func (m *Memory) Get(ctx context.Context, id string) (*memory.Entry, error)

Get 获取记忆条目

func (*Memory) Reset

func (m *Memory) Reset()

Reset 重置状态

func (*Memory) Save

func (m *Memory) Save(ctx context.Context, entry memory.Entry) error

Save 保存记忆条目

func (*Memory) SaveBatch

func (m *Memory) SaveBatch(ctx context.Context, entries []memory.Entry) error

SaveBatch 批量保存

func (*Memory) SaveCalls

func (m *Memory) SaveCalls() []memory.Entry

SaveCalls 返回所有保存调用

func (*Memory) Search

func (m *Memory) Search(ctx context.Context, query memory.SearchQuery) ([]memory.Entry, error)

Search 搜索记忆

func (*Memory) SearchCalls

func (m *Memory) SearchCalls() []memory.SearchQuery

SearchCalls 返回所有搜索调用

func (*Memory) Stats

func (m *Memory) Stats() memory.MemoryStats

Stats 返回统计信息

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) Count

func (m *MockConfigProvider) Count() int

Count 返回配置总数

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) Reset

func (m *MockConfigProvider) Reset()

Reset 重置所有配置

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 FixedEmbedder

func FixedEmbedder(dim int) *MockEmbedder

FixedEmbedder 创建返回固定值向量的生成器

func NewMockEmbedder

func NewMockEmbedder(dim int, opts ...EmbedderOption) *MockEmbedder

NewMockEmbedder 创建 Mock 向量生成器

func (*MockEmbedder) Dimension

func (e *MockEmbedder) Dimension() int

Dimension 返回向量维度

func (*MockEmbedder) Embed

func (e *MockEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 将文本转为向量

func (*MockEmbedder) EmbedCallCount

func (e *MockEmbedder) EmbedCallCount() int

EmbedCallCount 返回调用次数

func (*MockEmbedder) EmbedCalls

func (e *MockEmbedder) EmbedCalls() [][]string

EmbedCalls 返回所有调用记录

func (*MockEmbedder) EmbedOne

func (e *MockEmbedder) EmbedOne(ctx context.Context, text string) ([]float32, error)

EmbedOne 将单个文本转为向量

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) Calls

func (e *MockExecutable) Calls() []string

Calls 返回执行调用记录

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 NewMockNetwork

func NewMockNetwork() *MockNetwork

NewMockNetwork 创建 Mock 网络

func (*MockNetwork) AgentCount

func (n *MockNetwork) AgentCount() int

AgentCount 返回已注册的 Agent 数量

func (*MockNetwork) Broadcast

func (n *MockNetwork) Broadcast(_ context.Context, from string, content any) error

Broadcast 广播消息给所有 Agent(除发送者自身外)

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) MessageCount

func (n *MockNetwork) MessageCount() int

MessageCount 返回已记录的消息数

func (*MockNetwork) Messages

func (n *MockNetwork) Messages() []MockMessage

Messages 返回所有已记录的消息

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) Reset

func (n *MockNetwork) Reset()

Reset 重置网络状态(清空所有消息记录和收件箱)

func (*MockNetwork) Send

func (n *MockNetwork) Send(_ context.Context, from, to string, content any) error

Send 发送消息给指定 Agent

消息会被记录到 messages 列表中,同时投递到目标 Agent 的收件箱。

func (*MockNetwork) Unregister

func (n *MockNetwork) Unregister(agentID string) error

Unregister 从网络注销 Agent

type MockResponse

type MockResponse struct {
	Content   string
	ToolCalls []llm.ToolCall
	Usage     llm.Usage
	Error     error
}

MockResponse 模拟响应

type MockVectorStore

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

MockVectorStore 模拟向量存储 支持内存存储、搜索结果注入、错误注入和调用追踪

func NewMockVectorStore

func NewMockVectorStore(opts ...VectorStoreOption) *MockVectorStore

NewMockVectorStore 创建 Mock 向量存储

func (*MockVectorStore) Add

func (s *MockVectorStore) Add(ctx context.Context, docs []vector.Document) error

Add 添加文档

func (*MockVectorStore) Clear

func (s *MockVectorStore) Clear(ctx context.Context) error

Clear 清空存储

func (*MockVectorStore) Close

func (s *MockVectorStore) Close() error

Close 关闭存储

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) Get

Get 获取文档

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 EmptyRetriever

func EmptyRetriever() *Retriever

EmptyRetriever 创建空检索器(总是返回空结果)

func ErrorRetriever

func ErrorRetriever(err error) *Retriever

ErrorRetriever 创建总是返回错误的检索器

func FixedRetriever

func FixedRetriever(docs []rag.Document) *Retriever

FixedRetriever 创建固定结果检索器

func NewRetriever

func NewRetriever(opts ...RetrieverOption) *Retriever

NewRetriever 创建 Mock Retriever

func (*Retriever) AddDocument

func (r *Retriever) AddDocument(doc rag.Document) *Retriever

AddDocument 添加文档

func (*Retriever) AddDocuments

func (r *Retriever) AddDocuments(docs []rag.Document) *Retriever

AddDocuments 批量添加文档

func (*Retriever) Reset

func (r *Retriever) Reset()

Reset 重置状态

func (*Retriever) Retrieve

func (r *Retriever) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)

Retrieve 检索文档

func (*Retriever) RetrieveCalls

func (r *Retriever) RetrieveCalls() []string

RetrieveCalls 返回所有检索调用

type RetrieverOption

type RetrieverOption func(*Retriever)

RetrieverOption Retriever 选项

func WithDocuments

func WithDocuments(docs []rag.Document) RetrieverOption

WithDocuments 设置文档列表

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 实现

func CalculatorTool

func CalculatorTool() *Tool

CalculatorTool 创建简单计算器工具

func EchoTool

func EchoTool() *Tool

EchoTool 创建回声工具(返回输入作为输出)

func ErrorTool

func ErrorTool(name string, err error) *Tool

ErrorTool 创建总是返回错误的工具

func FixedTool

func FixedTool(name string, result any) *Tool

FixedTool 创建固定结果工具

func NewTool

func NewTool(name string, opts ...ToolOption) *Tool

NewTool 创建 Mock Tool

func SearchTool

func SearchTool(results []string) *Tool

SearchTool 创建模拟搜索工具

func (*Tool) AddErrorResult

func (t *Tool) AddErrorResult(err error) *Tool

AddErrorResult 添加错误结果

func (*Tool) AddResult

func (t *Tool) AddResult(data any) *Tool

AddResult 添加预定义结果

func (*Tool) CallCount

func (t *Tool) CallCount() int

CallCount 返回调用次数

func (*Tool) Calls

func (t *Tool) Calls() []map[string]any

Calls 返回所有调用记录

func (*Tool) Description

func (t *Tool) Description() string

Description 返回工具描述

func (*Tool) Execute

func (t *Tool) Execute(ctx context.Context, args map[string]any) (tool.Result, error)

Execute 执行工具

func (*Tool) LastCall

func (t *Tool) LastCall() map[string]any

LastCall 返回最后一次调用

func (*Tool) Name

func (t *Tool) Name() string

Name 返回工具名称

func (*Tool) Reset

func (t *Tool) Reset()

Reset 重置状态

func (*Tool) Schema

func (t *Tool) Schema() *llm.Schema

Schema 返回工具 Schema

func (*Tool) Validate

func (t *Tool) Validate(args map[string]any) error

Validate 验证参数

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 设置执行函数

func WithToolSchema

func WithToolSchema(s *llm.Schema) ToolOption

WithToolSchema 设置 Schema

type VectorStoreOption

type VectorStoreOption func(*MockVectorStore)

VectorStoreOption MockVectorStore 选项

func WithSearchError

func WithSearchError(err error) VectorStoreOption

WithSearchError 预设搜索错误

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 预设搜索结果

Jump to

Keyboard shortcuts

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