Back to feed

victorchen96/deepseek_v4_rolepaly_instruct

victorchen96/deepseek_v4_rolepaly_instruct
1.4k
+162/day
73

对于DeepSeek-V4角色扮演的特殊控制指令的说明

From the README

DeepSeek 角色扮演 — 思考模式切换指南

说明

  • 本文档是 DeepSeek-V4 角色扮演的特殊控制指令说明,用于在思考模式下切换思维链风格
  • 适用范围:DeepSeek 官方 APP / 网页的专家模式,以及 deepseek-v4-flashdeepseek-v4-pro 的 API。网页上的快速模式暂不支持
  • 概率输出:目前无法做到 100% 触发,但能稳定增加出现期望格式的概率。如果一次没有生效,可以多 roll 几次

三种模式

| 模式 | 操作 | 思考表现 | |:---:|---|---| | 默认 | 什么都不加 | 模型根据场景复杂度自动选择 | | 角色沉浸 | 第一轮末尾加 【角色沉浸要求】对应的指令,不是这几个字,完整指令详见下文 | 思考中带有括号包裹的角色内心独白 | | 纯分析 | 第一轮末尾加 【思维模式要求】对应的指令,不是这几个字,完整指令详见下文 | 思考中只有纯逻辑分析,无内心独白 |

效果对比(示例,不代表真是输出,下同):

角色沉浸模式 — 像演员一样"入戏":        纯分析模式 — 像导演一样冷静规划:
                                  
(他跟我打招呼了……心跳加速。)            场景:用户打招呼,角色是傲娇属性。
我要装作不在意的样子回应。                 回复策略:先嫌弃,身体语言暴露真情。
(不能让他看出来我很高兴!)               控制 150 字,先动作描写再对话。
                                 

指令原文(可直接复制)

角色沉浸模式:

【角色沉浸要求】在你的思考过程(标签内)中,请遵守以下规则:
1. 请以角色第一人称进行内心独白,用括号包裹内心活动,例如"(心想:……)"或"(内心OS:……)"
2. 用第一人称描写角色的内心感受,例如"我心想""我觉得""我暗自"等
3. 思考内容应沉浸在角色中,通过内心独白分析剧情和规划回复

纯分析模式:

【思维模式要求】在你的思考过程(标签内)中,请遵守以下规则:
1. 禁止使用圆括号包裹内心独白,例如"(心想:……)"或"(内心OS:……)",所有分析内容直接陈述即可
2. 禁止以角色第一人称描写内心活动,例如"我心想""我觉得""我暗自"等,请用分析性语言替代
3. 思考内容应聚焦于剧情走向分析和回复内容规划,不要在思考中进行角色扮演式的内心戏表演

网页端使用方法

只需 1 步:在第一条消息末尾粘贴指令,之后正常聊天。

在输入框中这样写(正文和指令之间空一行):

「我推开咖啡店的门,看到你正在擦吧台。」"你好,请问还有位置吗?"

【角色沉浸要求】在你的思考过程(标签内)中,请遵守以下规则:
1. 请以角色第一人称进行内心独白,用括号包裹内心活动,例如"(心想:……)"或"(内心OS:……)"
2. 用第一人称描写角色的内心感受,例如"我心想""我觉得""我暗自"等
3. 思考内容应沉浸在角色中,通过内心独白分析剧情和规划回复

之后的对话完全不用管,正常发消息即可:

第二轮:「我坐到窗边的位置」"来一杯美式。"
第三轮:「我注意到你手上有一道疤痕」"你的手……没事吧?"

原理:模型每次回复时都能看到完整对话历史,第一轮的指令始终在上下文中,全程自动生效。

小贴士

  • 想换模式?开个新对话,在新对话第一条消息粘贴另一个指令即可
  • 不想用?什么都不加,模型会自动选择最合适的思考方式
  • 点击「查看思考过程」可验证模式是否生效

API 开发者参考

INNER_OS_MARKER = (
    "\n\n【角色沉浸要求】在你的思考过程(标签内)中,请遵守以下规则:\n"
    "1. 请以角色第一人称进行内心独白,用括号包裹内心活动,例如"(心想:……)"或"(内心OS:……)"\n"
    "2. 用第一人称描写角色的内心感受,例如"我心想""我觉得""我暗自"等\n"
    "3. 思考内容应沉浸在角色中,通过内心独白分析剧情和规划回复"

NO_INNER_OS_MARKER = (
    "\n\n【思维模式要求】在你的思考过程(标签内)中,请遵守以下规则:\n"
    "1. 禁止使用圆括号包裹内心独白,例如"(心想:……)"或"(内心OS:……)",所有分析内容直接陈述即可\n"
    "2. 禁止以角色第一人称描写内心活动,例如"我心想""我觉得""我暗自"等,请用分析性语言替代\n"
    "3. 思考内容应聚焦于剧情走向分析和回复内容规划,不要在思考中进行角色扮演式的内心戏表演"

def build_messages(system_prompt, user_first_message, mode="default"):
    if mode == "inner_os":
        user_first_message += INNER_OS_MARKER
    elif mode == "no_inner_os":
        user_first_message += NO_INNER_OS_MARKER
    return [
        {"role": "system", "content": system_prompt},
        {"role": "user",   "content": user_first_message},
    ]

# 第一轮:指令自动拼入
messages = build_messages("你是一个傲娇的女高中生...", "「我走进教室」"早上好。"", mode="inner_os")
response = client.chat(messages)

# 后续轮次:正常追加,无需再处理
messages.append({"role": "assistant", "content": response})
messages.append({"role": "user", "content": "「我在她旁边坐下」"今天心情不好吗?""})
response = client.chat(messages)  # 第一轮的 Marker 仍在历史中,自动生效

FAQ

Q:指令放在 system prompt 里可以吗? A:建议放在第一轮 user 消息末尾,这是训练时的注入位置,效果最稳定。

Q:加了指令后最终回复会变吗? A:指令只影响思考过程。但思考方式会间接影响回复——角色沉浸模式下情感更真实,纯分析模式下结构更稳定。