middleware

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: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BlockingRateLimiter

type BlockingRateLimiter interface {
	Wait(ctx context.Context) error
}

BlockingRateLimiter 定义阻塞式速率限制接口. 与 llm.RateLimiter(非阻塞式 Allow/AllowN/Reset)不同, BlockingRateLimiter 在超出速率时阻塞等待,适用于中间件链场景.

type Cache

type Cache interface {
	Key(req *llmpkg.ChatRequest) string
	Get(key string) (*llmpkg.ChatResponse, bool)
	Set(key string, resp *llmpkg.ChatResponse)
}

Cache 定义缓存接口.

type Chain

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

Chain 表示中间件链.

func NewChain

func NewChain(middlewares ...Middleware) *Chain

NewChain 创建新的中间件链.

func (*Chain) Len

func (c *Chain) Len() int

Len 返回链中的中间件数量.

func (*Chain) Then

func (c *Chain) Then(h Handler) Handler

Then 用链中的所有中间件包裹一个处理器. 先在锁内拷贝中间件切片,再在锁外执行中间件包裹, 防止中间件回调 Use() 时产生死锁。

func (*Chain) Use

func (c *Chain) Use(m Middleware) *Chain

Use 将中间件添加到链中.

func (*Chain) UseFront

func (c *Chain) UseFront(m Middleware) *Chain

UseFront 在链的前部添加中间件.

type EmptyToolsCleaner

type EmptyToolsCleaner struct{}

EmptyToolsCleaner 空工具列表清理器 当请求的 Tools 为空时,清除 ToolChoice 字段 避免上游 API 返回 400 错误(OpenAI 不允许空 tools 数组时设置 tool_choice)

func NewEmptyToolsCleaner

func NewEmptyToolsCleaner() *EmptyToolsCleaner

NewEmptyToolsCleaner 创建空工具清理器

func (*EmptyToolsCleaner) Name

func (r *EmptyToolsCleaner) Name() string

Name 返回改写器名称

func (*EmptyToolsCleaner) Rewrite

Rewrite 执行改写

type Handler

type Handler func(ctx context.Context, req *llmpkg.ChatRequest) (*llmpkg.ChatResponse, error)

Handler 处理一个请求并返回一个响应.

type MetricsCollector

type MetricsCollector interface {
	RecordRequest(model string, duration time.Duration, success bool)
	RecordTokens(model string, tokens int)
}

MetricsCollector 定义指标收集接口.

type Middleware

type Middleware func(next Handler) Handler

Middleware 将处理器包裹并添加额外功能.

func CacheMiddleware

func CacheMiddleware(cache Cache) Middleware

CacheMiddleware 缓存响应.

func HeadersMiddleware

func HeadersMiddleware(headers map[string]string) Middleware

HeadersMiddleware 添加自定义头到请求元数据.

func LoggingMiddleware

func LoggingMiddleware(logger func(format string, args ...any)) Middleware

LoggingMiddleware 记录请求/响应详情.

func MetricsMiddleware

func MetricsMiddleware(collector MetricsCollector) Middleware

MetricsMiddleware 收集请求的指标.

func RateLimitMiddleware

func RateLimitMiddleware(limiter BlockingRateLimiter) Middleware

RateLimitMiddleware 应用速率限制.

func RecoveryMiddleware

func RecoveryMiddleware(onPanic func(any)) Middleware

RecoveryMiddleware 从 panic 中恢复.

func RetryMiddleware

func RetryMiddleware(maxRetries int, backoff time.Duration) Middleware

RetryMiddleware 重试失败的请求. 只重试可重试的错误(*types.Error 且 Retryable=true),不可重试的错误立即返回。

func TimeoutMiddleware

func TimeoutMiddleware(timeout time.Duration) Middleware

TimeoutMiddleware 对请求添加超时.

func TracingMiddleware

func TracingMiddleware(tracer llmpkg.Tracer) Middleware

TracingMiddleware 添加分布式追踪.

func TransformMiddleware

func TransformMiddleware(reqTransform func(*llmpkg.ChatRequest), respTransform func(*llmpkg.ChatResponse)) Middleware

TransformMiddleware 转换请求/响应.

func ValidatorMiddleware

func ValidatorMiddleware(validators ...Validator) Middleware

ValidatorMiddleware 在处理前对请求进行验证.

type PanicError

type PanicError struct {
	Value any
}

RecoveredPanic 表示已恢复的 panic.

func (*PanicError) Error

func (e *PanicError) Error() string

type RequestRewriter

type RequestRewriter interface {
	// Rewrite 改写请求
	// 返回改写后的请求和错误(如果改写失败)
	Rewrite(ctx context.Context, req *llmpkg.ChatRequest) (*llmpkg.ChatRequest, error)

	// Name 返回改写器名称(用于日志和调试)
	Name() string
}

RequestRewriter 请求改写器接口 用于在请求发送到上游 API 之前进行参数清理和转换

type RewriterChain

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

RewriterChain 改写器链 按顺序执行多个改写器

func NewRewriterChain

func NewRewriterChain(rewriters ...RequestRewriter) *RewriterChain

NewRewriterChain 创建改写器链

func (*RewriterChain) AddRewriter

func (c *RewriterChain) AddRewriter(rewriter RequestRewriter)

AddRewriter 动态添加改写器

func (*RewriterChain) Execute

Execute 执行改写器链 按顺序执行所有改写器,任何一个失败则中断并返回错误

func (*RewriterChain) GetRewriters

func (c *RewriterChain) GetRewriters() []RequestRewriter

GetRewriters 获取所有改写器(用于调试)

type Validator

type Validator interface {
	Validate(req *llmpkg.ChatRequest) error
}

Validator 定义请求验证接口.

Jump to

Keyboard shortcuts

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