2.0 KiB
2.0 KiB
NoASS Research Notes
What is NoASS?
NoASS (No Assistant) 是一种用于角色扮演和创意写作的提示词方法论。它将基于聊天的助手交互转换为统一的叙事格式。
Core Concept
传统聊天是 human/assistant 轮流对话,NoASS 将整个 roleplay 合并成一个连续的故事,用户通过编辑来贡献角色动作。
Key Motivation
- 消除角色偏见: 传统聊天模型对 human 角色有内在偏见,往往给予不合理的优势
- 解决统一响应长度问题: 标准聊天训练鼓励一致的回答长度,而动态叙事需要变化的响应规模
- 消除闭合模式: 传统响应以隐式呼吁用户结束(反问句),破坏沉浸感
- 平等对待角色: 所有角色被平等对待,因为没有角色正式"属于"任何一方
Technical Implementation
Context Transformation
传统 ChatML 格式:
<|im_start|>user
[Instructions]
<|im_end|>
<|im_start|>assistant
[Greeting]
<|im_end|>
<|im_start|>user
[User action]
<|im_end|>
NoASS 格式:
<|im_start|>user
[Instructions for story with all characters]
<|im_start|>assistant
[Greeting]
{{user}}: [user's action]
{{char}}: [character's action]
...
关键机制:所有 roleplay 变成单个预填充的 assistant 消息,用户输入被"拼接"到叙事中,使用角色前缀标记。
Formatting Standards
- 一段 = 一个角色前缀 (
**char name:**) - 前缀下:动作、"对话"、'思想',顺序任意
- 最小叙事描述;主要动作使用前缀
- 用户响应省略自己的前缀(扩展自动插入)
Stop Token Mechanism
使用用户角色的前缀作为停止令牌,防止模型为玩家角色编写对话。这是防止模型为用户生成动作的关键。
Implementation for ComfyUI-SimpleChat
在我们的实现中,NoASS 功能将:
- 允许用户选择是否启用 NoASS 模式
- 自动处理消息格式转换
- 支持自定义角色前缀
- 使用用户前缀作为停止字符串