Documentation
¶
Index ¶
- func AnthropicModelsHandler(c *gin.Context)
- func ChatCompletionsHandler(c *gin.Context)
- func CleanLogs(c *gin.Context)
- func CountTokens(c *gin.Context)
- func CreateAuthKey(c *gin.Context)
- func CreateModel(c *gin.Context)
- func CreateModelProvider(c *gin.Context)
- func CreateProvider(c *gin.Context)
- func DeleteAuthKey(c *gin.Context)
- func DeleteModel(c *gin.Context)
- func DeleteModelProvider(c *gin.Context)
- func DeleteProvider(c *gin.Context)
- func DeleteQuotaSource(c *gin.Context)
- func EventLogging(c *gin.Context)
- func GeminiGenerateContentHandler(c *gin.Context)
- func GeminiModelsHandler(c *gin.Context)
- func GetAuthKeys(c *gin.Context)
- func GetAuthKeysList(c *gin.Context)
- func GetChatIO(c *gin.Context)
- func GetCleanupHistory(c *gin.Context)
- func GetCompressionStatus(c *gin.Context)
- func GetConfigByKey(c *gin.Context)
- func GetDecompressStatus(c *gin.Context)
- func GetModelList(c *gin.Context)
- func GetModelProviderMetadata(c *gin.Context)
- func GetModelProviderStatus(c *gin.Context)
- func GetModelProviders(c *gin.Context)
- func GetModels(c *gin.Context)
- func GetPeakCalendar(c *gin.Context)
- func GetProviderModelList(c *gin.Context)
- func GetProviderModels(c *gin.Context)
- func GetProviderTemplates(c *gin.Context)
- func GetProviders(c *gin.Context)
- func GetQuotaConfig(c *gin.Context)
- func GetRequestLogs(c *gin.Context)
- func GetUserAgents(c *gin.Context)
- func GetVersion(c *gin.Context)
- func GetWeather(ctx context.Context, ...) (*openai.ChatCompletionToolMessageParamContentUnion, error)
- func Messages(c *gin.Context)
- func OpenAIModelsHandler(c *gin.Context)
- func PauseCompression(c *gin.Context)
- func PreviewPeakTerms(c *gin.Context)
- func ProviderTestHandler(c *gin.Context)
- func ReclaimStorage(c *gin.Context)
- func RefreshQuotaSource(c *gin.Context)
- func ResponsesHandler(c *gin.Context)
- func RollbackCompression(c *gin.Context)
- func RunCompression(c *gin.Context)
- func RunQuotaSources(c *gin.Context)
- func Stats(c *gin.Context)
- func StatsGranularities(c *gin.Context)
- func StopReclaim(c *gin.Context)
- func SyncPeakHolidays(c *gin.Context)
- func TestCountTokens(c *gin.Context)
- func TestQuotaSource(c *gin.Context)
- func TestReactHandler(c *gin.Context)
- func ToggleAuthKeyStatus(c *gin.Context)
- func UpdateAuthKey(c *gin.Context)
- func UpdateCompressionPolicy(c *gin.Context)
- func UpdateConfigByKey(c *gin.Context)
- func UpdateModel(c *gin.Context)
- func UpdateModelOrder(c *gin.Context)
- func UpdateModelProvider(c *gin.Context)
- func UpdateModelProviderStatus(c *gin.Context)
- func UpdatePeakCalendar(c *gin.Context)
- func UpdateProvider(c *gin.Context)
- func UpdateQuotaConfig(c *gin.Context)
- func UpdateReclaimPolicy(c *gin.Context)
- func UpsertQuotaSource(c *gin.Context)
- func VacuumStorage(c *gin.Context)
- type AuthKeyRequest
- type ChatModel
- type CleanLogsRequest
- type ConfigValueRequest
- type CountTokensResponse
- type EventLoggingEnv
- type EventLoggingEvent
- type EventLoggingEventData
- type EventLoggingRequest
- type GeminiModel
- type GeminiModelsResponse
- type ModelOrderRequest
- type ModelProviderStatusRequest
- type ModelRequest
- type ModelWithProviderRequest
- type ProviderRequest
- type ProviderTemplate
- type SystemConfigRequest
- type WrapLog
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AnthropicModelsHandler ¶ added in v0.5.28
func ChatCompletionsHandler ¶
func CountTokens ¶ added in v0.5.32
func CreateAuthKey ¶ added in v0.6.0
func DeleteAuthKey ¶ added in v0.6.0
func DeleteQuotaSource ¶ added in v0.9.1
DeleteQuotaSource 删除一个数据源。
func EventLogging ¶ added in v0.6.0
func GeminiGenerateContentHandler ¶ added in v0.6.7
GeminiGenerateContentHandler 转发 Gemini 原生接口: POST /v1beta/models/{model}:generateContent
func GeminiModelsHandler ¶ added in v0.6.7
func GetAuthKeys ¶ added in v0.6.0
func GetAuthKeysList ¶ added in v0.6.0
GetAuthKeysList 获取所有项目(AuthKey)的简化列表(ID 和 Name)
func GetCleanupHistory ¶ added in v0.8.4
GetCleanupHistory 获取日志清理执行历史
func GetCompressionStatus ¶ added in v0.9.1
GetCompressionStatus 返回压缩状态。
它在两种"库被自己占住"的情况下**不读库**,退回上一次读到的那一份, 内存里那几个字段照旧现算。真机实测的理由见 lastGoodStatus 的注释。
func GetDecompressStatus ¶ added in v0.9.1
GetDecompressStatus 单独查回滚进度(回滚与迁移是两条独立的水位)。
func GetModelList ¶ added in v0.6.0
GetModelList 返回所有模型列表用于下拉选择等场景
func GetModelProviderMetadata ¶ added in v0.9.4
GetModelProviderMetadata 查询某条「模型 × 上游」关联的模型能力与价格建议。
这是一个**只读**端点(§4.2):它返回建议,由前端预填进关联弹窗的表单; 保存路径完全沿用既有的 Create/UpdateModelProvider,服务端不做任何补值。 因此这里不读也不改任何业务表。
上游的 base_url 从 provider 的 Config 里现取,而不是让前端传:前端的 关联表单里只有 provider_id,让它再传一份 base_url 等于把"两边必须一致" 变成一条要人维护的约定。
func GetModelProviderStatus ¶
GetModelProviderStatus 获取提供商状态信息
func GetPeakCalendar ¶ added in v0.9.1
GetPeakCalendar 读取全局工作日日历。
与通用的 GET /api/config/:key 的区别:这里返回结构化配置并补上默认值, 未配置过时也能直接得到可用对象,前端无需自己拼默认配置。
func GetProviderModelList ¶ added in v0.9.6
GetProviderModelList 获取所有不重复的上游模型名(chat_logs.provider_model)。
它和 /models/select 不是一回事:后者是本地配的别名表(请求名), 这个是从历史日志里观测到的、真正发给上游的模型 id。日志页的"模型"筛选 要按后者取值,否则筛选项和分组名对不上。同名可以跨提供商,所以这里 只取模型名本身,不带上提供商——要按两者组合看走 /metrics/stats 的 byModelProvider 维度(那一维按**请求名**分组,不按上游模型名)。
与 GetUserAgents 同形:只取非空去重值,按字母序返回,下拉框里顺序稳定。
func GetProviderModels ¶
func GetProviderTemplates ¶
func GetQuotaConfig ¶ added in v0.9.1
GetQuotaConfig 返回脱敏后的配额配置。
**响应永不回传明文**:apiKey 打码;env 里键名像密钥的打码; scriptSource 例外——编辑器必须显示它才能编辑,且它本身不应含凭据。
func GetUserAgents ¶ added in v0.4.13
GetUserAgents 获取所有不重复的用户代理种类
func GetVersion ¶ added in v0.6.13
func GetWeather ¶
func GetWeather(ctx context.Context, call openai.ChatCompletionChunkChoiceDeltaToolCallFunction) (*openai.ChatCompletionToolMessageParamContentUnion, error)
func OpenAIModelsHandler ¶ added in v0.5.28
func PauseCompression ¶ added in v0.9.1
PauseCompression 请求暂停。批间生效,所以返回时可能还有一批在跑完的路上。
func PreviewPeakTerms ¶ added in v0.9.1
PreviewPeakTerms 把一套峰谷条款回放到未来一段时间,返回每个时段命中的区间。
存在的理由:分时段规则的错误(跨零点写反、星期几位错、时区搞混) 靠读配置很难发现,但一看时间轴就一目了然。
条款由请求体给出(编辑器要在保存前预览),日历取已保存的那份: 日历是全局的、在另一个页面维护,预览时按它算才是"保存后会怎样"。
func ProviderTestHandler ¶
func ReclaimStorage ¶ added in v0.9.1
ReclaimStorage 触发一次增量回收,异步返回。
异步的理由与迁移一样(分钟级的事不该挂在请求上),但它比迁移更需要说清 代价:回收**全程持写锁**,虽然读不受影响,写请求会排队、超时即失败。 所以这个接口不是"随手点一下",前端要把它标成维护动作。
占位("有一轮在跑")由 service.StartReclaim **同步**做完,所以这里的 `started: true` 是可信的:返回之后再来一下必然被上面那道门挡掉。
func RefreshQuotaSource ¶ added in v0.9.1
RefreshQuotaSource 只刷一个数据源,其余源走缓存。
这是"每源独立刷新"的端点(计划 §1.4 第 20 条):面板上点某个慢源的刷新时用它, 不必连带重跑其他慢源。
func ResponsesHandler ¶
func RollbackCompression ¶ added in v0.9.1
RollbackCompression 是 L2 降级:把库里的帧全部还原成明文。
func RunCompression ¶ added in v0.9.1
RunCompression 触发一轮迁移。异步返回,进度看状态接口。
func RunQuotaSources ¶ added in v0.9.1
RunQuotaSources 跑全部启用源(或指定 id)。
Query:
force=true 忽略缓存重新取数 ids=a,b,c 只跑这些源(其余不返回)
func Stats ¶ added in v0.9.1
Stats 分析聚合端点。用单端点而非按维度拆多个,是为了让一次请求对应一个 时间切片——前端「筛选行作用于其下所有图表」的约定因此天然成立, 不会出现各图之间因分别请求而产生的时间窗漂移。
Query:
from, to 时间范围。支持 unix 秒 / unix 毫秒 / RFC3339 / 2006-01-02 / "2006-01-02 15:04:05" granularity 分桶档位,缺省 auto provider, model, name, status, ua, key_id 逗号分隔的多值筛选
func StatsGranularities ¶ added in v0.9.1
StatsGranularities 返回受支持的分桶档位,供前端下拉使用。
func StopReclaim ¶ added in v0.9.1
StopReclaim 请求停止持续回收。批间生效,所以返回成功不等于已经停了。
与「暂停迁移」不同,它没有"停下之后库处于什么形态"的问题:回收不动数据, 停在任何一刻库都是完整的,只是文件没缩到位。
**重整(VACUUM)停不了**:它是一条语句,没有"批间"这个时机,标志设了没人读。 这里特意与 StopReclaim 的返回 false 分开报,因为"没有回收在跑"是**误报**—— 用户明明看着它在跑。见 service.StopReclaim。
func SyncPeakHolidays ¶ added in v0.9.1
SyncPeakHolidays 从公共数据源同步指定年份的节假日与调休安排。
这一项是"工作日"判定的关键补充:中国法定节假日与调休无法由星期几推出, 必须依赖外部数据。同步失败时日历保持原样,前端可回退到手动填写或 仅按周一~周五判定。
func TestCountTokens ¶ added in v0.5.32
func TestQuotaSource ¶ added in v0.9.1
TestQuotaSource 试跑一个**未保存**的数据源。
不落盘、不写缓存。这是配额功能里最有价值的作者循环:用户反复调整脚本/映射并 立刻看到解析结果与原始产出。因此它对只读模式**也开放**——它不改变任何状态。
func TestReactHandler ¶
func ToggleAuthKeyStatus ¶ added in v0.6.0
ToggleAuthKeyStatus 切换 AuthKey 状态
func UpdateAuthKey ¶ added in v0.6.0
func UpdateCompressionPolicy ¶ added in v0.9.1
UpdateCompressionPolicy 改策略。参数越界会被夹回合法区间(不报错)。
func UpdateConfigByKey ¶ added in v0.5.32
UpdateConfigByKey 更新配置
func UpdateModelOrder ¶ added in v0.6.31
UpdateModelOrder 更新模型展示顺序
func UpdateModelProviderStatus ¶ added in v0.5.9
UpdateModelProviderStatus 切换关联管理启用状态
func UpdatePeakCalendar ¶ added in v0.9.1
UpdatePeakCalendar 覆盖全局工作日日历。
func UpdateQuotaConfig ¶ added in v0.9.1
UpdateQuotaConfig 改配置级字段(缓存时长、告警阈值)。
与 UpsertQuotaSource 分开的理由:那两个字段不属于任何数据源, 混在源的保存里会让"我只想改个阈值"变成一次数据源写操作。
func UpdateReclaimPolicy ¶ added in v0.9.1
UpdateReclaimPolicy 改空间回收的自动推进策略。越界参数会被夹回(不报错)。
func UpsertQuotaSource ¶ added in v0.9.1
UpsertQuotaSource 新增或更新一个数据源。
路由上区分新增与更新:新增用 POST(不带 id 或 id 冲突时报错), 更新用 PUT(按 id 找到已有项)。这样"我想改的源不存在"不会被静默变成新增。
func VacuumStorage ¶ added in v0.9.1
VacuumStorage 触发一次重整(VACUUM),异步返回。
它比回收**更该说清代价**,因为代价的形状不一样:回收是"写请求排队、多半能 成功",而 VACUUM 是"这几十秒里写请求直接失败"——它全程持 EXCLUSIVE,连读都 进不来。换来的是快一个数量级:同一份 7 GiB 的库,实测 VACUUM 55–59 秒, 增量回收要十轮 14.7 分钟。
所以它只该在大空洞之后点(迁移、回滚、批量删除),前端要把它标成维护动作, 并说清"约多久 + 期间写入会失败"。与「开始回收」是**两个按钮**:那一个不需要 额外磁盘、也不必停服务,这一个两样都要,但一次就还干净。
磁盘预检在 service.StartVacuum 里**同步**做完,不够就直接拒——那不是"跑到 一半才发现"的失败,而是动手之前就知道的事,而中途满盘会把库留在说不清的 状态。前端可以从状态接口的 db.disk_free_bytes 提前算出来,别让用户白点。
Types ¶
type AuthKeyRequest ¶ added in v0.6.0
type ChatModel ¶
type CleanLogsRequest ¶ added in v0.6.8
type CleanLogsRequest struct {
Type string `json:"type"` // "count" 或 "days"
Value int `json:"value"` // 数量或天数
}
CleanLogsRequest 清理日志请求
type ConfigValueRequest ¶ added in v0.5.32
type ConfigValueRequest struct {
Value string `json:"value" binding:"required"`
}
ConfigValueRequest represents the request body for updating config value
type CountTokensResponse ¶ added in v0.5.32
type CountTokensResponse struct {
InputTokens int64 `json:"input_tokens"`
}
type EventLoggingEnv ¶ added in v0.6.17
type EventLoggingEnv struct {
Platform string `json:"platform"`
NodeVersion string `json:"node_version"`
Terminal string `json:"terminal"`
PackageManagers string `json:"package_managers"`
Runtimes string `json:"runtimes"`
IsRunningWithBun bool `json:"is_running_with_bun"`
IsCI bool `json:"is_ci"`
IsClaubbit bool `json:"is_claubbit"`
IsGithubAction bool `json:"is_github_action"`
IsClaudeCodeAction bool `json:"is_claude_code_action"`
IsClaudeAIAuth bool `json:"is_claude_ai_auth"`
Version string `json:"version"`
Arch string `json:"arch"`
IsClaudeCodeRemote bool `json:"is_claude_code_remote"`
DeploymentEnvironment string `json:"deployment_environment"`
}
type EventLoggingEvent ¶ added in v0.6.17
type EventLoggingEvent struct {
EventType string `json:"event_type"`
EventData EventLoggingEventData `json:"event_data"`
}
type EventLoggingEventData ¶ added in v0.6.17
type EventLoggingEventData struct {
EventName string `json:"event_name"`
ClientTimestamp string `json:"client_timestamp"`
Model string `json:"model"`
SessionID string `json:"session_id"`
UserType string `json:"user_type"`
Betas string `json:"betas"`
Env EventLoggingEnv `json:"env"`
Entrypoint string `json:"entrypoint"`
IsInteractive bool `json:"is_interactive"`
ClientType string `json:"client_type"`
AdditionalMetadata string `json:"additional_metadata"`
DeviceID string `json:"device_id"`
}
type EventLoggingRequest ¶ added in v0.6.17
type EventLoggingRequest struct {
Events []EventLoggingEvent `json:"events"`
}
type GeminiModel ¶ added in v0.6.7
type GeminiModelsResponse ¶ added in v0.6.7
type GeminiModelsResponse struct {
Models []GeminiModel `json:"models"`
}
type ModelOrderRequest ¶ added in v0.6.31
type ModelOrderRequest struct {
ModelIDs []uint `json:"model_ids"`
}
type ModelProviderStatusRequest ¶ added in v0.5.9
type ModelProviderStatusRequest struct {
Status bool `json:"status"`
}
ModelProviderStatusRequest represents the request body for updating provider status
type ModelRequest ¶
type ModelRequest struct {
Name string `json:"name"`
Remark string `json:"remark"`
MaxRetry int `json:"max_retry"`
TimeOut int `json:"time_out"`
Strategy string `json:"strategy"`
Breaker bool `json:"breaker"`
// PreferDirect 优先匹配相同协议。指针是为了区分"没传"(nil,按开处理,老客户端
// 不改行为)与"明确关掉"(false)
PreferDirect *bool `json:"prefer_direct"`
}
ModelRequest represents the request body for creating/updating a model
type ModelWithProviderRequest ¶
type ModelWithProviderRequest struct {
ModelID uint `json:"model_id"`
ProviderModel string `json:"provider_name"`
ProviderID uint `json:"provider_id"`
ToolCall bool `json:"tool_call"`
StructuredOutput bool `json:"structured_output"`
Image bool `json:"image"`
WithHeader bool `json:"with_header"`
// Backup 是否为备用关联:不参与日常轮询,仅当主关联在本请求内全部不可用后接管。
// 老客户端不传即 false,天然兼容。
Backup bool `json:"backup"`
CustomerHeaders map[string]string `json:"customer_headers"`
ExtraBody map[string]any `json:"extra_body"`
Weight int `json:"weight"`
InputPrice float64 `json:"input_price"`
CacheReadPrice float64 `json:"cache_read_price"`
OutputPrice float64 `json:"output_price"`
Currency string `json:"currency"`
// Peak 这一条关联自己的峰谷条款,nil 表示没配(按基础价计费)。
Peak *models.PeakTerms `json:"peak"`
}
ModelWithProviderRequest represents the request body for creating/updating a model-provider association
type ProviderRequest ¶
type ProviderRequest struct {
Name string `json:"name"`
Type string `json:"type"`
Config string `json:"config"`
Console string `json:"console"`
Proxy string `json:"proxy"`
ErrorMatcher string `json:"error_matcher"`
}
ProviderRequest represents the request body for creating/updating a provider
type ProviderTemplate ¶
type SystemConfigRequest ¶
type SystemConfigRequest struct {
EnableSmartRouting bool `json:"enable_smart_routing"`
SuccessRateWeight float64 `json:"success_rate_weight"`
ResponseTimeWeight float64 `json:"response_time_weight"`
DecayThresholdHours int `json:"decay_threshold_hours"`
MinWeight int `json:"min_weight"`
}
SystemConfigRequest represents the request body for updating system configuration