/** * Model Plaza API(公开端点,可匿名访问) * 以分组为中心的模型价目:分组信息 + 模型渠道定价 + LiteLLM 官方参考价。 * 带 token 请求时后端会额外返回专属分组与用户专属倍率。 */ import { apiClient } from './client' import type { UserSupportedModelPricing } from './channels' /** LiteLLM 官方参考价(USD per token,字段缺失 = 官方数据未覆盖)。 */ export interface PlazaOfficialPricing { input_price: number | null output_price: number | null /** 5m 缓存写入(= LiteLLM cache_creation)。 */ cache_write_price: number | null /** 1h 缓存写入(LiteLLM cache_creation_above_1hr),多数模型缺失。 */ cache_write_1h_price?: number | null cache_read_price: number | null } export interface PlazaModel { name: string platform: string pricing: UserSupportedModelPricing | null official_pricing: PlazaOfficialPricing | null } export interface ModelPlazaGroup { id: number name: string description: string platform: string /** 'standard' | 'subscription' */ subscription_type: string rate_multiplier: number /** 登录且管理员为该用户配了专属倍率时返回;生效倍率 = user_rate ?? rate_multiplier。 */ user_rate_multiplier?: number peak_rate_enabled: boolean peak_start: string peak_end: string peak_rate_multiplier: number is_exclusive: boolean /** 生图独立倍率:true 时图片计费模型的实付倍率取 image_rate_multiplier,不取分组/专属倍率。 */ image_rate_independent: boolean image_rate_multiplier: number models: PlazaModel[] } export interface ModelPlazaResponse { /** 管理员配置的全局价格说明(Markdown)。 */ description: string groups: ModelPlazaGroup[] } /** 获取模型广场数据。开关未启用时后端返回 404。 */ export async function getModelPlaza(options?: { signal?: AbortSignal }): Promise { const { data } = await apiClient.get('/model-plaza', { signal: options?.signal }) return data } export const modelPlazaAPI = { getModelPlaza } export default modelPlazaAPI