Files

2.0 KiB

NoASS Research Notes

What is NoASS?

NoASS (No Assistant) 是一种用于角色扮演和创意写作的提示词方法论。它将基于聊天的助手交互转换为统一的叙事格式。

Core Concept

传统聊天是 human/assistant 轮流对话,NoASS 将整个 roleplay 合并成一个连续的故事,用户通过编辑来贡献角色动作。

Key Motivation

  1. 消除角色偏见: 传统聊天模型对 human 角色有内在偏见,往往给予不合理的优势
  2. 解决统一响应长度问题: 标准聊天训练鼓励一致的回答长度,而动态叙事需要变化的响应规模
  3. 消除闭合模式: 传统响应以隐式呼吁用户结束(反问句),破坏沉浸感
  4. 平等对待角色: 所有角色被平等对待,因为没有角色正式"属于"任何一方

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 功能将:

  1. 允许用户选择是否启用 NoASS 模式
  2. 自动处理消息格式转换
  3. 支持自定义角色前缀
  4. 使用用户前缀作为停止字符串

Reference