middleware

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 20, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

包 middleware 提供 LLM 中间件链能力。

该包包含 AgentFlow 在 `llm/middleware` 目录下的核心实现。

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 用链中的所有中间件包裹一个处理器.

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 重试失败的请求.

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