增加即梦图片5.0和视频2.5的能力

This commit is contained in:
andy committed 2026-08-21 13:44:56 +08:00
1 parent 542246e4ce
commit 88a4268d40
55 files changed
+1412 -200

No files matched your search

+16 -9
View File
@@ -10,6 +10,9 @@ import { getVisualClientConfig } from "@/lib/volcengine/visual-client";
import type { EnabledImageCapability } from "@/lib/types";
import { getBailianConfig } from "@/lib/bailian/client";
type SettingsImageCreationEngine = ImageCreationEngine | "seedream";
const SEEDREAM_50_PRO_MODEL = "doubao-seedream-5-0-pro-260628";
export type SettingsField = {
key: string;
label: string;
@@ -112,8 +115,8 @@ const settingDefinitions: Array<{
},
{
id: "seedance",
title: "Seedance 视频 API",
description: "只需填写火山方舟 API Key;Base URL、模型和默认参数使用系统默认值。",
title: "火山方舟 API",
description: "Seedance 视频与 Seedream 5.0 Pro 图片共用此 API Key;其余参数使用系统默认值。",
fields: [
{ key: "SEEDANCE_API_KEY", label: "方舟 API Key", secret: true, type: "password" }
]
@@ -151,6 +154,7 @@ const engineFieldDefinitions: FieldDefinition[] = [
defaultValue: "jimeng",
options: [
{ label: "即梦 / 火山视觉", value: "jimeng" },
{ label: "Seedream 5.0 Pro / 火山方舟", value: "seedream" },
{ label: "EvoLink GPT Image 2", value: "evolink" },
{ label: "阿里云百炼 Wan 2.7", value: "bailian" }
]
@@ -193,6 +197,7 @@ export async function getApiSettings() {
visual: Boolean(getVisualClientConfig()),
evolink: Boolean(getEvolinkImageConfig()),
seedance: Boolean(seedance.apiKey),
seedream: Boolean(seedance.apiKey),
bailian: Boolean(getBailianConfig().apiKey),
auth: authConfigSummary(auth) === "configured",
organization: platformAccountStoreConfigured()
@@ -258,7 +263,7 @@ function buildEngineAssignments(fileEnv: Map<string, string>): EngineAssignment[
capability: "image.generate",
label: "图片生成",
engine: generateEngine,
reqKey: generateEngine === "bailian" ? bailian.imageModel : generateEngine === "evolink" ? evolink.model : capabilities["image.generate"].reqKey,
reqKey: generateEngine === "bailian" ? bailian.imageModel : generateEngine === "evolink" ? evolink.model : generateEngine === "seedream" ? SEEDREAM_50_PRO_MODEL : capabilities["image.generate"].reqKey,
field: engineFieldDefinitions[0],
fileEnv
}),
@@ -279,7 +284,7 @@ function buildEngineAssignments(fileEnv: Map<string, string>): EngineAssignment[
function imageEngineAssignment(input: {
capability: EnabledImageCapability;
label: string;
engine: ImageCreationEngine;
engine: SettingsImageCreationEngine;
reqKey: string;
field: FieldDefinition;
fileEnv: Map<string, string>;
@@ -298,7 +303,7 @@ function imageEngineAssignment(input: {
};
}
function currentEngineValue(field: FieldDefinition, fileEnv: Map<string, string>): ImageCreationEngine {
function currentEngineValue(field: FieldDefinition, fileEnv: Map<string, string>): SettingsImageCreationEngine {
const explicit = process.env[field.key] ?? fileEnv.get(field.key);
if (explicit) return normalizeImageEngine(explicit);
return normalizeImageEngine(process.env.IMAGE_CREATION_ENGINE ?? fileEnv.get("IMAGE_CREATION_ENGINE") ?? process.env.IMAGE_PROVIDER ?? fileEnv.get("IMAGE_PROVIDER") ?? field.defaultValue);
@@ -316,16 +321,18 @@ function isConfigured(key: string, fileEnv: Map<string, string>) {
return Boolean(process.env[key] ?? fileEnv.get(key));
}
function normalizeImageEngine(value: string | undefined): ImageCreationEngine {
function normalizeImageEngine(value: string | undefined): SettingsImageCreationEngine {
const normalized = value?.trim().toLowerCase();
if (normalized === "seedream") return "seedream";
return normalized === "evolink" || normalized === "bailian" ? normalized : "jimeng";
}
function imageEngineLabel(engine: ImageCreationEngine) {
return engine === "evolink" ? "EvoLink" : engine === "bailian" ? "阿里云百炼" : "即梦";
function imageEngineLabel(engine: SettingsImageCreationEngine) {
return engine === "evolink" ? "EvoLink" : engine === "bailian" ? "阿里云百炼" : engine === "seedream" ? "Seedream 5.0 Pro" : "即梦";
}
function imageEngineConnected(engine: ImageCreationEngine) {
function imageEngineConnected(engine: SettingsImageCreationEngine) {
if (engine === "seedream") return Boolean(getSeedanceConfig().apiKey);
if (engine === "evolink") return Boolean(getEvolinkImageConfig());
if (engine === "bailian") return Boolean(getBailianConfig().apiKey);
return Boolean(getVisualClientConfig());