Help us shape the future of Go! Take the 2026 Go Developer Survey

types

package
v0.10.8 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2026 License: AGPL-3.0 Imports: 9 Imported by: 1

Documentation

Index

Constants

View Source
const (
	RelayFormatOpenAI                    RelayFormat = "openai"
	RelayFormatClaude                                = "claude"
	RelayFormatGemini                                = "gemini"
	RelayFormatOpenAIResponses                       = "openai_responses"
	RelayFormatOpenAIResponsesCompaction             = "openai_responses_compaction"
	RelayFormatOpenAIAudio                           = "openai_audio"
	RelayFormatOpenAIImage                           = "openai_image"
	RelayFormatOpenAIRealtime                        = "openai_realtime"
	RelayFormatRerank                                = "rerank"
	RelayFormatEmbedding                             = "embedding"

	RelayFormatTask    = "task"
	RelayFormatMjProxy = "mj_proxy"
)

Variables

This section is empty.

Functions

func IsChannelError

func IsChannelError(err *NewAPIError) bool

func IsRecordErrorLog

func IsRecordErrorLog(e *NewAPIError) bool

func IsSkipRetryError

func IsSkipRetryError(err *NewAPIError) bool

func LoadFromJsonString

func LoadFromJsonString[K comparable, V any](m *RWMap[K, V], jsonStr string) error

Types

type CachedFileData added in v0.10.8

type CachedFileData struct {
	MimeType    string        // MIME 类型
	Size        int64         // 文件大小(字节)
	DiskSize    int64         // 磁盘缓存实际占用大小(字节,通常是 base64 长度)
	ImageConfig *image.Config // 图片配置(如果是图片)
	ImageFormat string        // 图片格式(如果是图片)

	// 统计回调,避免循环依赖
	OnClose func(size int64)
	// contains filtered or unexported fields
}

CachedFileData 缓存的文件数据 支持内存缓存和磁盘缓存两种模式

func NewDiskCachedData added in v0.10.8

func NewDiskCachedData(diskPath string, mimeType string, size int64) *CachedFileData

NewDiskCachedData 创建磁盘缓存的数据

func NewMemoryCachedData added in v0.10.8

func NewMemoryCachedData(base64Data string, mimeType string, size int64) *CachedFileData

NewMemoryCachedData 创建内存缓存的数据

func (*CachedFileData) Close added in v0.10.8

func (c *CachedFileData) Close() error

Close 关闭并清理资源

func (*CachedFileData) GetBase64Data added in v0.10.8

func (c *CachedFileData) GetBase64Data() (string, error)

GetBase64Data 获取 base64 数据(自动处理内存/磁盘)

func (*CachedFileData) IsDisk added in v0.10.8

func (c *CachedFileData) IsDisk() bool

IsDisk 是否使用磁盘缓存

func (*CachedFileData) SetBase64Data added in v0.10.8

func (c *CachedFileData) SetBase64Data(data string)

SetBase64Data 设置 base64 数据(仅用于内存模式)

type ChannelError

type ChannelError struct {
	ChannelId   int    `json:"channel_id"`
	ChannelType int    `json:"channel_type"`
	ChannelName string `json:"channel_name"`
	IsMultiKey  bool   `json:"is_multi_key"`
	AutoBan     bool   `json:"auto_ban"`
	UsingKey    string `json:"using_key"`
}

func NewChannelError

func NewChannelError(channelId int, channelType int, channelName string, isMultiKey bool, usingKey string, autoBan bool) *ChannelError

type ClaudeError

type ClaudeError struct {
	Type    string `json:"type,omitempty"`
	Message string `json:"message,omitempty"`
}

type ErrorCode

type ErrorCode string
const (
	ErrorCodeInvalidRequest         ErrorCode = "invalid_request"
	ErrorCodeSensitiveWordsDetected ErrorCode = "sensitive_words_detected"
	ErrorCodeViolationFeeGrokCSAM   ErrorCode = "violation_fee.grok.csam"

	// new api error
	ErrorCodeCountTokenFailed   ErrorCode = "count_token_failed"
	ErrorCodeModelPriceError    ErrorCode = "model_price_error"
	ErrorCodeInvalidApiType     ErrorCode = "invalid_api_type"
	ErrorCodeJsonMarshalFailed  ErrorCode = "json_marshal_failed"
	ErrorCodeDoRequestFailed    ErrorCode = "do_request_failed"
	ErrorCodeGetChannelFailed   ErrorCode = "get_channel_failed"
	ErrorCodeGenRelayInfoFailed ErrorCode = "gen_relay_info_failed"

	// channel error
	ErrorCodeChannelNoAvailableKey        ErrorCode = "channel:no_available_key"
	ErrorCodeChannelParamOverrideInvalid  ErrorCode = "channel:param_override_invalid"
	ErrorCodeChannelHeaderOverrideInvalid ErrorCode = "channel:header_override_invalid"
	ErrorCodeChannelModelMappedError      ErrorCode = "channel:model_mapped_error"
	ErrorCodeChannelAwsClientError        ErrorCode = "channel:aws_client_error"
	ErrorCodeChannelInvalidKey            ErrorCode = "channel:invalid_key"
	ErrorCodeChannelResponseTimeExceeded  ErrorCode = "channel:response_time_exceeded"

	// client request error
	ErrorCodeReadRequestBodyFailed ErrorCode = "read_request_body_failed"
	ErrorCodeConvertRequestFailed  ErrorCode = "convert_request_failed"
	ErrorCodeAccessDenied          ErrorCode = "access_denied"

	// request error
	ErrorCodeBadRequestBody ErrorCode = "bad_request_body"

	// response error
	ErrorCodeReadResponseBodyFailed ErrorCode = "read_response_body_failed"
	ErrorCodeBadResponseStatusCode  ErrorCode = "bad_response_status_code"
	ErrorCodeBadResponse            ErrorCode = "bad_response"
	ErrorCodeBadResponseBody        ErrorCode = "bad_response_body"
	ErrorCodeEmptyResponse          ErrorCode = "empty_response"
	ErrorCodeAwsInvokeError         ErrorCode = "aws_invoke_error"
	ErrorCodeModelNotFound          ErrorCode = "model_not_found"
	ErrorCodePromptBlocked          ErrorCode = "prompt_blocked"

	// sql error
	ErrorCodeQueryDataError  ErrorCode = "query_data_error"
	ErrorCodeUpdateDataError ErrorCode = "update_data_error"

	// quota error
	ErrorCodeInsufficientUserQuota      ErrorCode = "insufficient_user_quota"
	ErrorCodePreConsumeTokenQuotaFailed ErrorCode = "pre_consume_token_quota_failed"
)

type ErrorType

type ErrorType string
const (
	ErrorTypeNewAPIError     ErrorType = "new_api_error"
	ErrorTypeOpenAIError     ErrorType = "openai_error"
	ErrorTypeClaudeError     ErrorType = "claude_error"
	ErrorTypeMidjourneyError ErrorType = "midjourney_error"
	ErrorTypeGeminiError     ErrorType = "gemini_error"
	ErrorTypeRerankError     ErrorType = "rerank_error"
	ErrorTypeUpstreamError   ErrorType = "upstream_error"
)

type FileMeta

type FileMeta struct {
	FileType
	MimeType string
	Source   *FileSource // 统一的文件来源(URL 或 base64)
	Detail   string      // 图片细节级别(low/high/auto)
}

func NewFileMeta added in v0.10.8

func NewFileMeta(fileType FileType, source *FileSource) *FileMeta

NewFileMeta 创建新的 FileMeta

func NewImageFileMeta added in v0.10.8

func NewImageFileMeta(source *FileSource, detail string) *FileMeta

NewImageFileMeta 创建图片类型的 FileMeta

func (*FileMeta) GetIdentifier added in v0.10.8

func (f *FileMeta) GetIdentifier() string

GetIdentifier 获取文件标识符(用于日志)

func (*FileMeta) GetRawData added in v0.10.8

func (f *FileMeta) GetRawData() string

GetRawData 获取原始数据(兼容旧代码) Deprecated: 请使用 Source.GetRawData()

func (*FileMeta) IsURL added in v0.10.8

func (f *FileMeta) IsURL() bool

IsURL 判断是否是 URL 来源

type FileSource added in v0.10.8

type FileSource struct {
	Type       FileSourceType `json:"type"`                  // 来源类型
	URL        string         `json:"url,omitempty"`         // URL(当 Type 为 url 时)
	Base64Data string         `json:"base64_data,omitempty"` // Base64 数据(当 Type 为 base64 时)
	MimeType   string         `json:"mime_type,omitempty"`   // MIME 类型(可选,会自动检测)
	// contains filtered or unexported fields
}

FileSource 统一的文件来源抽象 支持 URL 和 base64 两种来源,提供懒加载和缓存机制

func NewBase64FileSource added in v0.10.8

func NewBase64FileSource(base64Data string, mimeType string) *FileSource

NewBase64FileSource 创建 base64 来源的 FileSource

func NewURLFileSource added in v0.10.8

func NewURLFileSource(url string) *FileSource

NewURLFileSource 创建 URL 来源的 FileSource

func (*FileSource) ClearCache added in v0.10.8

func (f *FileSource) ClearCache()

ClearCache 清除缓存,释放内存和磁盘文件

func (*FileSource) ClearRawData added in v0.10.8

func (f *FileSource) ClearRawData()

ClearRawData 清除原始数据,只保留必要的元信息 用于在处理完成后释放大文件的内存

func (*FileSource) GetCache added in v0.10.8

func (f *FileSource) GetCache() *CachedFileData

GetCache 获取缓存数据

func (*FileSource) GetIdentifier added in v0.10.8

func (f *FileSource) GetIdentifier() string

GetIdentifier 获取文件标识符(用于日志和错误追踪)

func (*FileSource) GetRawData added in v0.10.8

func (f *FileSource) GetRawData() string

GetRawData 获取原始数据(URL 或完整的 base64 字符串)

func (*FileSource) HasCache added in v0.10.8

func (f *FileSource) HasCache() bool

HasCache 是否有缓存

func (*FileSource) IsBase64 added in v0.10.8

func (f *FileSource) IsBase64() bool

IsBase64 判断是否是 base64 来源

func (*FileSource) IsRegistered added in v0.10.8

func (f *FileSource) IsRegistered() bool

IsRegistered 是否已注册到清理列表

func (*FileSource) IsURL added in v0.10.8

func (f *FileSource) IsURL() bool

IsURL 判断是否是 URL 来源

func (*FileSource) Mu added in v0.10.8

func (f *FileSource) Mu() *sync.Mutex

Mu 获取内部锁

func (*FileSource) SetCache added in v0.10.8

func (f *FileSource) SetCache(data *CachedFileData)

SetCache 设置缓存数据

func (*FileSource) SetRegistered added in v0.10.8

func (f *FileSource) SetRegistered(registered bool)

SetRegistered 设置注册状态

type FileSourceType added in v0.10.8

type FileSourceType string

FileSourceType 文件来源类型

const (
	FileSourceTypeURL    FileSourceType = "url"    // URL 来源
	FileSourceTypeBase64 FileSourceType = "base64" // Base64 内联数据
)

type FileType

type FileType string
const (
	FileTypeImage FileType = "image" // Image file type
	FileTypeAudio FileType = "audio" // Audio file type
	FileTypeVideo FileType = "video" // Video file type
	FileTypeFile  FileType = "file"  // Generic file type
)

type GroupRatioInfo

type GroupRatioInfo struct {
	GroupRatio        float64
	GroupSpecialRatio float64
	HasSpecialRatio   bool
}

type LocalFileData

type LocalFileData struct {
	MimeType   string
	Base64Data string
	Url        string
	Size       int64
}

type NewAPIError

type NewAPIError struct {
	Err        error
	RelayError any

	StatusCode int
	Metadata   json.RawMessage
	// contains filtered or unexported fields
}

func InitOpenAIError

func InitOpenAIError(errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError

func NewError

func NewError(err error, errorCode ErrorCode, ops ...NewAPIErrorOptions) *NewAPIError

func NewErrorWithStatusCode

func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError

func NewOpenAIError

func NewOpenAIError(err error, errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError

func WithClaudeError

func WithClaudeError(claudeError ClaudeError, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError

func WithOpenAIError

func WithOpenAIError(openAIError OpenAIError, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError

func (*NewAPIError) Error

func (e *NewAPIError) Error() string

func (*NewAPIError) ErrorWithStatusCode

func (e *NewAPIError) ErrorWithStatusCode() string

func (*NewAPIError) GetErrorCode

func (e *NewAPIError) GetErrorCode() ErrorCode

func (*NewAPIError) GetErrorType

func (e *NewAPIError) GetErrorType() ErrorType

func (*NewAPIError) MaskSensitiveError

func (e *NewAPIError) MaskSensitiveError() string

func (*NewAPIError) MaskSensitiveErrorWithStatusCode

func (e *NewAPIError) MaskSensitiveErrorWithStatusCode() string

func (*NewAPIError) SetMessage

func (e *NewAPIError) SetMessage(message string)

func (*NewAPIError) ToClaudeError

func (e *NewAPIError) ToClaudeError() ClaudeError

func (*NewAPIError) ToOpenAIError

func (e *NewAPIError) ToOpenAIError() OpenAIError

func (*NewAPIError) Unwrap

func (e *NewAPIError) Unwrap() error

Unwrap enables errors.Is / errors.As to work with NewAPIError by exposing the underlying error.

type NewAPIErrorOptions

type NewAPIErrorOptions func(*NewAPIError)

func ErrOptionWithHideErrMsg

func ErrOptionWithHideErrMsg(replaceStr string) NewAPIErrorOptions

func ErrOptionWithNoRecordErrorLog

func ErrOptionWithNoRecordErrorLog() NewAPIErrorOptions

func ErrOptionWithSkipRetry

func ErrOptionWithSkipRetry() NewAPIErrorOptions

type OpenAIError

type OpenAIError struct {
	Message  string          `json:"message"`
	Type     string          `json:"type"`
	Param    string          `json:"param"`
	Code     any             `json:"code"`
	Metadata json.RawMessage `json:"metadata,omitempty"`
}

type PerCallPriceData

type PerCallPriceData struct {
	ModelPrice     float64
	Quota          int
	GroupRatioInfo GroupRatioInfo
}

type PriceData

type PriceData struct {
	FreeModel            bool
	ModelPrice           float64
	ModelRatio           float64
	CompletionRatio      float64
	CacheRatio           float64
	CacheCreationRatio   float64
	CacheCreation5mRatio float64
	CacheCreation1hRatio float64
	ImageRatio           float64
	AudioRatio           float64
	AudioCompletionRatio float64
	OtherRatios          map[string]float64
	UsePrice             bool
	QuotaToPreConsume    int // 预消耗额度
	GroupRatioInfo       GroupRatioInfo
}

func (*PriceData) AddOtherRatio

func (p *PriceData) AddOtherRatio(key string, ratio float64)

func (*PriceData) ToSetting

func (p *PriceData) ToSetting() string

type RWMap

type RWMap[K comparable, V any] struct {
	// contains filtered or unexported fields
}

func NewRWMap

func NewRWMap[K comparable, V any]() *RWMap[K, V]

func (*RWMap[K, V]) AddAll

func (m *RWMap[K, V]) AddAll(other map[K]V)

func (*RWMap[K, V]) Clear

func (m *RWMap[K, V]) Clear()

func (*RWMap[K, V]) Get

func (m *RWMap[K, V]) Get(key K) (V, bool)

func (*RWMap[K, V]) Len

func (m *RWMap[K, V]) Len() int

func (*RWMap[K, V]) MarshalJSON

func (m *RWMap[K, V]) MarshalJSON() ([]byte, error)

func (*RWMap[K, V]) ReadAll

func (m *RWMap[K, V]) ReadAll() map[K]V

ReadAll returns a copy of the entire map.

func (*RWMap[K, V]) Set

func (m *RWMap[K, V]) Set(key K, value V)

func (*RWMap[K, V]) UnmarshalJSON

func (m *RWMap[K, V]) UnmarshalJSON(b []byte) error

type RelayFormat

type RelayFormat string

type RequestMeta

type RequestMeta struct {
	OriginalModelName string `json:"original_model_name"`
	UserUsingGroup    string `json:"user_using_group"`
	PromptTokens      int    `json:"prompt_tokens"`
	PreConsumedQuota  int    `json:"pre_consumed_quota"`
}

type Set

type Set[T comparable] struct {
	// contains filtered or unexported fields
}

func NewSet

func NewSet[T comparable]() *Set[T]

NewSet 创建并返回一个新的 Set

func (*Set[T]) Add

func (s *Set[T]) Add(item T)

func (*Set[T]) Contains

func (s *Set[T]) Contains(item T) bool

Contains 检查 Set 是否包含某个元素

func (*Set[T]) Items

func (s *Set[T]) Items() []T

Items 返回 Set 中所有元素组成的切片 注意:由于 map 的无序性,返回的切片元素顺序是随机的

func (*Set[T]) Len

func (s *Set[T]) Len() int

Len 返回 Set 中元素的数量

func (*Set[T]) Remove

func (s *Set[T]) Remove(item T)

Remove 从 Set 中移除一个元素

type TokenCountMeta

type TokenCountMeta struct {
	TokenType     TokenType   `json:"token_type,omitempty"`     // Type of tokens used in the request
	CombineText   string      `json:"combine_text,omitempty"`   // Combined text from all messages
	ToolsCount    int         `json:"tools_count,omitempty"`    // Number of tools used
	NameCount     int         `json:"name_count,omitempty"`     // Number of names in the request
	MessagesCount int         `json:"messages_count,omitempty"` // Number of messages in the request
	Files         []*FileMeta `json:"files,omitempty"`          // List of files, each with type and content
	MaxTokens     int         `json:"max_tokens,omitempty"`     // Maximum tokens allowed in the request

	ImagePriceRatio float64 `json:"image_ratio,omitempty"` // Ratio for image size, if applicable

}

type TokenType

type TokenType string
const (
	TokenTypeTextNumber TokenType = "text_number" // Text or number tokens
	TokenTypeTokenizer  TokenType = "tokenizer"   // Tokenizer tokens
	TokenTypeImage      TokenType = "image"       // Image tokens
)

Jump to

Keyboard shortcuts

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