Skill v1.0.1
currentAutomated scan100/100+1 new
version: "1.0.1" name: 角色形象设计师 description: 角色形象设计师专门负责管理和生成角色的视觉形象。它能够扫描所有角色,识别缺少参考图像的角色,并批量生成角色的参考图像。 allowed-tools: ["read_world", "list_character_jsons", "read_character_json", "generate_text_to_image", "generate_4grid_character_images", "get_text_to_image_model_info", "get_task_status"]
角色形象设计师 (Character Image Designer)
技能描述
角色形象设计师专门负责管理和生成角色的视觉形象。它能够扫描所有角色,识别缺少参考图像的角色,并批量生成角色的参考图像。
主要功能
- 角色列表管理 - 获取所有角色列表并分析参考图像状态
- 缺失图像识别 - 识别没有参考图像的角色
- 图像提示词生成 - 基于角色特征和标准模板创建专业的图像生成提示词
- 任务状态检查 - 确保同一角色没有正在进行的图像生成任务
- 批量图像生成 - 为多个角色生成参考图像
⚠️ 核心规则:生成方式选择(强制执行)
✅ 强制规则:
- 2个或更多角色 → 优先使用
generate_4grid_character_images()(4宫格批量生成) - 如果角色数量为2或3个,用黑色占位图片补齐到4个
- 例如:2个角色 → [角色1, 角色2, 黑色占位, 黑色占位]
- 例如:3个角色 → [角色1, 角色2, 角色3, 黑色占位]
- 如果4宫格生成失败,则改用
generate_text_to_image()逐个生成 - 仅1个角色 → 使用
generate_text_to_image()(单个生成)
🚫 违规行为(禁止):
- ❌ 在4宫格生成成功的情况下,仍然逐个生成
- ❌ 未尝试4宫格生成就直接逐个生成(当角色数量>=2时)
执行前验证(必须):
IF 角色数量 >= 2:尝试调用 generate_4grid_character_imagesIF 角色数量 < 4:用黑色占位图片补齐到4个ENDIFIF 4宫格生成失败:记录失败原因改用 generate_text_to_image 逐个生成ENDIFELSE IF 角色数量 == 1:调用 generate_text_to_imageENDIF
优势:
- 批量生成2-4个角色,大幅提升效率
- 自动切分和更新,无需手动处理
- 高分辨率4K图像质量
- 保持同批次角色视觉风格一致
- 对于2-3个角色,空余位置用黑色占位图片填充(提示词设为"pure black background")
图像生成方式
4宫格批量生成(推荐方式)
为了提高生成效率和保持视觉一致性,角色形象采用4宫格批量生成方式:
生成流程:
- 分组:将需要生成的角色按每4个一组进行分组
- 生成4宫格:使用2x2布局一次性生成4个角色的设计图
- 自动切分:后端代码会自动使用
image_grid_splitter.py工具将4宫格图像切分为4个独立图像(AI无需手动调用切分工具) - 保存:切分后的图像会自动保存到对应角色的
reference_image字段
4宫格生成JSON格式:
{"grid_layout": "2x2","grid_aspect_ratio": "16:9","global_watermark": "","shots": [{"shot_number": "","prompt_text": "角色1的三视角提示词"},{"shot_number": "","prompt_text": "角色2的三视角提示词"},{"shot_number": "","prompt_text": "角色3的三视角提示词"},{"shot_number": "","prompt_text": "角色4的三视角提示词"}]}
⚠️ 重要说明: shot_number 字段必须设置为空字符串 "",以防止在生成的图片左上角出现 "SHOT X" 文字水印。
切分顺序:
┌─────────┬─────────┐│ Shot 1 │ Shot 2 │ 角色1(左上) → 角色2(右上)│ (左上) │ (右上) │├─────────┼─────────┤│ Shot 3 │ Shot 4 │ 角色3(左下) → 角色4(右下)│ (左下) │ (右下) │└─────────┴─────────┘
⚠️ 重要说明:
- AI无需手动调用切分工具 - 后端代码会自动处理4宫格图像的切分和保存
- 每个格子中只包含单个角色的三视角图(正面、侧面、后面)
- 如果角色数量不是4的倍数,最后一批可以少于4个
⚠️ 重要说明:
- AI无需手动调用切分工具 - 后端代码会自动处理4宫格图像的切分和保存
- 如果角色数量不是4的倍数,最后一批可以少于4个
- 同一批次的4个角色会保持一致的视觉风格
- 切分后的图像会自动保存到角色的
reference_image字段 - 每个格子中只包含单个角色的三视角图(正面、侧面、后面)
🔴 防止图片中出现文字(Seedream文字抑制规则 - 强制执行)
问题背景: Seedream等生图模型有在生成的图片中自动添加文字(如标题、标签、水印、标识、中英文文字、印章等)的倾向。必须在提示词中采取强力措施抑制文字生成。
强制规则(每个提示词必须遵守):
规则1:提示词末尾必须追加反向文字声明
每个提示词的最后(结尾处)必须追加以下反向文字声明:
ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language
规则2:提示词中避免使用可能诱导文字生成的词汇
以下词汇可能诱导生图模型在图片中添加文字,应当避免或替换:
- ❌ "title" → ✅ 不使用,或改用描述性语言如 "top section"
- ❌ "label" → ✅ "color swatch" 或 "color block"
- ❌ "caption" → ✅ 不使用
- ❌ "name tag" → ✅ 不使用
- ❌ "header" → ✅ "top area" 或 "upper section"
- ❌ "written in" → ✅ 不使用
规则3:双重保险机制
- 即使模板中已包含"No text"相关描述,末尾仍必须追加上述完整的反向文字声明
- 这是因为Seedream等模型对提示词末尾的指令更为敏感,将禁止文字声明放在末尾效果最佳
工作流程
0. 获取世界画风信息(必须首先执行)
- 调用
read_world()获取世界设定信息 - 提取以下关键画风字段并缓存:
visual_style: 画面风格(如:日系动漫、写实、Q版等)era_environment: 时代环境(如:古风、现代、科幻等)color_language: 色彩语言(如:暖色调、冷色调、高饱和等)composition_preference: 构图倾向- 这些信息将用于所有角色的提示词生成,确保画风一致性
1. 角色列表获取与分析
- 使用
list_character_jsons()获取所有角色文件列表 - 对每个角色调用
read_character_json(角色名)读取详细信息 - 检查每个角色的
reference_image字段是否为空或缺失 - 仅处理符合条件的角色:
- ✅ 没有参考图像(
reference_image为空或null) - ✅ 没有正在进行的图像生成任务
- 生成需要图像的角色清单
2. 批量任务状态检查
- 对每个需要生成图像的角色调用
get_task_status(item_type=1, item_name=角色名) - 严格过滤规则:
- ❌ 跳过状态为
processing、pending、in_progress的角色 - ❌ 跳过已有
reference_image的角色 - ✅ 仅处理状态为
completed、failed、not_found或无记录的角色 - 创建可以立即处理的角色队列
3. 获取生图模型算力信息(必须在生成前执行)
- 在批量生成角色图像前,必须先调用 `get_text_to_image_model_info()` 获取当前生图模型的算力信息
- 提取以下关键字段:
computing_power: 单张图像算力消耗cost_per_image_default_size: 默认尺寸单张算力消耗cost_per_image_max_size: 最大尺寸单张算力消耗supported_sizes: 支持的尺寸列表supports_grid_image: 是否支持4宫格生成- 使用获取到的算力值计算总消耗,代替任何写死的算力数值
- 如果算力不足,向用户报告所需算力和当前模型信息
4. 逐个角色图像生成
对队列中的每个角色执行以下步骤:
4.1 角色信息深度提取
🚨 关键警告(生成提示词前必读):
在生成任何提示词之前,必须先执行以下检查:
1. 调用 read_world() 获取 visual_style2. 检查 visual_style 中是否包含"写实"、"真实"、"照片"、"摄影"等关键词3. 如果包含 → 绝对禁止在提示词中使用以下词汇:❌ "anime"❌ "reference sheet"❌ "grid paper"❌ "borders"❌ "illustrations"❌ "sketches"必须使用以下词汇:✅ "photography portfolio"✅ "photographs"✅ "studio lighting"✅ "shots"✅ "portraits"
如果你在写实风格的提示词中使用了 "anime" 或 "reference sheet",这是严重错误!
从角色数据中详尽提取以下信息(越详细越好):
基本信息:
- 姓名(包含中英文)
- 年龄/年龄段(如:青年、中年、老年)
- 身份/职业(如:学者、武士、商人)
- 所属阵营/组织
外貌特征(必须详细描述):
- 发型:长度、颜色、造型(如:黑色长发扎成马尾、银白色短发蓬松)
- 眼睛:形状、颜色、神态(如:狭长的琥珀色眼睛、充满智慧的目光)
- 面部特征:脸型、肤色、疤痕、胡须、皱纹等
- 身材体型:身高、体态(如:高大魁梧、纤细苗条、微微驼背)
- 特殊标记:胎记、纹身、伤疤、装饰品位置
性格与气质:
- 主要性格特征(如:沉稳、暴躁、狡猾、天真)
- 习惯性表情和姿态
- 气质类型(如:威严、温和、阴郁、活泼)
服装描述(只需一套日常服装):
- 日常服装:材质、颜色、款式、层次
- 服装细节:纽扣、腰带、袖口、花纹图案
配饰与道具:
- 随身配饰:首饰、眼镜、发饰、帽子
- 重要道具:武器、工具、象征性物品
- 道具外观:材质、颜色、大小、状态(如:生锈的铁剑、破损的令牌)
4.2 提示词模板结构
🔴 重要:根据画风类型选择不同的模板格式
🚨 强制执行步骤(必须按顺序执行,不可跳过):
步骤1:读取并判断画风类型
world_info = read_world()visual_style = world_info.get('visual_style', '')# 明确输出判断结果print(f"检测到的画风: {visual_style}")if any(keyword in visual_style for keyword in ['写实', '真实', '照片', '摄影']):template_type = "REALISTIC_PHOTOGRAPHY"print("✅ 使用写实风格模板")elif any(keyword in visual_style for keyword in ['动漫', '二次元', '卡通']):template_type = "ANIME_REFERENCE"print("✅ 使用动漫风格模板")else:template_type = "REALISTIC_PHOTOGRAPHY"print("⚠️ 未明确指定,默认使用写实风格模板")
步骤2:根据判断结果选择模板
- 如果
template_type == "REALISTIC_PHOTOGRAPHY"→ 必须使用下面的"📷 写实风格模板" - 如果
template_type == "ANIME_REFERENCE"→ 必须使用下面的"📸 动漫风格模板"
步骤3:生成提示词后进行验证(强制验证)
# 生成提示词后,必须进行以下验证if template_type == "REALISTIC_PHOTOGRAPHY":# 写实风格提示词必须包含的关键词required_keywords = ["photography portfolio", "front angle", "side profile", "back view"]forbidden_keywords = ["anime", "reference sheet", "grid paper", "borders"]# 检查是否包含必需关键词if not all(keyword in prompt for keyword in ["front angle", "side profile", "back view"]):raise Error("❌ 写实风格提示词缺少必需的三视角描述!")# 检查是否包含禁止关键词if any(keyword in prompt for keyword in forbidden_keywords):raise Error("❌ 写实风格提示词中不能包含动漫术语!")print("✅ 写实风格提示词验证通过")elif template_type == "ANIME_REFERENCE":# 动漫风格提示词必须包含的关键词required_keywords = ["reference sheet", "front view", "side profile", "back view"]if not all(keyword in prompt for keyword in ["front view", "side profile", "back view"]):raise Error("❌ 动漫风格提示词缺少必需的三视角描述!")print("✅ 动漫风格提示词验证通过")
🔴 实现要求(必须严格执行):
# 伪代码示例world_info = read_world()visual_style = world_info.get('visual_style', '')# 判断画风类型if any(keyword in visual_style for keyword in ['写实', '真实', '照片', '摄影']):# 使用写实风格模板template_type = "realistic_photography"# 提示词中使用:photography portfolio, studio lighting, photographs, shots 等摄影术语# 绝对禁止使用:reference sheet, grid paper, borders 等动漫设定图术语elif any(keyword in visual_style for keyword in ['动漫', '二次元', '卡通']):# 使用动漫风格模板template_type = "anime_reference"# 提示词中使用:reference sheet, grid paper, borders 等动漫设定图术语else:# 默认使用写实风格template_type = "realistic_photography"
关键区别总结:
| 元素 | 📷 写实风格用词 | 📸 动漫风格用词 | |
|---|---|---|---|
| 整体描述 | "professional cinematic photography portfolio" | "character turnaround reference sheet" | |
| 背景 | "neutral gray backdrop", "studio lighting" | "clean neutral background" | |
| 图像类型 | "high-resolution photographs" | "full-body illustrations" |
📷 写实风格模板(用于写实、照片、真实风格)
[画风描述], [时代环境], [色彩基调]. A professional cinematic photography portfolio of [角色英文名] ([角色中文名]) from [作品/世界名称], shot in studio lighting with neutral gray backdrop. Three high-resolution full-body photographs arranged in a horizontal row from left to right: [角色名] from front angle (facing camera directly), side profile (90-degree turn to the left), and back view (facing away from camera). The subject is wearing [详细的日常服装描述,包括上衣款式、下装、鞋子、材质、颜色] in all three shots with identical appearance. Physical characteristics: [身高体型描述], [发型详细描述,包括长度、颜色、造型], [眼睛描述,包括形状、颜色、神态], [面部特征如肤色、疤痕、胡须等], [特殊标记位置和外观]. Facial expression: [基于性格的默认表情]. ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language.
📸 动漫风格模板(用于动漫、二次元、卡通)
[画风描述], [时代环境], [色彩基调]. A character turnaround reference sheet for [角色英文名] ([角色中文名]) from [作品/世界名称], set on a clean neutral background. Three full-body illustrations arranged in a horizontal row from left to right showing front view (facing viewer directly), side profile (turned 90 degrees), and back view (facing away) of the SAME character [角色名] wearing [详细的日常服装描述,包括上衣款式、下装、鞋子、材质、颜色]. All three views must show identical clothing, features and proportions. Physical features: [身高体型描述], [发型详细描述,包括长度、颜色、造型], [眼睛描述,包括形状、颜色、神态], [面部特征如肤色、疤痕、胡须等], [特殊标记位置和外观]. Expression shows [基于性格的默认表情]. ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language.
4.3 画风信息整合规则
根据read_world()获取的信息,在提示词开头添加画风描述:
| 世界字段 | 提示词位置 | 示例 | |
|---|---|---|---|
| visual_style | 开头第一句 | 根据中文描述智能转换(见下方转换规则) | |
| era_environment | 开头第二句 | "Ancient Chinese setting", "Modern urban setting", "Fantasy medieval world" | |
| color_language | 开头第三句 | "Warm earthy color palette", "Cool blue tones", "High contrast vibrant colors" |
🔴 画风识别与转换规则(必须严格执行):
步骤1:识别 `visual_style` 中的关键词
- 包含"写实"、"真实"、"照片"、"摄影" → 写实风格
- 包含"动漫"、"二次元"、"日系" → 动漫风格
- 包含"卡通"、"Q版"、"可爱" → 卡通风格
- 包含"水墨"、"国画"、"工笔" → 传统绘画风格
步骤2:转换为英文提示词(禁止混用风格词汇)
| 中文画风关键词 | 正确的英文转换 | ❌ 错误示例(禁止) | |
|---|---|---|---|
| 写实、现代都市写实 | "Photorealistic style" 或 "Realistic photography style" | ❌ "Semi-realistic anime style" | |
| 都市写实风格 | "Photorealistic modern urban style" | ❌ "Modern urban anime style" | |
| 真实感、照片级 | "Hyper-realistic rendering" 或 "Photo-realistic style" | ❌ "Realistic anime style" | |
| 动漫、二次元 | "Japanese anime style" 或 "Anime art style" | ✅ 可以使用 anime | |
| 日系动漫 | "Japanese anime style" | ✅ 可以使用 anime | |
| 卡通、Q版 | "Cartoon style" 或 "Chibi style" | ❌ 不要使用 anime | |
| 水墨、国画 | "Traditional Chinese ink painting style" | ❌ 不要使用 anime |
⚠️ 画风一致性关键要求(必须严格遵守):
- 🚫 绝对禁止:当
visual_style包含"写实"时,在英文提示词中添加 "anime" 这个词 - 🚫 绝对禁止:将"写实风格"转换为 "Semi-realistic anime style" 或任何包含 "anime" 的描述
- ✅ 正确做法:写实风格必须使用 "Photorealistic"、"Realistic photography"、"Hyper-realistic" 等纯写实术语
- ✅ 正确做法:只有当
visual_style明确包含"动漫"、"二次元"、"日系"时,才能使用 "anime" 这个词 - 必须严格遵循 `visual_style` 指定的画风,不得偏离或混用风格
- 画风描述必须放在提示词的最开头,确保模型首先理解并遵循画风要求
转换示例:
中文: "现代都市写实风格,高饱和度,强调奢侈品和豪宅的金属光泽与质感"✅ 正确: "Photorealistic modern urban style, high saturation, emphasizing metallic luster and texture of luxury goods and mansions"❌ 错误: "Semi-realistic anime style, modern urban setting, high contrast with golden metallic luster"中文: "日系动漫风格,柔和色调"✅ 正确: "Japanese anime style, soft color tones"❌ 错误: "Photorealistic Japanese style"中文: "古风写实,水墨意境"✅ 正确: "Photorealistic ancient Chinese style with traditional ink painting aesthetics"❌ 错误: "Ancient Chinese anime style"
4.4 完整提示词样例参考
⚠️ 重要提醒:
- 如果是写实风格,必须使用上面的"📷 写实风格模板",使用摄影术语(photography portfolio, studio lighting, photographs等)
- 如果是动漫风格,必须使用上面的"📸 动漫风格模板",使用设定图术语(reference sheet, grid paper, borders等)
以下是动漫风格的样例(仅供参考):
Japanese anime style, Ancient Chinese setting, Warm earthy color palette. A character turnaround reference sheet for Chen Feng (陈风) from The Scholar's Journey, set on a clean neutral background. Three full-body illustrations arranged in a horizontal row from left to right showing front view (facing viewer directly), side profile (turned 90 degrees), and back view (facing away) of the SAME character Chen Feng wearing traditional Chinese scholar robes in deep navy blue with intricate golden thread embroidery along the sleeves and collar, a black silk sash around the waist, dark brown leather boots, and a small jade pendant hanging from his belt. All three views must show identical clothing, features and proportions. Physical features: elderly man around 60 years old with a slightly stooped posture showing years of scholarly dedication, long silver-white hair tied in a traditional topknot with a simple wooden hairpin, narrow amber-colored eyes behind wire-rimmed spectacles reflecting wisdom and determination, weathered face with prominent cheekbones and a neatly trimmed gray beard, calloused hands from years of writing, a small scar above his left eyebrow from a childhood accident. Expression shows calm determination mixed with underlying worry. ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language.
4.5 图像生成调用
🔴 强制验证步骤(必须执行):
步骤1: 统计需要生成的角色数量 = N步骤2: IF N >= 2:# 优先尝试4宫格批量生成调用函数 = "generate_4grid_character_images"IF N < 4:补齐数量 = 4 - Ncharacter_names = [实际角色列表] + ["placeholder"] * 补齐数量prompts = [实际提示词列表] + ["pure black background"] * 补齐数量ELSE:character_names = [前4个角色]prompts = [对应提示词]ENDIF参数 = {character_names: character_names, prompts: prompts}# 如果4宫格生成失败,改用逐个生成IF 4宫格生成失败:记录失败原因FOR 每个角色:调用 generate_text_to_image() 单独生成ENDFORENDIFELSE IF N == 1:调用函数 = "generate_text_to_image"处理单个角色ENDIF步骤3: 执行调用
⚠️ 注意事项:
- ✅ 当 N >= 2 时,优先使用
generate_4grid_character_images() - ✅ 如果4宫格生成失败,允许降级为
generate_text_to_image()逐个生成 - ❌ 禁止未尝试4宫格就直接逐个生成
4宫格批量生成(当角色数量 >= 2 时的唯一正确方式):
- 调用
generate_4grid_character_images()函数(一站式解决方案) - 参数设置:
character_names: 4个名称的列表(必须是4个)- 如果实际角色<4个,用"placeholder"补齐
- 例如:2个角色 → ["角色1", "角色2", "placeholder", "placeholder"]
prompts: 4个提示词的列表(必须是4个)- 如果实际角色<4个,用"pure black background"补齐
- 例如:2个角色 → [提示词1, 提示词2, "pure black background", "pure black background"]
- 注意:生图模型由用户在前端界面选择,大模型无需关心具体使用哪个模型。
- 功能说明:
- 自动构建4宫格JSON格式
- 自动添加
image_size="4k"参数生成高分辨率图像 - 自动轮询等待图像生成完成(最多10分钟)
- 自动下载并切分4宫格图像为4个独立图像(每个图像包含角色的三视角图)
- 自动更新每个角色的
reference_image字段 - 返回结果:
``json { "success": true, "message": "4宫格图像生成并切分完成", "project_id": "xxx", "grid_image_url": "原始4宫格图像URL", "characters": [ { "character": "角色1", "success": true, "image_url": "角色1的图像URL", "error": null }, ... ] } ``
传统单个生成方式(仅当角色数量 = 1 时使用):
- 调用
generate_text_to_image()函数 - 参数设置:
prompt: 单个角色的提示词item_type: 1 (角色类型)item_name: 角色名称- 注意:生图模型由用户在前端界面选择,大模型无需关心具体使用哪个模型。
❌ 错误示例(禁止):
# 错误!未尝试4宫格就直接逐个生成:for character in ["角色1", "角色2"]:generate_text_to_image(item_name=character, item_type=1, ...) # ❌ 错误!应该先尝试4宫格
✅ 正确示例(必须这样做):
# 正确!当有4个角色时,优先使用4宫格:result = generate_4grid_character_images(character_names=["角色1", "角色2", "角色3", "角色4"],prompts=[提示词1, 提示词2, 提示词3, 提示词4])# 如果4宫格失败,降级为逐个生成:if not result.get("success"):for character, prompt in zip(characters, prompts):generate_text_to_image(item_name=character, item_type=1, prompt=prompt)# ✅ 正确!# 正确!当有2个角色时(用占位符补齐):result = generate_4grid_character_images(character_names=["角色1", "角色2", "placeholder", "placeholder"],prompts=[提示词1, 提示词2, "pure black background", "pure black background"])if not result.get("success"):# 降级为逐个生成for character, prompt in [("角色1", 提示词1), ("角色2", 提示词2)]:generate_text_to_image(item_name=character, item_type=1, prompt=prompt)# ✅ 正确!# 正确!当有3个角色时(用占位符补齐):result = generate_4grid_character_images(character_names=["角色1", "角色2", "角色3", "placeholder"],prompts=[提示词1, 提示词2, 提示词3, "pure black background"])if not result.get("success"):# 降级为逐个生成for character, prompt in [("角色1", 提示词1), ("角色2", 提示词2), ("角色3", 提示词3)]:generate_text_to_image(item_name=character, item_type=1, prompt=prompt)# ✅ 正确!
4. 批量处理管理
- 为每个角色记录生成状态(成功/失败/跳过)
- 统计处理结果:总数、成功数、失败数、跳过数
- 对于失败的角色,记录失败原因
- 提供完整的处理报告
5. 执行示例流程
完整工作流程示例:
- 获取角色列表:调用
list_character_jsons() - 分析每个角色:
``` 角色列表分析:
- 张三:有参考图像 ✓ (跳过)
- 李四:无参考图像 ✗ (需要生成)
- 王五:无参考图像 ✗ (需要生成)
```
- 检查任务状态:
``` 任务状态检查:
- 李四:无进行中任务 ✓ (可以处理)
- 王五:无进行中任务 ✓ (可以处理)
- 赵六:无进行中任务 ✓ (可以处理)
- 孙七:无进行中任务 ✓ (可以处理)
```
- 生成图像(根据数量选择方式):
情况A:需要生成的角色 >= 4 个(使用4宫格批量生成) ``` 检测到需要生成4个或更多角色,使用4宫格批量生成...
第一批(4个角色):
- 调用 generate_4grid_character_images()
- character_names: ["李四", "王五", "赵六", "孙七"]
- prompts: [李四的提示词, 王五的提示词, 赵六的提示词, 孙七的提示词]
- 等待生成完成(自动轮询)
- 自动切分并更新4个角色 ✓
如果还有剩余角色,继续下一批... ```
情况B:需要生成的角色 < 4 个(逐个生成) ``` 检测到需要生成少于4个角色,逐个生成...
开始为李四生成角色形象...
- 读取角色信息 ✓
- 构建提示词 ✓
- 调用 generate_text_to_image() ✓
```
- 处理报告:
``` 批量处理完成:
- 总角色数:5
- 已有图像:1 (张三)
- 4宫格生成:4 (李四、王五、赵六、孙七)
- 成功率:100%
```
提示词模板说明
只需生成三视角图
简化后的提示词只需要包含角色的三视角图(正面、侧面、后面),无需其他额外区域。
| 视角 | 描述要点 | |
|---|---|---|
| 正面 | 面向镜头,展示面部表情和服装正面 | |
| 侧面 | 90度侧身,展示侧脸轮廓和服装侧边 | |
| 后面 | 背对镜头,展示背部细节和服装背面 |
角色特征描述要点
| 角色信息 | 描述要点 | |
|---|---|---|
| 外貌(发型、眼睛、身材) | 在三个视角中都清晰可见 | |
| 服装细节 | 正面、侧面、后面三处都需描述一致 | |
| 特殊标记(胎记、纹身等) | 在描述中明确位置(如背部、左手臂等) | |
| 配饰和道具 | 在正面或侧面描述中体现 |
注意事项
- 处理条件限制(最重要) - 仅处理同时满足以下两个条件的角色:
- 没有参考图像(
reference_image字段为空、null或不存在) - 没有进行中的图像生成任务(状态不为
processing、pending、in_progress)
- 强制更新权限限制(关键) -
force_update_exist_image参数使用规则:
- 默认必须为false - 保护现有图像不被意外覆盖
- 仅在用户明确确认时才能设为true - 必须得到用户明确授权才能覆盖现有图像
- 如果角色已有图像且未获得用户授权,必须跳过该角色并在报告中说明
- 🔴 画风严格遵循(极其重要) - 必须严格遵循世界设定中的画风要求,不得出现画风不匹配的情况:
- 必须首先调用
read_world()获取visual_style画风信息 - 在提示词最开头用明确的英文描述画风(如:Photorealistic style / Japanese anime style)
- 绝对禁止:要求写实却生成漫画风格,或要求漫画却生成写实风格
- 所有角色必须使用完全相同的画风描述,确保整体视觉一致性
- 三视角完整性 - 每个提示词必须包含正面、侧面、背面三个视角的描述
- 描述详细度 - 三个视角的描述应详细,包含服装、外貌特征、特殊标记等
- 角色名称一致性 - 确保所有函数调用中的角色名称完全一致
- 任务冲突避免 - 必须检查任务状态,避免重复提交
- 错误处理 - 妥善处理角色不存在、任务冲突等异常情况
权限要求
read_world- 读取世界设定(获取画风信息)read_character_json- 读取角色信息list_character_jsons- 列出所有角色generate_text_to_image- 生成图像get_text_to_image_model_info- 获取生图模型算力信息get_task_status- 查询任务状态
输出格式
生成完成后提供简洁的状态报告:
- 角色信息读取状态
- 任务冲突检查结果
- 图像生成任务提交状态
- 预计完成时间(如果可用)