Documentation
¶
Index ¶
- Constants
- func IsChannelError(err *NewAPIError) bool
- func IsRecordErrorLog(e *NewAPIError) bool
- func IsSkipRetryError(err *NewAPIError) bool
- func LoadFromJsonString[K comparable, V any](m *RWMap[K, V], jsonStr string) error
- type CachedFileData
- type ChannelError
- type ClaudeError
- type ErrorCode
- type ErrorType
- type FileMeta
- type FileSource
- func (f *FileSource) ClearCache()
- func (f *FileSource) ClearRawData()
- func (f *FileSource) GetCache() *CachedFileData
- func (f *FileSource) GetIdentifier() string
- func (f *FileSource) GetRawData() string
- func (f *FileSource) HasCache() bool
- func (f *FileSource) IsBase64() bool
- func (f *FileSource) IsRegistered() bool
- func (f *FileSource) IsURL() bool
- func (f *FileSource) Mu() *sync.Mutex
- func (f *FileSource) SetCache(data *CachedFileData)
- func (f *FileSource) SetRegistered(registered bool)
- type FileSourceType
- type FileType
- type GroupRatioInfo
- type LocalFileData
- type NewAPIError
- func InitOpenAIError(errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError
- func NewError(err error, errorCode ErrorCode, ops ...NewAPIErrorOptions) *NewAPIError
- func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError
- func NewOpenAIError(err error, errorCode ErrorCode, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError
- func WithClaudeError(claudeError ClaudeError, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError
- func WithOpenAIError(openAIError OpenAIError, statusCode int, ops ...NewAPIErrorOptions) *NewAPIError
- func (e *NewAPIError) Error() string
- func (e *NewAPIError) ErrorWithStatusCode() string
- func (e *NewAPIError) GetErrorCode() ErrorCode
- func (e *NewAPIError) GetErrorType() ErrorType
- func (e *NewAPIError) MaskSensitiveError() string
- func (e *NewAPIError) MaskSensitiveErrorWithStatusCode() string
- func (e *NewAPIError) SetMessage(message string)
- func (e *NewAPIError) ToClaudeError() ClaudeError
- func (e *NewAPIError) ToOpenAIError() OpenAIError
- func (e *NewAPIError) Unwrap() error
- type NewAPIErrorOptions
- type OpenAIError
- type PerCallPriceData
- type PriceData
- type RWMap
- func (m *RWMap[K, V]) AddAll(other map[K]V)
- func (m *RWMap[K, V]) Clear()
- func (m *RWMap[K, V]) Get(key K) (V, bool)
- func (m *RWMap[K, V]) Len() int
- func (m *RWMap[K, V]) MarshalJSON() ([]byte, error)
- func (m *RWMap[K, V]) ReadAll() map[K]V
- func (m *RWMap[K, V]) Set(key K, value V)
- func (m *RWMap[K, V]) UnmarshalJSON(b []byte) error
- type RelayFormat
- type RequestMeta
- type Set
- type TokenCountMeta
- type TokenType
Constants ¶
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 ¶
type ClaudeError ¶
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
GetIdentifier 获取文件标识符(用于日志)
func (*FileMeta) GetRawData ¶ added in v0.10.8
GetRawData 获取原始数据(兼容旧代码) Deprecated: 请使用 Source.GetRawData()
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) 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) 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 GroupRatioInfo ¶
type LocalFileData ¶
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 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 ¶
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]) MarshalJSON ¶
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]) UnmarshalJSON ¶
type RelayFormat ¶
type RelayFormat string
type RequestMeta ¶
type Set ¶
type Set[T comparable] struct { // contains filtered or unexported fields }
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
}