observability

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConversationTrace

type ConversationTrace struct {
	ID        string         `json:"id"`
	RunID     string         `json:"run_id"`
	Turns     []*TurnTrace   `json:"turns"`
	StartTime time.Time      `json:"start_time"`
	EndTime   time.Time      `json:"end_time,omitempty"`
	Metadata  map[string]any `json:"metadata,omitempty"`
}

ConversationTrace 表示追踪的对话.

type ConversationTracer

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

ConversationTracer 追踪多回合对话.

func NewConversationTracer

func NewConversationTracer(tracer *Tracer) *ConversationTracer

NewConversationTracer 创建新的对话追踪器.

func (*ConversationTracer) EndConversation

func (c *ConversationTracer) EndConversation(ctx context.Context, convID string) error

EndConversation 结束对话追踪.

func (*ConversationTracer) ExportJSON

func (c *ConversationTracer) ExportJSON(convID string) ([]byte, error)

ExportJSON 将对话追踪导出为 JSON.

func (*ConversationTracer) GetConversation

func (c *ConversationTracer) GetConversation(convID string) (*ConversationTrace, bool)

GetConversation 获取对话追踪.

func (*ConversationTracer) StartConversation

func (c *ConversationTracer) StartConversation(ctx context.Context, name string) (context.Context, *ConversationTrace)

StartConversation 开始追踪对话.

func (*ConversationTracer) TraceTurn

func (c *ConversationTracer) TraceTurn(ctx context.Context, userInput string, fn func() (string, TokenUsage, error)) (*TurnTrace, error)

TraceTurn 追踪对话的一个回合.

type CostCalculator

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

CostCalculator 成本计算器

func NewCostCalculator

func NewCostCalculator() *CostCalculator

NewCostCalculator 创建成本计算器

func (*CostCalculator) Calculate

func (c *CostCalculator) Calculate(provider, model string, tokensInput, tokensOutput int) float64

Calculate 计算成本

func (*CostCalculator) GetPrice

func (c *CostCalculator) GetPrice(provider, model string) *ModelPrice

GetPrice 获取模型价格

func (*CostCalculator) SetPrice

func (c *CostCalculator) SetPrice(provider, model string, priceInput, priceOutput float64)

SetPrice 设置模型价格

func (*CostCalculator) UpdatePrices

func (c *CostCalculator) UpdatePrices(prices []ModelPrice)

UpdatePrices 批量更新价格(从配置/数据库)

type CostSummary

type CostSummary struct {
	TotalCost       float64
	TotalTokens     int
	TokensInput     int
	TokensOutput    int
	RequestCount    int
	AvgCostPerReq   float64
	AvgTokensPerReq float64
}

CostSummary 成本汇总

type CostTracker

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

CostTracker 成本追踪器(用于会话级别的成本统计)

func NewCostTracker

func NewCostTracker(calculator *CostCalculator) *CostTracker

NewCostTracker 创建成本追踪器

func (*CostTracker) Reset

func (t *CostTracker) Reset()

Reset 重置统计

func (*CostTracker) Summary

func (t *CostTracker) Summary() CostSummary

Summary 获取成本汇总

func (*CostTracker) Track

func (t *CostTracker) Track(provider, model string, tokensInput, tokensOutput int) float64

Track 追踪一次请求的成本

type Metrics

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

Metrics LLM 指标收集器

func NewMetrics

func NewMetrics() (*Metrics, error)

NewMetrics 创建指标收集器

func (*Metrics) EndRequest

func (m *Metrics) EndRequest(ctx context.Context, span trace.Span, req RequestAttrs, resp ResponseAttrs)

EndRequest 结束请求追踪

func (*Metrics) RecordCacheMiss

func (m *Metrics) RecordCacheMiss(ctx context.Context, provider, model string)

RecordCacheMiss 记录缓存未命中

func (*Metrics) RecordToolCall

func (m *Metrics) RecordToolCall(ctx context.Context, toolName string, duration time.Duration, success bool)

RecordToolCall 记录工具调用

func (*Metrics) StartRequest

func (m *Metrics) StartRequest(ctx context.Context, attrs RequestAttrs) (context.Context, trace.Span)

StartRequest 开始请求追踪

func (*Metrics) Tracer

func (m *Metrics) Tracer() trace.Tracer

Tracer 获取 Tracer

type ModelPrice

type ModelPrice struct {
	Provider    string
	Model       string
	PriceInput  float64 // USD per 1K tokens
	PriceOutput float64 // USD per 1K tokens
}

ModelPrice 模型价格

type RequestAttrs

type RequestAttrs struct {
	Provider string
	Model    string
	TenantID string
	UserID   string
	Feature  string
	TraceID  string
}

RequestAttrs 请求属性

type ResponseAttrs

type ResponseAttrs struct {
	Status           string
	ErrorCode        string
	TokensPrompt     int
	TokensCompletion int
	Cost             float64
	Duration         time.Duration
	Cached           bool
	Fallback         bool
	FallbackLevel    int
}

ResponseAttrs 响应属性

type Run

type Run struct {
	ID        string         `json:"id"`
	Name      string         `json:"name"`
	Traces    []*Trace       `json:"traces"`
	StartTime time.Time      `json:"start_time"`
	EndTime   time.Time      `json:"end_time,omitempty"`
	Status    string         `json:"status"`
	Metadata  map[string]any `json:"metadata,omitempty"`
	Tokens    TokenUsage     `json:"tokens"`
	Cost      float64        `json:"cost"`
}

Run 表示一个完整的执行运行.

type TokenUsage

type TokenUsage struct {
	Prompt     int `json:"prompt"`
	Completion int `json:"completion"`
	Total      int `json:"total"`
}

TokenUsage 追踪 Token 消耗.

type ToolCall

type ToolCall struct {
	Name     string        `json:"name"`
	Input    any           `json:"input"`
	Output   any           `json:"output"`
	Duration time.Duration `json:"duration"`
	Error    string        `json:"error,omitempty"`
}

ToolCall 表示回合内的工具调用.

type Trace

type Trace struct {
	ID        string         `json:"id"`
	ParentID  string         `json:"parent_id,omitempty"`
	RunID     string         `json:"run_id"`
	Type      TraceType      `json:"type"`
	Name      string         `json:"name"`
	Input     any            `json:"input"`
	Output    any            `json:"output,omitempty"`
	Error     string         `json:"error,omitempty"`
	StartTime time.Time      `json:"start_time"`
	EndTime   time.Time      `json:"end_time,omitempty"`
	Duration  time.Duration  `json:"duration,omitempty"`
	Metadata  map[string]any `json:"metadata,omitempty"`
	Tags      []string       `json:"tags,omitempty"`
	Feedback  *TraceFeedback `json:"feedback,omitempty"`
}

Trace 表示一个追踪条目.

type TraceExporter

type TraceExporter interface {
	Export(ctx context.Context, run *Run) error
	ExportTrace(ctx context.Context, trace *Trace) error
}

TraceExporter 向外部系统导出追踪.

type TraceFeedback

type TraceFeedback struct {
	Score   float64 `json:"score"`
	Comment string  `json:"comment,omitempty"`
	UserID  string  `json:"user_id,omitempty"`
}

TraceFeedback 表示用户对追踪的反馈.

type TraceType

type TraceType string

TraceType 定义追踪的类型.

const (
	TraceTypeLLM       TraceType = "llm"
	TraceTypeTool      TraceType = "tool"
	TraceTypeChain     TraceType = "chain"
	TraceTypeAgent     TraceType = "agent"
	TraceTypeRetriever TraceType = "retriever"
)

type Tracer

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

Tracer 提供追踪能力.

func NewTracer

func NewTracer(config TracerConfig, otelTracer oteltrace.Tracer, logger *zap.Logger) *Tracer

NewTracer 创建新的追踪器.

func (*Tracer) AddFeedback

func (t *Tracer) AddFeedback(traceID string, feedback TraceFeedback) error

AddFeedback 为追踪添加反馈.

func (*Tracer) EndRun

func (t *Tracer) EndRun(ctx context.Context, runID string, status string) error

EndRun 结束追踪运行.

func (*Tracer) EndTrace

func (t *Tracer) EndTrace(ctx context.Context, traceID string, output any, err error)

EndTrace 结束一个追踪.

func (*Tracer) GetRun

func (t *Tracer) GetRun(runID string) (*Run, bool)

GetRun 根据 ID 获取运行.

func (*Tracer) GetTrace

func (t *Tracer) GetTrace(traceID string) (*Trace, bool)

GetTrace 根据 ID 获取追踪.

func (*Tracer) StartRun

func (t *Tracer) StartRun(ctx context.Context, name string) (context.Context, *Run)

StartRun 开始新的追踪运行.

func (*Tracer) StartTrace

func (t *Tracer) StartTrace(ctx context.Context, traceType TraceType, name string, input any) (context.Context, *Trace)

StartTrace 在运行中开始新的追踪.

func (*Tracer) TraceLLMCall

func (t *Tracer) TraceLLMCall(ctx context.Context, model string, input any, fn func() (any, error)) (any, error)

TraceLLMCall 追踪一次 LLM 调用.

func (*Tracer) TraceToolCall

func (t *Tracer) TraceToolCall(ctx context.Context, toolName string, input any, fn func() (any, error)) (any, error)

TraceToolCall 追踪一次工具调用.

type TracerConfig

type TracerConfig struct {
	ServiceName string
	Exporter    TraceExporter
	BufferSize  int
}

TracerConfig 配置追踪器.

type TurnTrace

type TurnTrace struct {
	ID         string        `json:"id"`
	TurnNumber int           `json:"turn_number"`
	UserInput  string        `json:"user_input"`
	Response   string        `json:"response"`
	Model      string        `json:"model"`
	Tokens     TokenUsage    `json:"tokens"`
	Latency    time.Duration `json:"latency"`
	ToolCalls  []ToolCall    `json:"tool_calls,omitempty"`
	Timestamp  time.Time     `json:"timestamp"`
}

TurnTrace 表示单次对话回合.

Jump to

Keyboard shortcuts

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