魔音漫创源码解析:扩展指南: 如何在 moyin-creator 中接入自定义 AI 大模型供应商?
本文介绍了如何为开源AI影视生产工具魔音漫创(MoyinCreator)接入自定义AI大模型的方法。主要内容包括:1)分析核心架构,指出AI调用通过适配器模式实现;2)详细步骤:定义供应商类型、编写Provider适配器、注册工厂类、配置前端界面;3)测试验证方法。该方案采用模块化设计,支持灵活接入不同AI模型,不仅适用于大语言模型,也可扩展至图像和视频生成接口。文章还提供了流式传输优化等实用建议
前言
魔音漫创 (Moyin Creator) 是一款备受关注的开源 AI 影视生产工具,它通过串联剧本解析、角色造型、分镜绘制及视频生成,实现了从“文字”到“短剧”的全流程自动化。
在实际生产中,开发者往往希望接入更具性价比或特定领域能力的 AI 模型(如 DeepSeek、本地 Ollama 部署的模型或公司内部的大模型)。本文将深入 moyin-creator 的源码架构,手把手教你如何通过扩展代码,接入一个自定义的 AI 大模型供应商。
1. 核心架构分析:AI 调用的“枢纽”
在 moyin-creator 中,大语言模型(LLM)主要负责剧本润色、分镜拆解以及提示词(Prompt)的优化。为了支持多供应商,项目采用了 适配器模式 (Adapter Pattern)。
所有的 AI 调用请求都会经过一个统一的接口层,根据配置调度到不同的 Provider(供应商)实现类。要接入新供应商,我们主要关注以下三个核心目录:
-
src/main/services/ai/: 后端 AI 逻辑处理核心。 -
src/shared/types/: 定义供应商、模型及配置的类型声明。 -
src/renderer/components/Settings/: 前端配置界面,用于输入 API Key 和 Base URL。
2. 准备工作:定义供应商类型
首先,我们需要在类型定义中“登记”新的供应商。
在 src/shared/types/ai.ts(或类似命名的类型文件)中,找到 AIProvider 枚举,添加你的自定义供应商:
export enum AIProvider {
OpenAI = 'openai',
Anthropic = 'anthropic',
MiniMax = 'minimax',
// 添加自定义供应商
CustomLLM = 'custom-llm',
}
同时,定义该供应商支持的模型列表:
export const CUSTOM_MODELS = [
'custom-model-v1',
'custom-model-pro',
];
3. 核心实现:编写 Provider 适配器
这是最关键的一步。你需要在 src/main/services/ai/providers/ 目录下创建一个新的类(例如 custom.ts),并继承项目定义的基类。
大部分现代大模型 API 都兼容 OpenAI 格式。如果你的供应商也兼容,可以直接复用逻辑;如果不兼容,则需手动实现 chat 方法。
import { BaseAIProvider } from '../base';
import { ChatMessage, AIResponse } from '@/shared/types';
export class CustomLLMProvider extends BaseAIProvider {
// 实现对话核心逻辑
async chat(messages: ChatMessage[], options: any): Promise<AIResponse> {
const { apiKey, baseUrl } = this.config;
const response = await fetch(`${baseUrl}/v1/chat/completions`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: options.model,
messages,
temperature: options.temperature || 0.7,
}),
});
const data = await response.json();
return {
content: data.choices[0].message.content,
usage: data.usage,
};
}
}
4. 注册与工厂化:让系统识别新供应商
找到 src/main/services/ai/factory.ts,在 AI 工厂类中将新编写的适配器注册进去:
import { CustomLLMProvider } from './providers/custom';
export class AIFactory {
static createProvider(type: AIProvider, config: any) {
switch (type) {
case AIProvider.OpenAI:
return new OpenAIProvider(config);
case AIProvider.CustomLLM: // 注册新供应商
return new CustomLLMProvider(config);
default:
throw new Error(`Unsupported AI Provider: ${type}`);
}
}
}
5. 前端适配:在设置中显示
为了让用户能在软件界面上配置 API Key,我们需要修改设置面板。
-
修改配置数据结构:在
src/shared/consts/settings.ts中增加新供应商的默认配置项。 -
更新 UI 组件:在
src/renderer/views/Settings/AIConfig.tsx中,添加一个表单项。
TypeScript
// 示例:增加一个 Tab 或 下拉选项
{provider === AIProvider.CustomLLM && (
<div>
<Input label="API Base URL" value={config.baseUrl} placeholder="https://api.your-llm.com" />
<Input label="API Key" type="password" value={config.apiKey} />
</div>
)}
6. 测试与调试
完成上述步骤后,你可以通过以下方式进行验证:
-
开发者模式运行:执行
npm run dev启动项目。 -
配置 API:进入“设置 -> AI 配置”,选择你新增的供应商,输入参数并点击“保存”。
-
功能测试:尝试进入“剧本板块”,点击“自动生成剧本”。
-
日志查看:在控制台(Console)查看是否有网络请求发往你自定义的 Base URL。
结语
通过以上步骤,你已经成功为 moyin-creator 注入了新的“大脑”。魔音漫创的架构设计非常灵活,这种模块化的方式不仅适用于 LLM,也同样适用于接入自定义的图像生成(Stable Diffusion)或视频生成(Runway/Luma)接口。
💡 小贴士:
-
如果你的自定义模型响应较慢,建议在适配器中实现 流式传输 (Streaming) 接口,以提升用户体验。
-
记得在提交代码前,检查
src/shared/types中的类型兼容性,避免引起编译错误。
更多推荐


所有评论(0)