export type BltcyImageModelKind = "flux-image-edit" | "flux-bfl-async-edit"; export type BltcyImageModelPreset = { modelId: string; displayName: string; description: string; kind: BltcyImageModelKind; supportsVision: boolean; supportsImageGen: boolean; capabilities?: Record; defaultParams: Record; imageGenConfig: Record; sortOrder: number; }; export const BLTCY_IMAGE_OPENAI_BASE_URL = "https://api.bltcy.ai/v1"; export const BLTCY_BFL_BASE_URL = "https://api.bltcy.ai"; export const BLTCY_FLUX_PRICE_PAGE_URL = "https://api.bltcy.ai/models?category=%E7%BB%98%E5%9B%BE&provider=Flux"; export const BLTCY_FLUX_GENERATIONS_DOC_URL = "https://gpt-best.apifox.cn/api-258068997"; export const BLTCY_FLUX_EDITS_DOC_URL = "https://gpt-best.apifox.cn/api-303213093"; export const BLTCY_BFL_GET_RESULT_DOC_URL = "https://gpt-best.apifox.cn/api-306433290"; export const BLTCY_BFL_FLUX_DEV_DOC_URL = "https://gpt-best.apifox.cn/api-306433294"; export const BLTCY_BFL_FLUX_KONTEXT_DOC_URL = "https://gpt-best.apifox.cn/api-306433308"; export const BLTCY_FLUX_PRICE_CHECKED_AT = "2026-04-18"; export const BLTCY_IMAGE_PROVIDER_PRESET = { name: "柏拉图 Flux 图片编辑", type: "openai-image" as const, baseUrl: BLTCY_IMAGE_OPENAI_BASE_URL, }; export const BLTCY_BFL_PROVIDER_PRESET = { name: "柏拉图 BFL 异步编辑", type: "bfl-image" as const, baseUrl: BLTCY_BFL_BASE_URL, }; const DEFAULT_IMAGE_CONFIG = { maxImages: 1, supportsSize: true, supports1K: true, supports2K: true, supports4K: true, supportsPromptExtend: false, supportsNegativePrompt: false, supportsWatermark: false, supportsSeed: false, creditCostPerImage: 0, enableLoadingPlaceholder: true, loadingColor: "cyan", }; function fluxEditPreset( sortOrder: number, modelId: string, displayName: string, priceNote: string ): BltcyImageModelPreset { return { modelId, displayName, description: `${displayName},柏拉图 Flux OpenAI Images 兼容图片生成/编辑模型。${priceNote},实际计费以柏拉图价格页为准。`, kind: "flux-image-edit", supportsVision: true, supportsImageGen: true, capabilities: { provider: "bltcy", family: "flux", apiFormat: "openai-images", supportedModes: ["text-to-image", "image-edit"], endpoints: { generations: "/v1/images/generations", edits: "/v1/images/edits", }, maxReferenceImages: 1, pricePage: BLTCY_FLUX_PRICE_PAGE_URL, priceCheckedAt: BLTCY_FLUX_PRICE_CHECKED_AT, }, defaultParams: { provider: "bltcy", family: "flux", kind: "flux-image-edit", apiFormat: "openai-images", generationsEndpoint: "/v1/images/generations", editsEndpoint: "/v1/images/edits", docs: { generations: BLTCY_FLUX_GENERATIONS_DOC_URL, edits: BLTCY_FLUX_EDITS_DOC_URL, }, pricePage: BLTCY_FLUX_PRICE_PAGE_URL, priceCheckedAt: BLTCY_FLUX_PRICE_CHECKED_AT, priceNote, }, imageGenConfig: DEFAULT_IMAGE_CONFIG, sortOrder, }; } function bflAsyncEditPreset(options: { sortOrder: number; modelId: string; displayName: string; endpoint: string; priceNote: string; }): BltcyImageModelPreset { const { sortOrder, modelId, displayName, endpoint, priceNote } = options; return { modelId, displayName, description: `${displayName},柏拉图 BFL 官方格式异步图片编辑模型。${priceNote},实际计费以柏拉图价格页为准。`, kind: "flux-bfl-async-edit", supportsVision: true, supportsImageGen: true, capabilities: { provider: "bltcy", family: "flux", apiFormat: "bfl-official", asyncTask: true, supportedModes: ["text-to-image", "image-edit"], endpoints: { submit: endpoint, getResult: "/bfl/v1/get_result", }, maxReferenceImages: 1, pricePage: BLTCY_FLUX_PRICE_PAGE_URL, priceCheckedAt: BLTCY_FLUX_PRICE_CHECKED_AT, }, defaultParams: { provider: "bltcy", family: "flux", kind: "flux-bfl-async-edit", apiFormat: "bfl-official", asyncTask: true, submitEndpoint: endpoint, getResultEndpoint: "/bfl/v1/get_result", docs: { submit: BLTCY_BFL_FLUX_KONTEXT_DOC_URL, getResult: BLTCY_BFL_GET_RESULT_DOC_URL, }, pricePage: BLTCY_FLUX_PRICE_PAGE_URL, priceCheckedAt: BLTCY_FLUX_PRICE_CHECKED_AT, priceNote, }, imageGenConfig: DEFAULT_IMAGE_CONFIG, sortOrder, }; } export const BLTCY_IMAGE_MODEL_PRESETS: BltcyImageModelPreset[] = [ fluxEditPreset(10, "flux-kontext-pro", "Flux Kontext Pro", "fal 组 0.12/次"), fluxEditPreset(20, "flux-kontext-max", "Flux Kontext Max", "fal 组 0.24/次"), ]; export const BLTCY_BFL_MODEL_PRESETS: BltcyImageModelPreset[] = [ bflAsyncEditPreset({ sortOrder: 10, modelId: "bfl/flux-kontext-pro", displayName: "BFL Flux Kontext Pro", endpoint: "/bfl/v1/flux-kontext-pro", priceNote: "fal 组 0.12/次", }), bflAsyncEditPreset({ sortOrder: 20, modelId: "bfl/flux-kontext-max", displayName: "BFL Flux Kontext Max", endpoint: "/bfl/v1/flux-kontext-max", priceNote: "fal 组 0.24/次", }), ];