ChatGPT-MidJourney-prompt
用大语言模型将自然语言翻译为Midjourney专业Prompt的开源Python库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用大语言模型将自然语言翻译为Midjourney专业Prompt的开源Python库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用过 Midjourney(MJ)的人都知道,真正的门槛不在于输入一句「画一只猫」,而在于如何写出高质量的 Prompt(提示词)——那些决定画面风格、光影、构图、材质的关键词组。
一个典型的困境是:用户心里有一个画面感,但很难用 MJ 能理解的「语言」精准描述。比如你想画「京都雨后的青石板街道,日式灯笼微微晃动,赛博朋克霓虹倒映在水洼里」,这是一个复杂的意象,但 MJ 的 Prompt 语法(:: 权重标记、--ar 比例参数、--v 版本号等)对于新手来说门槛很高。你可能花20分钟调参,结果出来的图和你想象的天差地别。
ChatGPT-MidJourney-prompt 解决的就是这个问题:它让用户用自然语言描述想要的画面,由大语言模型(ChatGPT 或 MiniMax)帮你翻译成专业的 MJ Prompt,大幅降低创作门槛,同时激发更多灵感。
图1:输入自然语言「樱花::5, 粉色::4, Licorice植物::3, 日本风景::5」,由本项目生成的MJ Prompt驱动绘制的作品
这个项目由开发者 awekrx(邮箱 d.ipatov@gmail.com)创建于2023年3月,最初的动机非常朴素:作者自己频繁使用 Midjourney,发现每次写 Prompt 都要查阅大量文档、反复调参,效率很低。
项目最初使用 revChatGPT 库直接调用 ChatGPT 账号(通过邮箱密码或 session token),后来随着 OpenAI 推出官方 API,项目也支持了 api_key 认证方式。2023年底,项目进一步扩展,添加了 MiniMax 作为替代 LLM 后端——这是一个有204K上下文窗口的国产大模型,API 兼容 OpenAI 格式,中国用户使用起来更加便利。
项目采用 MIT 许可证,目前 GitHub 上约 341 颗星,topics 包括 ai-art、midjourney、prompt-engineering、chatgpt、text-to-image 等,技术定位清晰:做 AI 绘画领域的 Prompt 工程工具。
项目支持 Midjourney 的四种主要模型,每种模型有不同的参数体系:
| 方法 | 对应MJ模型 | 特点 |
|------|-----------|
| V5() | Midjourney V5 | 最新模型,支持艺术风格/动漫/照片级/头像等多种类型 |
| V4() | Midjourney V4 | 稳定版,支持多种渲染引擎(Octane/Unreal/Ray Tracing) |
| niji() | Niji模型 | 专注动漫/插画风格 |
| testp() | Test/Personal模型 | 实验性比例参数 |
调用方式极为简洁:
from chatGPTMidJourneyPrompt.mjPrompt import PromptGenerator
# 最简方式(使用MiniMax)
config = {"provider": "minimax", "minimax_api_key": "your_key"}
pg = PromptGenerator(config)
prompt = pg.V5("cyberpunk cityscape at night")
print(prompt)
# 输出: cyberpunk city::5, neon lights::4, rain::3 ... --v 5 --s 1000 --q 2
除了自动生成,项目还支持手动传入精细化配置:
promptConfig = {
"model": "artistic",
"type": "anime",
"renderer": "ray tracing",
"content": "character",
"aspect_ratio": "16:9",
"color": "red",
"url": "参考图URL"
}
prompt = pg.V5("samurai warrior", config=promptConfig, words=50)
words 参数控制 LLM 生成描述词的数量上限(默认35),用户可以调整来控制 Prompt 的丰富程度。
项目特别支持了 MiniMax 作为 LLM 后端,这是一个对国内用户很友好的选择:
openai Python库即可MiniMax-M2.7(标准/高速)、MiniMax-M2.5(标准/高速)四个档位temperature(0.01~1.0)来控制输出的创造性从代码结构来看,这个项目虽然体量不大,但架构设计颇为合理:
src/chatGPTMidJourneyPrompt/
├── mjPrompt.py # 核心类 PromptGenerator(~230行)
├── chatbots/
│ └── minimax.py # MiniMax后端封装(~35行)
├── prompt_models/
│ ├── artistic.txt # 艺术风格Prompt模板
│ └── weights.txt # 权重风格Prompt模板
└── settings/
├── V5.py # V5模型参数白名单
├── V4.py # V4模型参数白名单
├── niji.py # Niji参数白名单
└── testp.py # Testp参数白名单
PromptGenerator 的核心逻辑是一个标准的四步流水线:
__create_prompt):从 prompt_models/ 目录读取对应风格的 Prompt 模板,用 TEXT(用户输入)和 NNN(词数上限)替换占位符,构造发送给 LLM 的完整 Prompt__ask):根据配置的 provider(ChatGPT V1/V3 或 MiniMax)调用对应 chatbot__slice_no_parameters):用正则表达式提取 LLM 回答中的 --no xxx::N 格式的参数,并从主体中移除--v(版本)、--s(风格强度)、--q(质量)等 MJ 固定参数项目在 settings/ 目录下为每个 MJ 模型维护了一个参数白名单,__check_parameter_in_config_and_settings 方法对用户传入的参数进行校验,有效防止了恶意或错误参数注入 MJ 请求。
项目 Python 依赖只有 openai>=1.0.0(调用 OpenAI/MiniMax API)和 revChatGPT(用于旧版 ChatGPT 账号认证),几乎零运维负担。
门槛评估:低。
安装只需一行 pip install chatGPTMidJourneyPrompt,对于有 Python 编程经验的用户,10分钟即可上手。
需要注意的是:
README 中提到了「CLI-app and discord-bot will be available within a few days」,但这些功能最终并未交付——这是一个小遗憾。
图2:输入「星空::5, 银河::4, 太空::5」,由本项目生成的MJ Prompt驱动的星空主题作品
LLM 的输出有随机性,同一句自然语言描述,每次调用生成的 MJ Prompt 可能存在差异。项目虽然有白名单校验,但校验发生在最终拼接阶段,LLM 本身的理解偏差无法自动纠正。
从 GitHub 来看,项目最后一次有意义的更新是2023年添加 MiniMax 支持,之后处于低维护状态。revChatGPT 库本身也在快速演进,旧版 V1 接口是否长期可用存在一定风险。
README 明确预告了 CLI 和 Discord Bot,但这两个功能从未实现。
Prompt Engineering(提示词工程) 是2023年 AI 领域最热门的话题之一。这个项目代表了一类典型的「AI for AI」工具:用大语言模型来辅助生成用于另一个 AI 系统的 Prompt。
从技术演进趋势看:多模型支持(V4/V5/niji/testp)是必要的,因为 MJ 本身在快速迭代;MiniMax 作为国产替代的决策很务实;纯库的设计让它可以被其他工具轻松集成。
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能完整性 | ★★★★☆ | 覆盖MJ主流模型,参数控制较全,MiniMax支持是亮点 |
| 上手难度 | ★★★★★ | pip安装即用,代码简洁,文档清晰 |
| 代码质量 | ★★★★☆ | 模块化设计,白名单机制优雅,但规模小难以全面评估 |
| 维护状态 | ★★★☆☆ | 2023年后更新较少,低活跃但也无明显问题 |
| 创新性 | ★★★☆☆ | 定位清晰,但「LLM生成Prompt」这一模式已有多个类似项目 |
适合人群:Midjourney 重度用户、AI 绘画爱好者、需要将 MJ Prompt 生成集成到自己工具链的开发者。
不适合:希望开箱即用(无Web UI)、期待持续维护、对代码质量有企业级要求的场景。