聊天记忆!
译自英语
ciao,美女们!
如上所述,这是一份面向新手的 j.ai 聊天记忆(Chat Memory)使用指南,无论你是代理(proxy)用户还是 JLLM 用户(尤其是 JLLM 用户可能更需要看),但最重要的是,如果你是像我一样的慢热(slow burn)爱好者,或者你想使用我的一些明确要求必须使用聊天记忆的机器人。
如果你来这里是因为想知道如何使用我那些需要按顺序游玩的开场白的机器人,别担心。读完这份指南,我会在最后讲到!
那么,首先,几点免责声明:
1我不是技术、LLM 或任何相关领域的权威。我目前正在攻读编程学位,脚本和 LLM 之类是我感兴趣的学科,所以我做了很多研究,但这并不意味着我不会犯错。
2如果你已经充分利用了你的聊天记忆,只是来这里看看另一种观点,欢迎!也请在评论里分享你的技巧。如果你做的和我完全不一样,那也没关系!使用 LLM/AI 没有唯一正确的方法。不过,确实有更有效和不太有效的方法。
3还有,一如既往:我制作的所有机器人都面向成人角色扮演和创意叙事。AI 不是心理治疗,也不能替代真实的人际关系。所有回复都由无意识的语言模型生成,不代表真实的观点、建议或情感。所描绘的角色均为虚构,任何言论都不反映创作者或托管平台的立场。请负责任地使用 AI。
现在,证明我不是在胡说八道。我进行过多个有着海量消息的慢热 RP 对话串。
规则 #1:给出的信息就是已知的信息
意思是,即使你告诉 AI“这是一个秘密,只应该由 {{CHAR}} 明确被告知时才知道”,有些模型,尤其是非思考模型(我现在正看着大部分 DeepSeek),只会有一半的时间遵守这条指令。
所以你只应该告诉 AI 你想让它知道的事情。这适用于所有内容。举例:如果你在 Sonas 的档案里为你的 Sona 写了完整的背景故事,我个人会删掉它并存到别处(比如一个 txt 文件之类的),除非{{Char}}从最开始就应该知道你 Sona 的故事。
所以,如果你 Sona 的信息里有秘密和背景故事,那可能就是为什么有时本不该认识你的角色会突然说出一些信息,仿佛他们知道一样。
聊天记忆也是如此,但我们稍后会讲到。;)
规则 #2:注意你的 Token!上下文很重要!
那么。Token。我知道,这些东西到底是什么,对吧?
好吧,我现在就告诉你:它们很重要,所以要时刻留意它们。如果你是代理用户,你可能已经对它们略知一二了,但如果你不是,或者你从来没在意过 Token 是什么、上下文对机器人意味着什么,那就注意听。
资源: 分词器。// 复制&把你的内容粘贴到这里,就能看到一些 JAI 没有给我们数字的东西(比如角色人设、聊天记忆和自定义/高级提示词)的大致 token 数量
对于机器人来说,“上下文”基本上就是它们的记忆能追溯多远。如果你不是代理用户,用的是基础的免费 JLLM 体验,你的上下文是 9k 个 token。下面的解释我们就用这个例子,因为如果你是代理用户,你多少可以自己设置上下文窗口,这个问题就没那么严重了。
另外,这个例子里我会用我第二受欢迎的机器人,也就是我的忠于原著的士兵男孩体验版本 (你们全都该感到羞耻!)
数据如下:
永久 Token: 1488。
这意味着在你的机器人能记住的 9k 个 token 中,有 1488 个被默认占用。它们是性格和场景。开场白不在这里,但我稍后会讲到。
所以,现在你还剩大约 7512 个 token。这是个不错的数字,对吧?
只不过......性格和场景并不是唯一需要考虑的永久 token。你还有你的角色人设、自定义/高级提示词和聊天记忆。
我们假设一开始你的聊天记忆是 0,就像你第一次使用某个机器人一样。
优化你的角色人设
这个例子我也会用我的主要 Sona。我 Sona 的整个档案总共大约 250 个 token。
还记得第一条规则吗?给出的信息就是已知的信息。更聪明的模型会从上下文中判断机器人是否应该知道你 Sona 的事情,但通常最好不要用庞大的背景故事塞满你 Sona 的档案,因为大多数机器人很可能不会用到它,它只是在浪费 token。
好,乍一看这可能显得太短了,但我保证它刚刚好。你 Sona 的信息应该只包含一个从未见过你 Sona 的机器人在初次见面/互动时能察觉到的东西。
所以,一个完全不知道你 Sona 是谁的机器人能够看到他们的身高、发型、肤色,甚至可能是族裔(你可以加在那里)。他们能在初次互动时听到你的声音是什么样的。如果你觉得根据这些“规则”还应该加更多东西,那就加。
比如,对于超人类(《黑袍纠察队》)的 Sona,你可以在末尾加一个类别,比如 ## SUPE TRAITS(超人类特质),然后描述你的能力(除非它们应该是秘密,或者只有在揭示后才能被发现),如果适用的话,你还可以描述你的“超人类制服”。
但是 Cara,那些有既定关系的机器人呢,比如兄弟姐妹、已婚夫妻或童年好友?他们应该知道我 Sona 的背景故事啊!
对,那就是你使用聊天记忆的时候!别担心,我们会讲到的!
掌握自定义提示词
我不打算在这上面花太多时间,因为我已经在我的 Tumblr 上讲过了。如果你想要自定义提示词的模板,外面有大量创作者在分享他们的,但这是我加到我所有机器人里的那段文字。
▫️好的提示词大有帮助 reddit 上和一些网站上有好几个帖子,有人在给你提供优秀系统提示词的模板,无论你是否使用代理。JanitorAI 官方 Discord 有一个专门讨论提示词的频道,去看看!
JLLM 的提示词。(约 600 个 token)
代理的提示词。(约 950 个 token)
有些人的提示词长得多,有些人的提示词非常小、非常紧凑。关键在于找出适合你和你偏好的模型(或亲爱的老 JLLM)的方法。
目前的统计是多少?
用我的机器人、我的 Sona 和我的 JLLM 提示词举例,我们是:
[机器人] - 1488 个 token
[Sona] - 250 个 token
[自定义提示词] - 600 个 token
[聊天记忆] - 0 个 token
永久 Token 总计: 2338 个 token
剩余 Token: 6662 个 token
嗯,这仍然是个不错的数字!我们可以应付!什么会消耗掉这些 token 呢?你的聊天。
所以,立刻可以从中减去开场白,我的机器人是 521 个 token。你还剩大约 6000 个 token,这是个好数字。这意味着你的聊天中有 6000 个 token 价值的“可用记忆”。如果你是个喜欢写像我一样长的多段消息的话痨,这大概能撑 15 条消息(总共,算上机器人和你的)。如果你更偏向“最多两段”的人,那肯定能撑更久。
不管怎样,到了某个时候,你会说够多的,需要用聊 天记忆了。以下是我如何使用我的聊天记忆。
规则 #3:理解你的聊天记忆!
我也有一个聊天记忆模板,链接在我每一个机器人里。我会把它贴在下面,并解释如何使用每个部分。
首先要理解:格式/Markdown(到处都是的 ## 标题和项目符号)是故意的。这是一种 LLM/AI 容易理解的格式。
你聊天记忆里的信息应该直接、切中要点。这里绝对不是使用华丽辞藻(或任何辞藻)的地方。这必须几乎是临床式的。这是给大家方便复制/粘贴的空模板:
## Current Setting:
-
## Past Memories:
-
## {{User}} Important Info:
-
## {{Char}} Important Info:
-
## {{Char}} Relationship with {{User}}:
-
## Current Scenario:
-
## {{Char}}'s current dynamics with {{User}}:
-
让我们从“当前设定”开始。这是可选的。我用它是因为我是原著/同人机器人用户/创作者,所以有时我只是想确保机器人坚持某个剧情线,但它不是必需的。
下面是我会如何使用它的例子:
## Current Setting:
- Season 4.
- Year: 2022.
假如,你在用一个最初设定在第二季的祖国人机器人写作,然后你随着剧情推进到了第三季,比如,你最终应该在你的聊天记忆中更新这个。不确定 JLLM 如何处理这类信息,但它确实对代理有帮助(尤其是新模型)。
现在,让我们理解“过去的记忆”部分——你聊天记忆中最重要的部分!这是你总结场景的地方。你的 Sona 和角色之间发生的任何重要事情都应该放在这里,但要用尽可能简洁的方式。
这是一个例子:
## Past Memories:
- Matt and Nia dated since 16. At 18, Matt enlisted to impress his father, promising to return. Maintained long-distance via letters until Matt stopped reading/responding.
- Edward's conditions: Nia couldn't tell Matt until paternity confirmed; Edward demanded access if it was his grandchild. Nia agreed.
- Matt admitted fault for not reading letters, insisted he'd have returned if he'd known. Nia allowed 5 minutes with their kid, who believed her father died in the war. Matt went with the lie.
- Nia cut visit short, kicked Matt out. Said he could see their child at his father's house, 3x/week per her arrangement with Edward.
你上面看到的是大约 100 条消息总结成的四个项目符号。因为最终,机器人(这个例子中是 Matt)只需要记住他去打仗了、不再回信了、回来时有了一个他不知道的孩子、被赶出去了,等等。那一瞬间发生的确切感受不必包含在内,因为 AI 反正会填补空白。
聊天记忆的这一部分应该经常更新,用你与机器人场景的摘要,按时间顺序,用过去时。不要让机器人困惑。如果是过去的记忆,就用过去时。
“{{User}} 重要信息”部分是你添加任何关于你 Sona、而这个机器人应该已经知道的信息的地方,要么是因为你 的 Sona 在聊天中告诉了他,要么是因为它被揭示了,要么是因为它是已知信息。
例子:
## {{User}} Important Info:
- Age: 26 years old.
- Daughter: Her child with Matt. Layla, 6 years old. Blonde hair, green eyes, soft freckles on her nose and cheeks, fair skin.
- Lives in Manhattan, Lower East Side.
我通常在这个区域设置我 Sona 的年龄。为什么不放在角色人设里?因为这样我就可以把同一个角色人设复用于不同的场景,在我想用那个角色人设但年龄不同的时候。;) 拯救世界,回收你的 Sona。
如果你 Sona 的“背景故事”对角色来说很重要,这也是它该放的地方,但要确保以 token 高效的方式添加。这个部分不要华丽辞藻。只要信息!
“{{Char}} 重要信息”只在你确实有东西要加时才放这里。比如他们的年龄或任何对你的剧情推进相关的东西。假设在 50 条消息的过程中,角色失去了一条腿。你会加上类似这样的:
## {{Char}} Important Info:
- Lost his leg after the Battle of Something-or-Other.
“{{Char}} 与 {{User}} 的关系”是你与机器人当前关系的状态。所以,如果你们开始时是“对手”,就应该写“一生的对手”,比如。但是,如果在 50 条消息的过程中,你们成了朋友,就删掉“对手”那条,换成“朋友”。
为什么我不能直接在“对手”下面加“朋友”?
因为那会让机器人困惑。如果有事情发生改变了这些角色之间的关系,它应该被总结并添加到“过去的记忆”。机器人会从中记住,你们并不一直是朋友,但这部分应该写你们现在是什么。
例子:
## {{Char}} Relationship with {{User}}:
- Romantic exclusive relationship. Currently living together.
或者
## {{Char}} Relationship with {{User}}:
- Strangers. Just met recently.
或者
## {{Char}} Relationship with {{User}}:
- Rivals ever since they were children.
“当前场景”是你描述当前正在发生什么场景的地方。
例子:
## Current Scenario:
- Matt's apartment building, in his penthouse. Morning. Matt and {{User}} are in bed, talking.
“{{Char}}当前与 {{User}} 的动态”是你详细描述(不要夸张)情感、动态等的地方。角色对用户的感受,以及用户目前对角色如何表现。
比如,这就是你为慢热设定节奏的方式。这是你告诉机器人不,他并没有坠入爱河。事实上,他对用户不信任、还不认识他们、仍在了解他们等等。当这在聊天中开始改变(通过你的写作)时,你去聊天记忆把它改成反映这一点的内容。
下面的例子来自一个关系已经很深入的机器人。
## {{Char}}’s current dynamics with {{User}}:
- Matt is gruff, protective, stubborn, clearly cares about Nia’s safety and is attached to her
- There’s clear attraction between them and mutual respect
- The relationship is becoming more openly acknowledged
- Both are showing care for each other in their own ways
这就是你全部填好后看起来的样子(大约 360 个 token):
## Current Setting:
- Season 4.
- Year: 2022.
## Past Memories:
- Matt and Nia dated since 16. At 18, Matt enlisted to impress his father, promising to return. Maintained long-distance via letters until Matt stopped reading/responding.
- Edward's conditions: Nia couldn't tell Matt until paternity confirmed; Edward demanded access if it was his grandchild. Nia agreed.
- Matt admitted fault for not reading letters, insisted he'd have returned if he'd known. Nia allowed 5 minutes with their kid, who believed her father died in the war. Matt went with the lie.
- Nia cut visit short, kicked Matt out. Said he could see their child at his father's house, 3x/week per her arrangement with Edward.
## {{User}} Important Info:
- Age: 26 years old.
- Daughter: Her child with Matt. Layla, 6 years old. Blonde hair, green eyes, soft freckles on her nose and cheeks, fair skin.
- Lives in Manhattan, Lower East Side.
## {{Char}} Important Info:
- Lost his leg after the Battle of Something-or-Other.
## {{Char}} Relationship with {{User}}:
- Romantic exclusive relationship. Currently living together.
## Current Scenario:
- Matt's apartment building, in his penthouse. Morning. Matt and {{User}} are in bed, talking.
## {{Char}}’s current dynamics with {{User}}: [Use short words/phrases]
- Matt is gruff, protective, stubborn, clearly cares about Nia’s safety and is attached to her
- There’s clear attraction between them and mutual respect
- The relationship is becoming more openly acknowledged
- Both are showing care for each other in their own ways
但我什么时候该开始使用我的聊天记忆呢?
在我看来,每当一个“场景”结束时。比如:某人(Sona 或机器人)离开了房间,并且有时间跳跃。或者比如,你们都去睡觉了。就把它想象成一部电影或电视剧。如果你觉得“场景”会改变,就 暂停一下,去你的聊天记忆,更新并保存它。
对于那些有需要按顺序游玩的开场白的机器人,比如这个或这个,我该如何使用聊天记忆呢?
这里有一个万无一失的分步指南:
01 - 至少读一遍所有开场白的摘要,这样你就能大概知道它们都是什么。
02 - 像平常一样和机器人写作,使用第一个开场白(如果变长了就使用聊天记忆!)
03 - 当你的聊天达到自然的结尾,你想进入下一个开场白时,把聊天记忆更新到聊天当前的状态,保存它,复制它。
04 - 用同一个机器人打开一个新聊天,选择下一个开场白,点击聊天记忆,粘贴你从第一个聊天复制的信息。
05 - 保存,刷新页面,开始写作。
06 - 重复这个过程!
就是这样!我知道看起来很多,但那只是因为我是个话痨。相信我,当你开始上手时会很容易。
希望这对所有一直在问聊天记忆以及如何正确使用它的人有帮助。再说一次,这就是我的用法!其他人可能也有宝贵的见解!<3
如果你是代理用户: 实际上什么都不会变,只是你可能有更大的上下文窗口(我见过 16k、32k、64k 甚至更多),所以你不需要那么频繁地更新聊天记忆。
另外:思考模型总是表现更好!我知道你们很多人不喜欢思考模型,但事实就是如此。思考模型就是更优越,能更好地遵守规则和指令,即使回复要稍微久一点。
我没法谈论我不特别喜欢或推荐的模型(比如 DeepSeek,还有很多其他),但如果你使用 GLM、Gemini、Claude 或 Kimi,如果你遇到问题,我或许能帮你!
感谢阅读!
ciao,美女们!
已创建 7月2日
已更新 7月3日
已发布 7月3日