分类 默认分类 下的文章

JSON提示词技巧(风格图片仿照):

1、豆包提取图片的风格json提示词
上传一张图片,发送提示词:提取这张图片的JSON提示词

2、即梦直接用json提示词生成仿照图片
上传一个人脸图,提示词:参考这个人物面部,使用以下提示词生图 + 第1步得到的JSON提示词

3、可以修改以下的提示词一风格中的内容,生成自己想要的图片

我输入任何画面描述,你必须自动生成一个JSON提示词。结构完全固定,内容使用中文,渲染风格固定为《双旗镇刀客×西部片×武侠×老电影》的混合风格。✅

【一】风格规则(不允许改变)
所有生成内容必须符合以下固定美术风格:
■整体光线: 黄昏时刻(强制)
■画面风格: 老电影质感(old film)+ 真实光影 + 电影级对比度
■色调: 低饱和土色、青灰、深红、夕阳金橙色
■电影质感: 稍旧、粗糙、有岁月感,风蚀的材质细节,光影写实、有强方向性
■氛围: 荒凉、紧张、克制、诗性暴力
■分辨率: 4K 电影 2.35:1
■胶片感: 90s heavy film grain(但不出现可见“粉尘粒子”)
■画面质感要求: ✅材质旧感、磨痕、粗糙光影 ✅轻微暗角 ✅胶片年代感 ✅光线自然不完美、有衰减、有反射 ❌不出现粉尘飘浮 ❌不出现烟雾、沙子、空气粒子

【二】输出JSON时必须遵守以下固定结构,不得修改字段名,只能填内容
{
"version":"1.0",
"profile" :"He Ping - Double Flag Town Spaghetti Western W Wuxia Old Film Sunset Style",
"engine":"nanobanana",
"model":"nanobanana",
"formatting":{
"resolution":"4K",
"aspect_ratio":"2.35:1",
"grain":"1990s_film_grain_heaw",
"camera_speed":"static"
},
"scene":{
"location":"",
"time_of_day":"",
"description":""
},
"characters":[
{
"name":"",
"brief":""
}
],
"props":"",
"style":{
"aesthetic_mix":"意大利西部片光影中国武侠极简气质老电影质感",
"color_palette":{
"keywords":["低饱和","土色系","夕阳金橙","青灰","深红","旧胶片色偏"],
"colors":[]
},
"lighting":{
"type":"夕阳光/侧逆光",
"description":"固定为黄昏金橙色光线,光影真实自然,具有老电影般的光比与衰减,材质表面带轻微风蚀旧痕。"
},
"texture":{
"film_grain":"重胶片颗粒(90年代老电影)",
"surface":"整体略旧、粗糙、有磨痕,不干净但无粉尘粒子"
}
},
"composition":{
"lens":"",
"framing":"",
"depth_of_field":"",
"negative_space":"",
"description":""
},
"camera":{
"movement":"静止",
"stability":"稳固",
"keywords":["荒凉","紧张","克制","电影质感","诗性暴力"],
"description":""
},
"mood":"",
"render_tags":["old_film_look", "sunset_cinematic_light", "low_saturation","worn_texture", "1990s_film_look", "spaghetti_western_wuxia"],
"prompt":"",
"negative_prompt":"高饱和色,干净无瑕的材质、现代高光、水泥光泽、光滑塑料皮肤、霓虹灯、未来感、卡通风、锐化过度、烟雾、空气粉尘、漂浮粒子、文字水印"
}
}

【三】行为规范(必须遵守)
✅根据我的画面描述自动填充JSON ✅黄昏光线必须保持(永不改变)✅输出电影级老胶片风格 ✅整画面略旧、不干净(材质粗糙而非空气脏)✅输出必须是合法JSON ✅不解释、不分析、不多文字 ✅只输出JSON
你不得: ❌修改字段名 ❌修改风格框架 ❌输出粉尘/烟雾 ❌输出JSON以外内容 ❌输出不符合老电影风格的画面

现在你的回复: 请只回复下面一句话: 模板已就绪,请输入画面描述。

要做多图一致性图片技巧:

1、豆包给出多宫格JSON提示词

# Role: Nano Banana 2 电影级拼图大导 (Cinematic Grid Master)

## Profile
你是一位精通 Nano Banana 2 (Gemini 3.1 Flash Image) 的电影级图像提示词专家。你的唯一目标是:根据用户的简短灵感,输出一段用于生成“单张 6x6 电影级紧凑拼图”的超级中文提示词,并配套提供一份详尽的 36 镜头文字版拆解脚本。

## Core Principles
1. **彻底拒绝手绘与边框 (No Sketch/Borders)**: 绝不能在提示词中出现“手绘、草图、白边、画纸”等概念。必须强调“真实的真人电影截图”、“无缝紧密拼接”。
2. **强制画幅与排版 (16:9 Widescreen)**: 第一句就明确规定每个子画面的比例是 16:9 宽银幕,整体拼图也是 16:9。
3. **全局提示词前置与丰富化**: 总提示词 `nanobanana2_master.prompt` 必须放在 JSON的第一位。无需在其中罗列25个格子的具体动作,而是要把**画面质感、胶片型号、布光风格、调色倾向、核心角色特征、整体氛围**描写到极致。
4. **详尽的剧本拆解**: 后续的 36 个 shot 脚本虽然不发给生图模型,但必须为用户提供极其详细的导演级参考,包括具体的运镜、动作细节、情绪和光影。

## Workflow
收到输入后,隐式完成以下推演,并严格输出 JSON:
1. **构思总控画面**: 设计极具大片感的胶片质感、光影方案与色彩美学。
2. **提炼极品提示词**: 撰写全文 Master Prompt,强化电影质感与多宫格控制。
3. **详写 25 格文字脚本**: 以微观/宏观自适应的节奏,详细拆解 36 个电影镜头的画面内容。

## JSON Output Format
必须严格输出以下 JSON,无多余文本:

{
  "nanobanana2_master.prompt": "一张包含36个子画面的6x6, 16:9画幅的无缝紧凑网格拼图, 全部由极其逼真的真人电影截图 (Cinematic film stills) 组成, 边缘紧密贴合, 绝对没有白边或手绘分镜边框。每个子画面都是标准的 16:9 宽银幕比例。画面展现: [一句话核心剧情]。主要角色: [详细的中外外貌与服装特征]。全局风格: [极其详尽的质感描述, 例如: 好莱坞大片质感, 赛博朋克霓虹美学, 冷色调青橙配色 (Teal and Orange), 变形宽银幕镜头 (Anamorphic lens), 柯达Vision3 500T 胶片质感, 强烈的体积光, 烟雾弥漫的阴暗氛围, 8K极高画质, 杰作]。整体比例 16:9。",
  "metadata":{
    "logline":"一句话总结故事或片段核心",
    "scale_type":"微观片段 (如: 1分钟的枪战对峙) / 宏观故事 (如: 一段完整的探险)",
    "color_grading":"具体的电影调色方案说明"
  },
  "detailed_script_breakdown":[
    {
      "shot": 1,
      "camera_movement": "景别与运镜 (例如: 大远景, 缓慢向前推进)",
      "action_details":"详尽的剧情与动作描述 (例如: 镜头从满是积水的柏油马路向上摇, 展现巨大的霓虹全息广告牌, 主角正孤独地站在雨中)",
      "lighting_and_atmosphere": "本镜头的具体光影 (例如: 顶光, 冰冷的蓝色雨夜反光)"
    },
    {
      "shot": 2,
      "camera_movement": "...",
      "action_details": "...",
      "lighting_and_atmosphere": "..."
    }
    // ... 必须包含36个详尽的镜头拆解对象 ...
  ]
}


明白请回复明白!

发送以上提示词后,再发送你的创意内容(剧本或者几个连续的画面简要描述),让豆包生成宫格提示词

2、星流AI(或者带香蕉模型【google nano banana】的平台)做4、9、16、25、36宫格一致性图片
网址:https://www.xingliu.art/
直接发送上一步豆包给的提示词内容
平替方案liblibai的全能图片模型V2

3、splitimg将图片切开
https://www.splitimg.com/zh

4、将多图上传即梦发送“高清修复”将图片放大

真的可以 全部在 Nacos 里配置,不用改本地文件、不用重新打包!

Ruoyi 分布式版 本来就是用 Nacos 统一管理配置的!
你之前改本地 application.yml没用的,因为服务优先读 Nacos 配置


1. 为什么你改本地文件不生效?

因为 Ruoyi 微服务架构:

  1. 项目启动 → 优先去 Nacos 拉取配置
  2. 本地配置只做连接 Nacos 用
  3. 真正生效的是:
    Nacos → 配置管理 → application-dev.yml

所以:
你改本地文件 = 白改!不会生效!不需要打包!


2. 正确修复 /actuator 漏洞的方法(1 分钟搞定)

直接在 Nacos 里加配置,不用打包、不用重新编译!

步骤:

  1. 打开 Nacos 控制台
  2. 进入 配置管理 → 配置列表
  3. 找到 application-dev.yml(所有服务共享配置)
  4. 编辑,在最下面添加以下内容:
# 安全关闭 actuator 暴露,只允许健康检查
management:
  endpoints:
    web:
      exposure:
        include: health,info
  server:
    address: 127.0.0.1
  endpoint:
    health:
      show-details: always
  1. 点击 发布
  2. 重启微服务(只重启,不打包)

3. 这样改的好处

  • 不用重新打包
  • 不用本地改代码
  • 所有服务统一生效
  • 不影响前端任何接口
  • /actuator 立刻无法外部访问,漏洞修复完成

4. 最重要的一句提醒

你以后所有配置,都在 Nacos 里改,不要动本地文件!


总结(超简单)

  • Nacos 里的 application-dev.yml全局生效配置
  • 直接在里面加关闭 actuator 的配置
  • 发布 → 重启服务 → 完成
  • 不用打包!不用编译!不影响前端!

你的理解有一定道理,但关键在于 rewrite 指令的 break 标志

在 Nginx 中,rewritebreak 标志会停止当前 location 内的重写处理,但不会重新进行 location 匹配。所以即使 URI 被改成了 /xxx(去掉了 /api/ 前缀),请求仍然停留在当前 location /api/ 块内,继续执行后面的 proxy_pass 等指令,最终将修改后的 URI 代理到后端。

如果误用了 last 标志,则会在重写完成后重新匹配 location,此时 URI 变成 /xxx,就可能匹配到 location / 块,导致代理失效。但这里用的是 break,所以安全

总结

  • rewrite ... break; → 在当前 location 内继续处理,不会重新匹配 location
  • rewrite ... last; → 重写后重新匹配 location,可能跳转到其他 location

因此,你提供的配置中,/api/xxx 的请求会始终走代理,不会落到 location / 里。

池化和归一化是完全不同的概念。


1. 池化(Pooling)

  • 作用:在卷积神经网络(CNN)等模型中,对特征图进行下采样,缩小尺寸、减少参数量,同时保留重要特征。
  • 常见方式:最大池化(Max Pooling)、平均池化(Average Pooling)。
  • 操作:对局部区域取最大值或平均值,不涉及对数值的缩放或归一化。

2. 归一化(Normalization)

  • 作用:将数据缩放到一个特定范围(如 [0,1])或使分布符合某种统计特性(如均值为0、方差为1),以加速模型收敛、提高稳定性。
  • 常见方式

    • Min-Max 归一化:将数据线性缩放到 [0,1]。
    • Z-score 标准化:减去均值后除以标准差,使数据服从标准正态分布。
    • Batch Normalization:在神经网络层间对激活值进行标准化。
  • 操作:对数值进行线性变换或统计调整,不改变数据维度。

3. 主要区别

方面池化归一化
目的降维、特征选择缩放数值范围、稳定分布
操作对象空间或时间邻域单个样本或特征维度
维度变化通常降低尺寸不改变维度
典型应用CNN 中的下采样数据预处理、网络内部层

虽然两者常同时出现在深度学习模型中,但它们服务于不同的目的,不可混淆。

这个计算余弦相似度的MYSQL函数:

    IF JSON_LENGTH(v1) != JSON_LENGTH(v2) THEN
        RETURN NULL;
    END IF;
    WHILE
        i < len
        DO
            SET sim = sim + (JSON_EXTRACT(v1, CONCAT('$[', i, ']')) * JSON_EXTRACT(v2, CONCAT('$[', i, ']')));
            SET i = i + 1;
        END WHILE;
    RETURN sim;
END

然后通过这个SQL语句搜索:

        $normalizedVector = json_encode($normalizedVector);
        $similarity =  new Expression("COSIM(v.normalized_vector, :json)", [
            ':json' => $normalizedVector
        ]);
        $query2->select(["v.id", "v.merchant_id", "v.product_id", "v.qfa_id", 'similarity' => $similarity]);
        $query2->andWhere(['v.id' => $recordIds]);
        $query2->orderBy(['similarity' => SORT_DESC]);
        $query2->limit($n);
        if ($withQfa) {
            $query2->innerJoinWith('qfa as q');
            $query2->andWhere('q.status=1');
        }

这个COSIM的函数,只是将两个json向量数组对应位置的两个数相乘后累加起来返回,为什么能达到语意搜索的效果?

COSIM 函数实际上只计算了两个 JSON 数组的点积(对应位置元素相乘后累加),而不是严格的余弦相似度(余弦相似度还需要除以两个向量的模长乘积)。但它依然能在你的场景中实现语义搜索,原因如下:


1. 语义搜索的原理:向量嵌入(Embedding)

现代语义搜索通常基于 文本嵌入(如 Word2Vec、BERT 等模型),将一段文本转换成一个高维稠密向量。这些向量的特点是:语义相近的文本,其向量在空间中的方向也相近。因此,我们可以用向量间的夹角余弦来度量相似度,即:

[
\text{cosine\_similarity}(A, B) = \frac{A \cdot B}{|A| |B|}
]

  • 当两个向量方向完全一致时,余弦相似度为 1;
  • 当它们正交时,为 0;
  • 当方向相反时,为 -1(但嵌入向量通常非负,所以范围在 [0,1])。

2. 为什么点积能代替余弦相似度?

在代码中,查询向量使用了 $normalizedVector 这一变量名,暗示查询向量已经做过归一化处理(即 (|B| = 1))。如果存储的向量 v.normalized_vector 同样也是归一化的((|A| = 1)),那么:

[
A \cdot B = \frac{A \cdot B}{1 \times 1} = \text{cosine\_similarity}(A, B)
]

此时点积就等于余弦相似度。即使存储的向量没有归一化,只要查询向量归一化,点积仍然与余弦相似度成正比(相差一个常数因子 (|A|)),排序结果不变。因此,在你的场景下,直接计算点积已经足够得到语义相似度的排序。


3. 函数 COSIM 的作用

COSIM 函数虽然名称是余弦相似度,但实现的是点积。它逐一取出两个 JSON 数组对应位置的值相乘并累加。这个过程正是向量相似度计算的核心运算。

  • 为什么能实现语义搜索?
    因为该函数计算出的点积数值越大,代表两个向量在方向上越接近,从而语义上越相关。配合 ORDER BY similarity DESC,就能将最相关的记录排在前面。

4. 注意事项

  • 如果向量没有归一化,点积会受到向量长度影响,可能导致长度大的向量获得更高的分数,从而影响排序。此时应改用完整的余弦相似度公式:
    [
    \frac{A \cdot B}{\sqrt{\sum A_i^2} \times \sqrt{\sum B_i^2}}
    ]
    其中分母部分可以通过预先存储向量的模长(或计算平方和)来优化。
  • 你的函数未考虑向量长度不等的情况(已返回 NULL),这保证了输入向量的维度一致。
  • 性能方面:该函数使用循环逐元素相乘,当向量维度较高(如 512 维或更高)时,每次查询都会对每条记录执行循环,效率较低。在生产环境中,建议:

    • 使用数据库的向量扩展(如 MySQL 8.0.31 后的 VECTOR 类型 + 向量函数);
    • 或将向量存储到专门支持向量检索的数据库(如 Milvus、Pgvector、Elasticsearch 等);
    • 或利用近似最近邻(ANN)算法加速检索。

总结

COSIM 函数虽然只计算了点积,但因为查询向量已经归一化(且假设存储向量也归一化),它等价于余弦相似度,因此能够正确反映两个文本向量的语义相关性。这正是语义搜索能够“按意思”排序的核心数学基础。