feat(image): 以插件声明统一图片参数、尺寸选择与定价合同 (#760)
* feat(image): 图片参数 - 统一插件声明配置与生成合同 * docs(image): 图片参数 - 说明声明合同与验证边界 * fix(plugins): 图片声明 - 保留内联素材支持并同步制品文档 * fix(image): 参数合同 - 对齐审批意图和尺寸预检调用方 * fix(image): 调用链 - 保留公开意图并接通独立分辨率 * fix(image): 图片参数 - 补齐分辨率接线与目录价格投影
This commit is contained in:
@@ -47,6 +47,10 @@
|
||||
|
||||
请求示例:`{"model":"mj-v8.2","prompt":"生成一张氛围感美女照片","size":"9:16","raw":false,"quality":1,"stylize":100,"chaos":0,"weird":0,"hd":false,"n":1}`。
|
||||
|
||||
## 动态图片参数
|
||||
|
||||
`contributes.providers[].imageParameters` 是渠道模型、前台模型与生成界面共用的参数合同。`name` 为稳定身份,`type`、`values`、`min/max/step`、`default` 描述输入;`models` 限定适用上游模型,`enabled` 为初始启用状态。只有 `pricing: true` 的启用字段允许作为价格条件;其他参数仍参与生成。渠道可收窄范围,绑定与计价资格由插件拥有。`binding` 映射到统一请求或插件自己的 `providerOptions` 命名空间。
|
||||
|
||||
<!-- YINGCE_MANIFEST_CONTRACT_START -->
|
||||
## Manifest 完整接口定义
|
||||
|
||||
@@ -57,7 +61,7 @@
|
||||
"apiVersion": "yingce.plugin/v2",
|
||||
"id": "kacang-midjourney",
|
||||
"name": "卡藏 Midjourney",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"author": "影绘",
|
||||
"description": "适配卡藏特惠、V7特惠与稳定/高速生图,按公开模型合同映射请求并查询、保存全部结果。",
|
||||
"enabled": true,
|
||||
@@ -97,6 +101,37 @@
|
||||
"type": "bearer",
|
||||
"field": "apiKey"
|
||||
},
|
||||
"imageParameters": [
|
||||
{
|
||||
"name": "size",
|
||||
"label": "画幅比例",
|
||||
"type": "string",
|
||||
"binding": "aspectRatio",
|
||||
"values": [
|
||||
"1:1",
|
||||
"3:2",
|
||||
"2:3",
|
||||
"4:3",
|
||||
"3:4",
|
||||
"5:4",
|
||||
"4:5",
|
||||
"16:9",
|
||||
"9:16",
|
||||
"21:9"
|
||||
],
|
||||
"default": "16:9"
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"label": "生成数量",
|
||||
"type": "integer",
|
||||
"binding": "imageCount",
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"step": 1,
|
||||
"default": 1
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "model",
|
||||
@@ -386,6 +421,39 @@
|
||||
"type": "bearer",
|
||||
"field": "apiKey"
|
||||
},
|
||||
"imageParameters": [
|
||||
{
|
||||
"name": "size",
|
||||
"label": "画幅比例",
|
||||
"type": "string",
|
||||
"binding": "aspectRatio",
|
||||
"values": [
|
||||
"auto",
|
||||
"1:1",
|
||||
"3:2",
|
||||
"2:3",
|
||||
"4:3",
|
||||
"3:4",
|
||||
"5:4",
|
||||
"4:5",
|
||||
"16:9",
|
||||
"9:16",
|
||||
"21:9",
|
||||
"9:21"
|
||||
],
|
||||
"default": "16:9"
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"label": "生成数量",
|
||||
"type": "integer",
|
||||
"binding": "imageCount",
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"step": 1,
|
||||
"default": 1
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "model",
|
||||
@@ -673,6 +741,265 @@
|
||||
"type": "bearer",
|
||||
"field": "apiKey"
|
||||
},
|
||||
"imageParameters": [
|
||||
{
|
||||
"name": "size",
|
||||
"label": "画幅比例",
|
||||
"type": "string",
|
||||
"binding": "aspectRatio",
|
||||
"values": [
|
||||
"auto",
|
||||
"1:1",
|
||||
"3:2",
|
||||
"2:3",
|
||||
"4:3",
|
||||
"3:4",
|
||||
"5:4",
|
||||
"4:5",
|
||||
"16:9",
|
||||
"9:16",
|
||||
"21:9",
|
||||
"9:21"
|
||||
],
|
||||
"default": "9:16"
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"label": "生成数量",
|
||||
"type": "integer",
|
||||
"binding": "imageCount",
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"step": 1,
|
||||
"default": 1
|
||||
},
|
||||
{
|
||||
"name": "raw",
|
||||
"label": "原始风格",
|
||||
"type": "boolean",
|
||||
"binding": "providerOptions.kacang-midjourney.raw",
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "mjQuality",
|
||||
"label": "细节质量",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.quality",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"values": [
|
||||
0.25,
|
||||
0.5,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"default": 1,
|
||||
"pricing": true
|
||||
},
|
||||
{
|
||||
"name": "stylize",
|
||||
"label": "风格化程度",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.stylize",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 1000,
|
||||
"default": 100
|
||||
},
|
||||
{
|
||||
"name": "chaos",
|
||||
"label": "变化程度",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.chaos",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"default": 0
|
||||
},
|
||||
{
|
||||
"name": "weird",
|
||||
"label": "奇异程度",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.weird",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 3000,
|
||||
"default": 0
|
||||
},
|
||||
{
|
||||
"name": "seed",
|
||||
"label": "随机种子",
|
||||
"type": "integer",
|
||||
"binding": "providerOptions.kacang-midjourney.seed",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "negative_prompt",
|
||||
"label": "排除内容",
|
||||
"type": "string",
|
||||
"binding": "providerOptions.kacang-midjourney.negative_prompt",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tile",
|
||||
"label": "无缝平铺",
|
||||
"type": "boolean",
|
||||
"binding": "providerOptions.kacang-midjourney.tile",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "iw",
|
||||
"label": "图片权重",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.iw",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 3
|
||||
},
|
||||
{
|
||||
"name": "cref",
|
||||
"label": "角色参考",
|
||||
"type": "string",
|
||||
"binding": "providerOptions.kacang-midjourney.cref",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "sref",
|
||||
"label": "风格参考",
|
||||
"type": "string",
|
||||
"binding": "providerOptions.kacang-midjourney.sref",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "dref",
|
||||
"label": "细节参考",
|
||||
"type": "string",
|
||||
"binding": "providerOptions.kacang-midjourney.dref",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cw",
|
||||
"label": "角色权重",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.cw",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 100
|
||||
},
|
||||
{
|
||||
"name": "sw",
|
||||
"label": "风格权重",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.sw",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 1000
|
||||
},
|
||||
{
|
||||
"name": "dw",
|
||||
"label": "细节权重",
|
||||
"type": "number",
|
||||
"binding": "providerOptions.kacang-midjourney.dw",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1",
|
||||
"mj-v6.1",
|
||||
"mj-v7",
|
||||
"mj-niji7"
|
||||
],
|
||||
"min": 0,
|
||||
"max": 100
|
||||
},
|
||||
{
|
||||
"name": "hd",
|
||||
"label": "高清输出",
|
||||
"type": "boolean",
|
||||
"binding": "providerOptions.kacang-midjourney.hd",
|
||||
"models": [
|
||||
"mj-v8.2",
|
||||
"mj-v8.1"
|
||||
],
|
||||
"default": false,
|
||||
"pricing": true
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "model",
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user