addChatForAce_modifications.md 3.5 KB

addChatForAce 方法优化说明

需要修改的内容

1. 在 addChatForAce 方法中新增道具列表处理 (约5970行附近)

将以下代码:

        // 构建主体和场景提示词
        $extra_role_prompt = "\n";
        $extra_scene_prompt = "\n";
        $ref_products = [];     // 参考资产

修改为:

        // 构建主体、场景和道具提示词
        $extra_role_prompt = "\n";
        $extra_scene_prompt = "\n";
        $extra_prop_prompt = "\n";
        $ref_products = [];     // 参考资产

2. 在 foreach 循环中添加道具处理 (约5980行附近)

在以下代码后:

                } elseif ((int)$product === 2) {
                    // 拼接场景信息
                    $extra_scene_prompt .= $product_name . ":" . $pic_prompt . "\n";
                }

添加:

                } elseif ((int)$product === 3) {
                    // 拼接道具信息
                    $extra_prop_prompt .= $product_name . ":" . $pic_prompt . "\n";
                }

3. 在场景提示词后添加道具提示词 (约6000行附近)

在场景提示词生成代码后添加:

            
            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【重要提示】以上每个道具在<道具列表>中的完整格式必须是:道具名:道具描述{道具提示词},其中道具描述是你必须生成的内容,{}中的道具提示词必须原样保留。";
            }

4. 修改单剧集 systemPrompt (约6010行附近)

需要将单剧集模式的 systemPrompt 完全替换为与 chatForAce 一致的结构。

主要修改点:

  • 修改板块列表: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><道具列表><分段剧本>
  • 添加道具列表相关的要求和示例
  • {$extra_scene_prompt} 后添加 {$extra_prop_prompt}
  • 修改分镜结构说明,将道具也纳入考虑

5. 在示例格式中添加道具列表 (约6100行附近)

在场景列表示例后添加道具列表示例:

###道具列表
神秘药瓶:一个古朴的玉质小瓶,装有救命的阴阳球。{特写镜头,古朴的玉质小瓶,瓶身呈半透明状,内部隐约可见一颗微光闪烁的珠子,瓶口用红绳系着精致的玉塞。无人物。}

6. 更新保存逻辑 (约6400行附近)

在保存动漫大纲时,添加 props 字段:

            'props' => isset($script_arr['props']) && is_array($script_arr['props']) ? json_encode($script_arr['props'], 256) : '[]',

在单剧集保存时,将 props 也传递给 saveEpisodeVersionData 方法。

7. 在返回数据中添加 props (约6500行附近)

        $table_data['props'] = json_decode($table_data['props'], true);

测试要点

  1. 测试包含道具的单剧集生成
  2. 验证道具列表是否正确保存到数据库
  3. 确认道具提示词格式正确
  4. 检查与 chatForAce 方法的一致性