Skip to content

sobiny/tastchatopenai

Repository files navigation

Midjourney 自动化控制台 (ThinkPHP 5.0.24)

本项目基于 ThinkPHP 5.0.24 构建,整合了 Midjourney API 的图像生成、放大、变换、Describe 等能力,并提供异步回调与数据库任务管理。

功能概览

  • 图像生成功能:输入 Prompt 一键提交任务。
  • 🔁 放大 / 变换:针对已有任务执行 Upscale 与 Variation。
  • 🖼️ Describe 支持:通过图片链接生成文本描述。
  • 📡 异步回调:实现 /api/task/callback 回调接口,自动更新任务状态与图片链接。
  • 📊 任务看板:使用 Axios 实时刷新任务列表,查看进度、失败原因等。
  • 💾 数据库持久化:内置 mj_tasks 表结构与 Phinx 迁移脚本,默认支持 SQLite。
  • 🧩 参数可视化配置:在控制台中勾选/选择常见的 --ar--v--q--style--tile 等 Midjourney 参数,自动生成 options 载荷。
  • 🖼️ 垫图上传:支持本地图片上传或远程 URL 粘贴,生成可公网访问的 --url 链接随任务提交。

快速开始

  1. 安装依赖

    composer install
  2. 复制环境变量模板并填写

    cp .env.example .env

    请在 .env 中配置:

    • midjourney.token:Midjourney API Token;
    • midjourney.callback_url:公网可访问的回调地址(例如 https://your-domain.com/api/task/callback)。该地址会在提交任务时一并发送给 Midjourney,由其服务器在任务状态变化时回调;
    • 若需要,可设置 database.database 指向 MySQL 或 SQLite 文件。
  3. 执行数据库迁移(需安装 topthink/think-migration 插件)

    php think migrate:run
  4. 启动内置开发服务器

    php think run

    访问 http://127.0.0.1:8000 即可使用可视化控制台。

高级参数与垫图

  • 快捷参数选项:高级面板提供 --ar(比例)、--v(版本)、--q(质量)、--style--stylize--chaos--seed--stop--weird--iw--tile--turbo--niji--fast--relax--uplight--upbeta 等常见开关,选择后会自动填充到请求的 options 中,可与自定义 JSON 参数合并。
  • 自定义 JSON:仍可在文本框中写入任意合法 JSON 对象(如 {"sameseed":123})覆盖或补充高级选项,便于快速迭代实验参数。
  • 垫图上传/管理垫图 / 图片参考 (-url) 区域支持拖入本地图片并调用 /api/task/upload 接口上传至 public/uploads/,也可粘贴远程图片 URL。列表中的链接会作为 image_urls 随任务发送(最多 6 张),首个地址同时作为 image_url
  • 提醒:请确保部署环境允许公网访问 public/uploads/ 目录,以便 Midjourney 服务能够获取上传的垫图资源。

目录结构

php think run

访问 http://127.0.0.1:8000 即可使用可视化控制台。

目录结构

├── application
│   ├── api
│   │   └── controller
│   │       └── Midjourney.php        # API 控制器,封装任务提交、回调、查询
│   ├── common
│   │   ├── model
│   │   │   └── MjTask.php            # 数据模型
│   │   ├── service
│   │   │   └── MidjourneyClient.php  # 调用 Midjourney API 的封装
│   │   └── validate
│   │       └── MjTaskValidate.php    # 表单校验
│   ├── index
│   │   ├── controller
│   │   │   └── Index.php             # 可视化页面
│   │   └── view
│   │       └── index
│   │           └── index.html        # 前端页面模板
│   ├── config.php                    # 全局配置
│   ├── database.php                  # 数据库配置
│   ├── route.php                     # 路由定义
│   └── extra
│       └── midjourney.php            # Midjourney 配置
├── database
│   └── migrations
│       └── 20240101000000_create_mj_tasks_table.php
├── public
│   ├── index.php                     # 入口文件
│   └── static
│       ├── css/app.css
│       └── js/app.js
└── composer.json

├── application │ ├── api │ │ └── controller │ │ └── Midjourney.php # API 控制器,封装任务提交、回调、查询 │ ├── common │ │ ├── model │ │ │ └── MjTask.php # 数据模型 │ │ ├── service │ │ │ └── MidjourneyClient.php # 调用 Midjourney API 的封装 │ │ └── validate │ │ └── MjTaskValidate.php # 表单校验 │ ├── index │ │ ├── controller │ │ │ └── Index.php # 可视化页面 │ │ └── view │ │ └── index │ │ └── index.html # 前端页面模板 │ ├── config.php # 全局配置 │ ├── database.php # 数据库配置 │ ├── route.php # 路由定义 │ └── extra │ └── midjourney.php # Midjourney 配置 ├── database │ └── migrations │ └── 20240101000000_create_mj_tasks_table.php ├── public │ ├── index.php # 入口文件 │ └── static │ ├── css/app.css │ └── js/app.js └── composer.json


## 回调示例

## 回调示例

Midjourney 平台会在任务状态变化时向 `/api/task/callback` 发送 POST 请求。示例载荷:

```json
{
  "taskId": "93c9d820-f3f4-4d8a-b2f2-xxxx",
  "status": "SUCCESS",
  "progress": "100%",
  "imageUrl": "https://cdn.mjapiapp.com/.../image.png",
  "failReason": null
}

控制器会根据 taskId 自动更新 mj_tasks 表中的状态、进度、图片地址及元数据。

注意事项

  • 若部署在公网服务器,请确保 public/ 目录作为 Web Server 根目录。
  • 若需要使用 MySQL,请将 database.phptype 改为 mysql,并在 .env 中补充连接信息。
  • 建议结合 Redis 队列实现更复杂的任务状态轮询,可扩展 MidjourneyClient::fetchTask 方法。

欢迎根据业务需求继续扩展,如加入用户体系、任务权限控制、Webhook 签名校验等能力。

About

测试chatopenai

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published