将以下代码:
// 构建主体和场景提示词
$extra_role_prompt = "\n";
$extra_scene_prompt = "\n";
$ref_products = []; // 参考资产
修改为:
// 构建主体、场景和道具提示词
$extra_role_prompt = "\n";
$extra_scene_prompt = "\n";
$extra_prop_prompt = "\n";
$ref_products = []; // 参考资产
在以下代码后:
} elseif ((int)$product === 2) {
// 拼接场景信息
$extra_scene_prompt .= $product_name . ":" . $pic_prompt . "\n";
}
添加:
} elseif ((int)$product === 3) {
// 拼接道具信息
$extra_prop_prompt .= $product_name . ":" . $pic_prompt . "\n";
}
在场景提示词生成代码后添加:
if (!empty(trim($extra_prop_prompt))) {
$extra_prop_prompt = "\n4.4【强制道具设定-不可修改】\n以下道具必须全部出现在<道具列表>中,必须包含:\n" . $extra_prop_prompt . "\n格式要求:\n1. 道具名称:必须保持不变\n2. 道具描述:你必须根据剧情为每个道具生成道具描述(分析在整部剧中出现过的道具,道具描述尽量简洁贴合原文)\n3. 道具提示词:{}中的内容必须完整保留,不得修改\n\n最终格式必须为:道具名:[你生成的道具描述]{道具提示词-保持不变}\n\n必须包含的道具列表:\n" . $extra_prop_prompt . "\n【重要提示】以上每个道具在<道具列表>中的完整格式必须是:道具名:道具描述{道具提示词},其中道具描述是你必须生成的内容,{}中的道具提示词必须原样保留。";
}
需要将单剧集模式的 systemPrompt 完全替换为与 chatForAce 一致的结构。
主要修改点:
<故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><道具列表><分段剧本>{$extra_scene_prompt} 后添加 {$extra_prop_prompt}在场景列表示例后添加道具列表示例:
###道具列表
神秘药瓶:一个古朴的玉质小瓶,装有救命的阴阳球。{特写镜头,古朴的玉质小瓶,瓶身呈半透明状,内部隐约可见一颗微光闪烁的珠子,瓶口用红绳系着精致的玉塞。无人物。}
在保存动漫大纲时,添加 props 字段:
'props' => isset($script_arr['props']) && is_array($script_arr['props']) ? json_encode($script_arr['props'], 256) : '[]',
在单剧集保存时,将 props 也传递给 saveEpisodeVersionData 方法。
$table_data['props'] = json_decode($table_data['props'], true);