告别付费API!用gpt4free-ts轻松集成Midjourney AI绘画能力
你是否还在为Midjourney的付费API而烦恼?想在项目中集成AI绘画功能却受制于高昂的服务费用?本文将带你通过gpt4free-ts项目,零成本实现Midjourney API调用,轻松将AI绘画能力集成到你的应用中。读完本文,你将掌握从环境搭建到高级功能调用的全流程,让创意设计不再受限于预算。
项目概述与核心优势
gpt4free-ts是一个开源项目,旨在提供免费的OpenAI GPT-4 API服务,同时也支持多种AI模型集成,包括Midjourney的AI绘画功能。项目路径为gh_mirrors/gp/gpt4free-ts。
该项目的核心优势在于:
- 免费使用Midjourney等AI模型的API功能
- 基于TypeScript开发,类型安全,易于集成
- 支持多种AI绘画操作,包括生成、修改、混合等
- 提供灵活的配置选项,满足不同场景需求
项目的AI功能源码主要集中在model/目录下,其中Midjourney相关的实现位于model/midjourney/目录。
环境准备与安装
系统要求
- Node.js 14.x或更高版本
- npm或yarn包管理器
- Git
安装步骤
- 克隆项目仓库:
git clone https://link.gitcode.com/i/ebbf8f3ae0b1908560b9908bb67bda9d.git
cd gpt4free-ts
- 安装依赖:
npm install
# 或
yarn install
- 配置Midjourney账号信息
创建或修改配置文件,添加Midjourney的账号信息:
// 在配置文件中添加类似如下的配置
midjourney: {
accounts: [
{
token: "your-discord-token",
server_id: "midjourney-server-id",
channel_id: "midjourney-channel-id",
mode: "fast" // 或 "relax"
}
],
size: 1,
serial: false
}
Midjourney核心功能与API调用
功能概述
gpt4free-ts提供的Midjourney集成支持三种主要操作:
- Imagine:根据文本提示生成图像
- Component:对已生成的图像进行操作(放大、变体等)
- Blend:混合多张图像生成新图像
这些功能的实现位于model/midjourney/index.ts文件中,定义了一个Midjourney类,继承自基础的Chat类。
图像生成(Imagine)
Imagine功能允许你根据文本提示生成图像。核心代码如下:
async imagine(
action: AIAction,
child: Child,
stream: EventStream,
onEnd: () => void,
) {
// 实现代码...
await child.imagine(action.prompt!, {
onStart: (e) => {
// 开始回调
},
onUpdate: async (e) => {
// 更新回调,显示进度
},
onEnd: async (e) => {
// 完成回调,处理结果
},
onError: (e) => {
// 错误处理
},
});
}
使用示例:
// 创建Midjourney实例
const midjourney = new Midjourney();
// 定义生成请求
const request = {
type: "imagine",
prompt: "a beautiful sunset over the mountains, digital art"
};
// 发送请求并处理响应
midjourney.askStream(request, {
write: (event, data) => {
if (event === Event.message) {
console.log(data.content);
}
},
end: () => {
console.log("生成完成");
}
});
prompt格式说明:
- 必须使用英文
- 基本格式:
[PREFIX] [SCENE] [SUFFIX] [Parameters] - 支持多种参数,如
--ar设置宽高比,--seed设置随机种子等
详细的prompt格式说明可参考model/midjourney/prompt.ts文件。
图像处理(Component)
Component功能允许你对已生成的图像进行各种操作,如放大、生成变体等。支持的操作类型在model/midjourney/define.ts中定义:
export const ComponentLabelMap: Record<string, string> = {
U1: '放大第一张',
U2: '放大第二张',
U3: '放大第三张',
U4: '放大第四张',
'🔄': '重新生成',
V1: '第一张变体',
V2: '第二张变体',
V3: '第三张变体',
V4: '第四张变体',
'Upscale (Subtle)': '细微放大',
'Upscale (Creative)': '创造放大',
'Vary (Subtle)': '细微变体',
'Vary (Strong)': '强烈变体',
'Zoom Out 2x': '缩放2倍',
'Zoom Out 1.5x': '缩放1.5倍',
'⬅️': '左移',
'➡️': '右移',
'⬆️': '上移',
'⬇️': '下移',
};
使用示例:
// 定义组件操作请求
const request = {
type: "component",
message_id: "generated-image-message-id",
channel_id: "midjourney-channel-id",
component_type: 2,
custom_id: "MJ::JOB::upsample::1::..." // 从生成结果中获取的custom_id
};
// 发送请求
midjourney.askStream(request, {
// 处理响应...
});
图像混合(Blend)
Blend功能允许你混合2-5张图像生成新的图像。支持设置不同的宽高比:
export enum DimensionsType {
Portrait = '--ar 2:3',
Square = '--ar 1:1',
Landscape = '--ar 3:2',
}
使用示例:
// 定义混合请求
const request = {
type: "blend",
image_urls: [
"url-to-image-1",
"url-to-image-2",
"url-to-image-3"
],
dimensions: "--ar 3:2" // 可选,默认为正方形
};
// 发送请求
midjourney.askStream(request, {
// 处理响应...
});
高级功能与实际应用
进度跟踪与状态管理
Midjourney API调用是一个异步过程,gpt4free-ts提供了进度跟踪功能,帮助你实时了解图像生成状态:
// 进度更新回调示例
onUpdate: async (e) => {
if (e.attachments[0]?.url) {
stream.write(Event.message, {
content: `${getProgress(e.content)}%})`,
});
}
}
getProgress函数用于从响应内容中提取进度百分比:
export function getProgress(text: string) {
const regex = /\d+(\.\d+)?(?=%)/;
const match = text.match(regex);
return match ? Number(match[0]) : null;
}
批量处理与并发控制
为了提高效率,gpt4free-ts支持批量处理和并发控制。通过Pool类实现账号池管理:
private pool = new Pool<Account, Child>(
this.options?.name || '',
() => Config.config.midjourney.size,
(info, options) => {
return new Child(this.options?.name || '', info, options);
},
// 其他配置...
);
实际应用场景
-
自动设计生成:结合GPT模型生成产品描述,再调用Midjourney生成对应的产品图片。
-
社交媒体内容创建:批量生成符合不同平台尺寸要求的图像。
-
游戏素材生成:为游戏开发快速生成场景、角色等素材。
-
教育资源制作:根据教学内容自动生成相关插图。
常见问题与解决方案
连接问题
问题:无法连接到Midjourney服务。
解决方案:
- 检查网络连接和代理设置
- 验证Discord账号token是否有效
- 确认Midjourney服务器和频道ID是否正确
- 检查账号是否有权限使用Midjourney机器人
生成质量问题
问题:生成的图像质量不佳或不符合预期。
解决方案:
- 优化prompt,提供更详细的描述
- 使用参数调整,如
--quality提高质量 - 尝试不同的风格关键词
- 使用
--seed固定种子,以便复现结果
性能问题
问题:生成速度慢或并发处理能力不足。
解决方案:
- 调整配置中的
mode为"fast"(如果账号支持) - 增加账号池中的账号数量
- 优化请求队列管理
- 避免在高峰期使用
总结与展望
通过gpt4free-ts项目,我们可以免费、便捷地集成Midjourney的AI绘画能力,极大降低了创意设计的门槛。本文详细介绍了项目的安装配置、核心功能调用以及高级应用技巧,希望能帮助开发者更好地利用这一工具。
未来,随着项目的不断发展,我们可以期待更多AI模型的集成和功能优化。建议定期查看项目的README.md和更新日志,以获取最新功能和改进信息。
如果你觉得这个项目有帮助,请点赞、收藏并关注项目仓库,以便获取最新动态和更新。同时,也欢迎参与项目贡献,一起完善这个强大的开源工具。
提示:使用AI生成内容时,请遵守相关法律法规和伦理准则,尊重知识产权,避免生成不当内容。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



