176 lines
5.2 KiB
TypeScript
176 lines
5.2 KiB
TypeScript
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<string, any>;
|
|
defaultParams: Record<string, any>;
|
|
imageGenConfig: Record<string, any>;
|
|
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/次",
|
|
}),
|
|
];
|