use super::{ExtraField, ModelOption, ProviderPreset, GROUP_CHINA, GROUP_LOCAL};
use crate::kind::{Kind, Protocol};
const NO_EXTRA: &[ExtraField] = &[];
pub(super) const VIDEO_PRESETS: &[ProviderPreset] = &[
ProviderPreset {
key: "seedance",
vendor_id: "volcengine",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.seedance.label",
label: "即梦 Seedance(火山方舟)",
hint_key: Some("providerTemplate.seedance.hint"),
hint: Some("图生视频,支持首尾帧;模型是 Seedance 不是 Seedream,ID 须与控制台「开通」一致。2.0 需先开通,1.0-pro 最稳"),
base_url: Some("https://ark.cn-beijing.volces.com/api/v3"),
model: "doubao-seedance-1-0-pro-250528",
models: &[
ModelOption::plain("doubao-seedance-1-0-pro-250528"),
ModelOption::plain("doubao-seedance-1-0-pro-fast-251015"),
ModelOption::plain("doubao-seedance-2-0-260128"),
ModelOption::plain("doubao-seedance-2-0-fast-260128"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["ark.cn-beijing.volces.com"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "minimax_video",
vendor_id: "minimaxi",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.minimaxVideo.label",
label: "海螺 MiniMax 视频",
hint_key: Some("providerTemplate.minimaxVideo.hint"),
hint: Some("I2V-01-live 偏动漫 / 插画风;Hailuo-02 新一代高质量,支持首尾帧"),
base_url: Some("https://api.minimaxi.com/v1"),
model: "MiniMax-Hailuo-02",
models: &[
ModelOption::plain("MiniMax-Hailuo-02"),
ModelOption::plain("I2V-01-Director"),
ModelOption::plain("I2V-01-live"),
ModelOption::plain("I2V-01"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["api.minimaxi.com"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://platform.minimaxi.com/user-center/basic-information/interface-key"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "vidu_video",
vendor_id: "aliyun",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.viduVideo.label",
label: "Vidu 视频(阿里百炼)",
hint_key: Some("providerTemplate.viduVideo.hint"),
hint: Some("DashScope 异步任务;审核相对宽松,写实人脸被别家拒时可换它"),
base_url: Some("https://dashscope.aliyuncs.com/api/v1"),
model: "vidu/viduq3-turbo_img2video",
models: &[
ModelOption::plain("vidu/viduq3-pro_img2video"),
ModelOption::plain("vidu/viduq3-turbo_img2video"),
ModelOption::plain("vidu/viduq2-pro_img2video"),
ModelOption::plain("vidu/viduq2-turbo_img2video"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["dashscope.aliyuncs.com"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://bailian.console.aliyun.com/?tab=model#/api-key"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "siliconflow_video",
vendor_id: "siliconflow",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.siliconflowVideo.label",
label: "硅基流动 视频 Wan",
hint_key: Some("providerTemplate.siliconflowVideo.hint"),
hint: Some("与对话 / 生图 / 配音同一个密钥"),
base_url: Some("https://api.siliconflow.cn/v1"),
model: "Wan-AI/Wan2.2-I2V-A14B",
models: &[
ModelOption::plain("Wan-AI/Wan2.2-I2V-A14B"),
ModelOption::plain("Wan-AI/Wan2.1-I2V-14B-720P"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["api.siliconflow.cn"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://cloud.siliconflow.cn/account/ak"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "zhipu_video",
vendor_id: "zhipu",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.zhipuVideo.label",
label: "智谱 CogVideoX",
hint_key: Some("providerTemplate.zhipuVideo.hint"),
hint: Some("支持首尾帧;与智谱对话同一个密钥"),
base_url: Some("https://open.bigmodel.cn/api/paas/v4"),
model: "cogvideox-flash",
models: &[
ModelOption::plain("cogvideox-3"),
ModelOption::plain("cogvideox-flash"),
ModelOption::plain("cogvideox-2"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["open.bigmodel.cn"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://open.bigmodel.cn/usercenter/apikeys"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "ai302_minimax_video",
vendor_id: "ai302",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.ai302MinimaxVideo.label",
label: "302.AI 视频·海螺",
hint_key: Some("providerTemplate.ai302MinimaxVideo.hint"),
hint: Some("国内聚合,透传海螺原生协议;一个 302 密钥即可"),
base_url: Some("https://api.302.ai/minimaxi/v1"),
model: "MiniMax-Hailuo-02",
models: &[
ModelOption::plain("MiniMax-Hailuo-02"),
ModelOption::plain("I2V-01-live"),
ModelOption::plain("I2V-01-Director"),
ModelOption::plain("I2V-01"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["api.302.ai/minimaxi"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://dash.302.ai/dashboard/apikey"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "ai302_zhipu_video",
vendor_id: "ai302",
kind: Kind::Video,
group_key: GROUP_CHINA.0,
group_label: GROUP_CHINA.1,
label_key: "providerTemplate.ai302ZhipuVideo.label",
label: "302.AI 视频·智谱",
hint_key: Some("providerTemplate.ai302ZhipuVideo.hint"),
hint: Some("国内聚合,透传智谱 CogVideoX 协议;一个 302 密钥即可"),
base_url: Some("https://api.302.ai/zhipu/api/paas/v4"),
model: "cogvideox-flash",
models: &[
ModelOption::plain("cogvideox-3"),
ModelOption::plain("cogvideox-flash"),
],
protocol: Protocol::OpenAiCompatible,
match_hosts: &["api.302.ai/zhipu"],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: Some("https://dash.302.ai/dashboard/apikey"),
is_local: false,
verified_at: None,
},
ProviderPreset {
key: "custom_video",
vendor_id: "custom_video",
kind: Kind::Video,
group_key: GROUP_LOCAL.0,
group_label: GROUP_LOCAL.1,
label_key: "providerTemplate.customVideo.label",
label: "自定义视频端点",
hint_key: Some("providerTemplate.customVideo.hint"),
hint: Some("按地址识别协议,识别不出时按火山方舟处理;new-api 系聚合站请在额外配置里标 video_api=newapi"),
base_url: None,
model: "",
models: &[],
protocol: Protocol::OpenAiCompatible,
match_hosts: &[],
extra_fields: NO_EXTRA,
default_extra: &[],
apply_url: None,
is_local: false,
verified_at: None,
},
];