Skip to content

自定义动作缺少可行性与内容边界:与角色形态矛盾的描述会直接进入付费生成 #318

Description

@johnnyzhang-eng

现象

测试环境里可以提交任意动作描述,包括与角色形态不相容的、以及不适合出现在产品里的内容。实测输入过一个明显不合适的描述,全程无任何拦截,直接进入付费生成。

现状

ai_engine/prompt/lint.py 的措辞门禁只查形式

  • 否定词(模型不处理否定极性,只 latch 名词)
  • 危险名词(提到即勾出特效)
  • 亚阈值微动(低于模型可控分辨率)
  • 持物动作无身体位移词(i2v 强跟身体弱跟持物)
  • 装备形状先验(会让模型凭空造物)

这五条针对的都是**「这样写模型做不好」,没有一条针对「这个动作不该做」「这个角色做不了这个动作」**。

两类不同的问题,不要混为一谈

一、物理上做不出来的动作

当母版姿态与所要求的动作不相容时(例如站立母版配趴卧动作),模型只能靠大幅变形调和图文矛盾,产出必然是坏的。

更正:本 issue 初稿曾断言某次实测里母版是站立姿态,那是未经核对的推测。实际核查该次生成,母版本身与描述相符。这条机制仍然成立,但不该拿那个例子当证据。

这一类的关键不是"不雅",而是钱花了必然拿不到可用结果。同类还有:让四足角色做双手动作、让远程角色做接触攻击、让站立母版做躺卧姿态。

master_prep.py 的 docstring 里已经记着同源的教训:母版姿态决定动作,提示词只能微调;attack 那条更狠——用站立母版时即使提示词写死约束,模型仍会突破。

二、内容上不适合出现在产品里的

这类与技术无关,是产品边界问题。

建议方向(需要拍板,不要直接实现)

对第一类

已有的 CharacterCard.stance(双足/四足/蛇形)是现成的抓手:可以对"体型与动作描述明显矛盾"给出拒绝,理由讲清机制("母版是站立姿态,趴卧类动作会让模型大幅变形,建议改用……")。

注意边界:判据要能自动判定且误判可接受。措辞门禁现有五条都是词表级的确定性判断;"这个动作这个身体做不做得到"是语义判断,规则化会有大量误伤。是否引入模型判断、以及误伤的代价谁承担,需要产品决策。

对第二类

这是产品策略问题,不是工程问题。可选做法从轻到重:

  1. 什么都不做(内部工具,用户自负)
  2. 词表拦截(成本低,但绕过成本更低,且会误伤正常描述)
  3. 模型判断(准确但每次请求都花钱,且需要定义边界)

建议先明确产品定位再选:面向内部/受控用户与面向公开注册用户,答案完全不同。

与既有机制的关系

拒绝通道已经就绪:PromptRejected(code, detail) 带机器可读的 code 与面向用户的机制说明,PromptRejectCode 加成员即可。所以这件事的成本不在实现,在定判据

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions