Documentation
¶
Overview ¶
Package evaluate 提供 AI Agent 系统的评估框架
Evaluate 用于评估 Agent、RAG、LLM 等系统的质量:
- Evaluator: 评估器接口
- Dataset: 评估数据集
- Runner: 评估运行器
- Reporter: 评估报告生成器
内置评估指标:
- Relevance: 检索相关性
- Faithfulness: 回答忠实度
- Correctness: 回答正确性
- Latency: 延迟指标
- Cost: 成本指标
Package evaluate 提供 AI Agent 系统的评估框架 ¶
Package evaluate 提供 AI Agent 系统的评估框架
Index ¶
- func GenerateReport(report *EvalReport, format string, w io.Writer) error
- func QuickEval(ctx context.Context, evaluators []Evaluator, input EvalInput) (map[string]*EvalResult, error)
- type ConsoleReporter
- type CostInfo
- type CustomEvaluator
- type CustomOption
- type Dataset
- type DatasetBuilder
- func (b *DatasetBuilder) AddSample(sample Sample) *DatasetBuilder
- func (b *DatasetBuilder) AddSamples(samples []Sample) *DatasetBuilder
- func (b *DatasetBuilder) Build() *Dataset
- func (b *DatasetBuilder) WithDescription(desc string) *DatasetBuilder
- func (b *DatasetBuilder) WithMetadata(metadata map[string]any) *DatasetBuilder
- type EvalConfig
- type EvalInput
- type EvalReport
- type EvalResult
- type Evaluator
- type HTMLReporter
- type JSONReporter
- type LLMJudge
- type LLMJudgeFunc
- type MarkdownReporter
- type MetricSummary
- type Reporter
- type Runner
- func (r *Runner) AddEvaluator(evaluator Evaluator) *Runner
- func (r *Runner) AddEvaluators(evaluators ...Evaluator) *Runner
- func (r *Runner) EvaluateBatch(ctx context.Context, inputs []EvalInput) ([]map[string]*EvalResult, error)
- func (r *Runner) EvaluateDataset(ctx context.Context, dataset *Dataset, system SystemUnderTest) (*EvalReport, error)
- func (r *Runner) EvaluateSingle(ctx context.Context, input EvalInput) (map[string]*EvalResult, error)
- type Sample
- type SampleResult
- type ScoreLevel
- type SystemFunc
- type SystemResponse
- type SystemUnderTest
- type Thresholds
- type TimingInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateReport ¶
func GenerateReport(report *EvalReport, format string, w io.Writer) error
GenerateReport 生成报告的便捷函数
Types ¶
type ConsoleReporter ¶
type ConsoleReporter struct {
// contains filtered or unexported fields
}
ConsoleReporter 控制台格式报告生成器
func NewConsoleReporter ¶
func NewConsoleReporter(colored bool) *ConsoleReporter
NewConsoleReporter 创建控制台报告生成器
func (*ConsoleReporter) Generate ¶
func (r *ConsoleReporter) Generate(report *EvalReport, w io.Writer) error
Generate 生成控制台报告
type CostInfo ¶
type CostInfo struct {
InputTokens int `json:"input_tokens"`
OutputTokens int `json:"output_tokens"`
TotalTokens int `json:"total_tokens"`
Cost float64 `json:"cost"` // 美元
}
CostInfo 成本信息
type CustomEvaluator ¶
type CustomEvaluator struct {
// contains filtered or unexported fields
}
CustomEvaluator 自定义评估器
允许用户通过函数创建评估器,无需实现完整接口。 适用于快速原型验证或简单的评估逻辑。
使用示例:
eval := NewCustomEvaluator("length_check", "检查响应长度",
func(ctx context.Context, input EvalInput) (*EvalResult, error) {
score := float64(len(input.Response)) / 1000.0
if score > 1.0 {
score = 1.0
}
return &EvalResult{
Name: "length_check",
Score: score,
}, nil
},
)
func NewCustomEvaluator ¶
func NewCustomEvaluator(name, description string, fn func(ctx context.Context, input EvalInput) (*EvalResult, error), opts ...CustomOption) *CustomEvaluator
NewCustomEvaluator 创建自定义评估器
参数:
- name: 评估器名称,用于标识和报告
- description: 评估器描述
- fn: 评估函数,接收 EvalInput 返回 EvalResult
- opts: 可选配置项
如果 name 为空或 fn 为 nil,将会 panic。
func (*CustomEvaluator) Description ¶
func (c *CustomEvaluator) Description() string
Description 返回评估器描述
func (*CustomEvaluator) Evaluate ¶
func (c *CustomEvaluator) Evaluate(ctx context.Context, input EvalInput) (*EvalResult, error)
Evaluate 执行自定义评估
委托给用户提供的评估函数执行。 如果评估函数返回的结果中 Name 为空,会自动填充为评估器名称。
func (*CustomEvaluator) RequiresLLM ¶
func (c *CustomEvaluator) RequiresLLM() bool
RequiresLLM 返回是否需要 LLM
type Dataset ¶
type Dataset struct {
// Name 数据集名称
Name string `json:"name"`
// Description 数据集描述
Description string `json:"description,omitempty"`
// Samples 样本列表
Samples []Sample `json:"samples"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
// CreatedAt 创建时间
CreatedAt time.Time `json:"created_at"`
}
Dataset 评估数据集
type DatasetBuilder ¶
type DatasetBuilder struct {
// contains filtered or unexported fields
}
DatasetBuilder 数据集构建器
func NewDatasetBuilder ¶
func NewDatasetBuilder(name string) *DatasetBuilder
NewDatasetBuilder 创建数据集构建器
func (*DatasetBuilder) AddSample ¶
func (b *DatasetBuilder) AddSample(sample Sample) *DatasetBuilder
AddSample 添加样本
func (*DatasetBuilder) AddSamples ¶
func (b *DatasetBuilder) AddSamples(samples []Sample) *DatasetBuilder
AddSamples 批量添加样本
func (*DatasetBuilder) WithDescription ¶
func (b *DatasetBuilder) WithDescription(desc string) *DatasetBuilder
WithDescription 设置描述
func (*DatasetBuilder) WithMetadata ¶
func (b *DatasetBuilder) WithMetadata(metadata map[string]any) *DatasetBuilder
WithMetadata 设置元数据
type EvalConfig ¶
type EvalConfig struct {
// Evaluators 要使用的评估器列表
Evaluators []Evaluator
// Concurrency 并发数
Concurrency int
// Timeout 单次评估超时
Timeout time.Duration
// StopOnError 遇到错误是否停止
StopOnError bool
// Verbose 是否输出详细日志
Verbose bool
}
EvalConfig 评估配置
type EvalInput ¶
type EvalInput struct {
// Query 用户查询
Query string `json:"query"`
// Response 系统响应
Response string `json:"response"`
// Context 检索上下文(RAG 场景)
Context []string `json:"context,omitempty"`
// Reference 参考答案(用于正确性评估)
Reference string `json:"reference,omitempty"`
// Metadata 额外元数据
Metadata map[string]any `json:"metadata,omitempty"`
// Timing 时间信息
Timing *TimingInfo `json:"timing,omitempty"`
// Cost 成本信息
Cost *CostInfo `json:"cost,omitempty"`
}
EvalInput 评估输入
type EvalReport ¶
type EvalReport struct {
// Name 报告名称
Name string `json:"name"`
// Dataset 数据集名称
Dataset string `json:"dataset"`
// StartTime 开始时间
StartTime time.Time `json:"start_time"`
// EndTime 结束时间
EndTime time.Time `json:"end_time"`
// Duration 总耗时
Duration time.Duration `json:"duration"`
// TotalSamples 样本总数
TotalSamples int `json:"total_samples"`
// SuccessSamples 成功样本数
SuccessSamples int `json:"success_samples"`
// FailedSamples 失败样本数
FailedSamples int `json:"failed_samples"`
// Summary 汇总统计
Summary map[string]*MetricSummary `json:"summary"`
// Results 详细结果
Results []SampleResult `json:"results,omitempty"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
}
EvalReport 评估报告
type EvalResult ¶
type EvalResult struct {
// Name 评估器名称
Name string `json:"name"`
// Score 评分(0-1)
Score float64 `json:"score"`
// Passed 是否通过(可选)
Passed *bool `json:"passed,omitempty"`
// Reason 评分理由
Reason string `json:"reason,omitempty"`
// Details 详细信息
Details map[string]any `json:"details,omitempty"`
// SubScores 子分数(用于复合指标)
SubScores map[string]float64 `json:"sub_scores,omitempty"`
// Error 错误信息
Error string `json:"error,omitempty"`
// Duration 评估耗时
Duration time.Duration `json:"duration"`
}
EvalResult 评估结果
type Evaluator ¶
type Evaluator interface {
// Name 返回评估器名称
Name() string
// Description 返回评估器描述
Description() string
// Evaluate 执行评估
Evaluate(ctx context.Context, input EvalInput) (*EvalResult, error)
// RequiresLLM 返回是否需要 LLM 进行评估
RequiresLLM() bool
}
Evaluator 是评估器接口
type HTMLReporter ¶
type HTMLReporter struct {
// contains filtered or unexported fields
}
HTMLReporter HTML 格式报告生成器
func NewHTMLReporter ¶
func NewHTMLReporter(includeDetails bool) *HTMLReporter
NewHTMLReporter 创建 HTML 报告生成器
func (*HTMLReporter) Generate ¶
func (r *HTMLReporter) Generate(report *EvalReport, w io.Writer) error
Generate 生成 HTML 报告
type JSONReporter ¶
type JSONReporter struct {
// contains filtered or unexported fields
}
JSONReporter JSON 格式报告生成器
func NewJSONReporter ¶
func NewJSONReporter(pretty bool) *JSONReporter
NewJSONReporter 创建 JSON 报告生成器
func (*JSONReporter) Generate ¶
func (r *JSONReporter) Generate(report *EvalReport, w io.Writer) error
Generate 生成 JSON 报告
type LLMJudge ¶
type LLMJudge interface {
// Judge 使用 LLM 进行评判
Judge(ctx context.Context, prompt string) (string, error)
}
LLMJudge LLM 评判接口 用于需要 LLM 进行评估的场景
type LLMJudgeFunc ¶
LLMJudgeFunc 函数式 LLM 评判
type MarkdownReporter ¶
type MarkdownReporter struct {
// contains filtered or unexported fields
}
MarkdownReporter Markdown 格式报告生成器
func NewMarkdownReporter ¶
func NewMarkdownReporter(includeDetails bool) *MarkdownReporter
NewMarkdownReporter 创建 Markdown 报告生成器
func (*MarkdownReporter) Generate ¶
func (r *MarkdownReporter) Generate(report *EvalReport, w io.Writer) error
Generate 生成 Markdown 报告
type MetricSummary ¶
type MetricSummary struct {
// Name 指标名称
Name string `json:"name"`
// Mean 平均分
Mean float64 `json:"mean"`
// Min 最小分
Min float64 `json:"min"`
// Max 最大分
Max float64 `json:"max"`
// Median 中位数
Median float64 `json:"median"`
// StdDev 标准差
StdDev float64 `json:"std_dev"`
// PassRate 通过率(如适用)
PassRate *float64 `json:"pass_rate,omitempty"`
// Distribution 分数分布
Distribution map[string]int `json:"distribution,omitempty"`
// Count 样本数
Count int `json:"count"`
}
MetricSummary 指标汇总
type Reporter ¶
type Reporter interface {
// Generate 生成报告
Generate(report *EvalReport, w io.Writer) error
// Format 返回报告格式
Format() string
}
Reporter 报告生成器接口
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner 评估运行器
func (*Runner) AddEvaluator ¶
AddEvaluator 添加评估器
func (*Runner) AddEvaluators ¶
AddEvaluators 批量添加评估器
func (*Runner) EvaluateBatch ¶
func (r *Runner) EvaluateBatch(ctx context.Context, inputs []EvalInput) ([]map[string]*EvalResult, error)
EvaluateBatch 批量评估
func (*Runner) EvaluateDataset ¶
func (r *Runner) EvaluateDataset(ctx context.Context, dataset *Dataset, system SystemUnderTest) (*EvalReport, error)
EvaluateDataset 评估整个数据集
func (*Runner) EvaluateSingle ¶
func (r *Runner) EvaluateSingle(ctx context.Context, input EvalInput) (map[string]*EvalResult, error)
EvaluateSingle 评估单个输入
type Sample ¶
type Sample struct {
// ID 样本 ID
ID string `json:"id"`
// Query 查询
Query string `json:"query"`
// Reference 参考答案(可选)
Reference string `json:"reference,omitempty"`
// Context 参考上下文(可选)
Context []string `json:"context,omitempty"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
// Tags 标签
Tags []string `json:"tags,omitempty"`
}
Sample 评估样本
type SampleResult ¶
type SampleResult struct {
// SampleID 样本 ID
SampleID string `json:"sample_id"`
// Query 查询
Query string `json:"query"`
// Response 响应
Response string `json:"response,omitempty"`
// Results 各评估器的结果
Results map[string]*EvalResult `json:"results"`
// Error 错误信息
Error string `json:"error,omitempty"`
// Duration 耗时
Duration time.Duration `json:"duration"`
}
SampleResult 样本评估结果
type ScoreLevel ¶
type ScoreLevel string
ScoreLevel 分数等级
const ( ScoreLevelExcellent ScoreLevel = "excellent" // 0.8-1.0 ScoreLevelGood ScoreLevel = "good" // 0.6-0.8 ScoreLevelFair ScoreLevel = "fair" // 0.4-0.6 ScoreLevelPoor ScoreLevel = "poor" // 0.2-0.4 ScoreLevelBad ScoreLevel = "bad" // 0.0-0.2 )
type SystemFunc ¶
type SystemFunc func(ctx context.Context, query string) (*SystemResponse, error)
SystemFunc 函数式被测系统
func (SystemFunc) Run ¶
func (f SystemFunc) Run(ctx context.Context, query string) (*SystemResponse, error)
Run 实现 SystemUnderTest 接口
type SystemResponse ¶
type SystemResponse struct {
Response string
Context []string
Timing *TimingInfo
Cost *CostInfo
Metadata map[string]any
}
SystemResponse 系统响应
type SystemUnderTest ¶
type SystemUnderTest interface {
// Run 运行系统并返回响应
Run(ctx context.Context, query string) (*SystemResponse, error)
}
SystemUnderTest 被测系统接口