如何设计一个不忘你的AI人格:LongtermChatExternalSources提示词工程全解析

如何设计一个不忘你的AI人格:LongtermChatExternalSources提示词工程全解析

【免费下载链接】LongtermChatExternalSources GPT-3 chatbot with long-term memory and external sources 【免费下载链接】LongtermChatExternalSources 项目地址: https://gitcode.com/gh_mirrors/lo/LongtermChatExternalSources

LongtermChatExternalSources 是一个基于 GPT-3 的命令行聊天机器人项目,内置长期记忆外部信息源能力:机器人"RAVEN"能跨会话记住你说过的事,并据此生成回答。本文将从提示词工程视角,拆解它如何用几个纯文本模板 + 向量记忆实现"不忘你"的 AI 人格。

快速上手:5分钟跑起来

项目依赖极少,只需 Python3 与一个 OpenAI API Key:

  1. 克隆仓库:git clone https://gitcode.com/gh_mirrors/lo/LongtermChatExternalSources
  2. 创建并激活虚拟环境(python3 -m venv env
  3. 安装依赖:pip install openai numpy
  4. 将 API Key 写入项目根目录的 openaiapikey.txt(注意结尾不要换行)
  5. 运行:python chat.py,即可在终端与 RAVEN 对话

项目结构与提示词文件清单

整个"人格 + 记忆"系统,核心就是 2 个 Python 程序和 5 个提示词模板:

文件作用
chat.py主程序:消息存取、向量检索、调用 GPT-3
prompt_response.txt回答模板:定义 RAVEN 的人格与输出风格
prompt_notes.txt笔记模板:把检索到的对话总结成要点
prompt_dream_raven.txt梦境模板:从历史中提炼 RAVEN 自身的原则
prompt_dream_user.txt梦境模板:提炼用户的偏好与主题
prompt_dream_metaphor.txt梦境模板:为记忆块生成一个隐喻
dream_sequence.py梦境序列程序:人格自我演化模块
nexus/每句话一个 JSON 的"情景记忆库",含向量、UUID、时间戳
internal_notes/自动生成的记忆笔记(含向量,可再检索)
gpt3_logs/每次调用的提示词与原始输出留档

第一层:用提示词定义人格

打开 prompt_response.txt,你会发现人格不是靠参数,而是靠一段"角色指令":

I am a chatbot named RAVEN. My goals are to reduce suffering, increase prosperity, and increase understanding.

模板包含三部分:角色设定(名字、目标)、行为约束("提供长篇、详细、啰嗦的回答","结尾必须抛出一个跟进问题")、两个动态占位符

  • <<NOTES>>:由记忆系统注入的历史笔记
  • <<CONVERSATION>>:最近的对话原文

主程序在 chat.py 中完成拼接:先取最近 4 条消息填入 <<CONVERSATION>>,再填入检索总结后的 <<NOTES>>,最后以 RAVEN: 结尾引导模型"续写"自己的台词——这是一个很巧妙的零样本格式引导技巧,模型看到"RAVEN:" 会自然以第一人称继续输出。

配合 temperature=0.0 与停止词 ['USER:', 'RAVEN:'],输出风格稳定、不会抢话,人格一致性因此得到保证。

第二层:向量检索让 RAVEN "记得你"

单靠提示词无法记住历史对话,记忆靠的是 Embedding + 余弦相似度

  1. 存档:你和 RAVEN 的每句话都会调用 text-embedding-ada-002 生成向量,连同时间戳、UUID 存成 nexus/ 下的独立 JSON 文件(如 log_1674383041.28684_USER.json);
  2. 召回:每次你发新消息,fetch_memories 会把新消息向量化,与全部历史向量计算余弦相似度,取最相关的 10 条作为"情景记忆";
  3. 压缩:这 10 条原文会送入 prompt_notes.txt 模板总结成要点——模板要求"用 - 开头的短横线列表写详细笔记",例如项目里真实生成的笔记:
  • User: Asked about difficulty sleeping
  • Raven: Suggested establishing a regular sleep schedule...

格式约束(列表)让总结结果紧凑、易读,且便于再次喂给模型;摘要结果连同自己的向量一起存入 internal_notes/,形成"记忆的记忆"。

这就构成了三层记忆结构,与人脑类比非常直观:

记忆类型实现容量策略
工作记忆最近 4 条消息原文固定窗口
情景记忆向量相似度 Top-10 历史消息按需召回
语义记忆自动生成的笔记(可再检索)增量压缩

第三层:梦境序列——让 AI 人格"做梦"成长

最富想象力的是 dream_sequence.py 配合的三个"梦境提示词",它们在非对话时离线运行,模拟"睡眠中的记忆整理":

  • prompt_dream_raven.txt:读笔记,"从这些笔记中提炼关于 Raven 的原则或推论,用完整句子的短横线列表输出"——即自我认知;
  • prompt_dream_user.txt:读笔记,提炼"用户的共同主题、偏好与观察"——即用户画像;
  • prompt_dream_metaphor.txt:为一段记忆生成一个隐喻并解释——类似人类做梦时的意象化加工。

这些提示词的共同套路是:给定输入 + 指定提取维度 + 严格规定输出格式(- 列表 / 完整句子)。产出的"原则"可以再次作为外部源注入回答提示词,于是 RAVEN 对"我是谁、你是谁"的理解会随着聊天持续演化——这正是"AI 人格"区别于"聊天脚本"的关键。

提示词工程要点清单 📝

从这个项目可以提炼出 6 条可直接复用的设计原则:

  1. 人格写进提示词:名字、目标、语气、结尾习惯,全部用自然语言在 prompt_response.txt 中显式声明;
  2. 占位符做动态拼接<<NOTES>><<CONVERSATION>><<INPUT>> 把模板与数据解耦,提示词可独立迭代;
  3. 格式即约束:要求 - 列表、以 RAVEN: 续写,用格式锁定输出结构,减少幻觉式跑题;
  4. 分层压缩记忆:原文 → 笔记 → 原则,每层都缩小上下文、提高信噪比;
  5. 温度取 0、设置停止词:记忆机器人要"稳",temp=0.0 + stop=['USER:', 'RAVEN:'] 保证一致且知止;
  6. 全程留档可回溯:所有提示词与输出自动写入 gpt3_logs/,方便调优时"复盘"每次人格表现。

写在最后

LongtermChatExternalSources 用不到 200 行核心逻辑证明了:一个"不忘你"的 AI 人格,本质是提示词定义人格 + 向量检索唤起情景 + 分层笔记沉淀语义 + 梦境序列演化自我。项目源码中也留有 TODO(如检索声明式外部知识库、后台增量做笔记),如果你想继续深挖,可以从 chat.py 的记忆检索链路入手,把外部数据源(文件、网页、API)接进同一套"检索 → 总结 → 注入提示词"的管道里。

【免费下载链接】LongtermChatExternalSources GPT-3 chatbot with long-term memory and external sources 【免费下载链接】LongtermChatExternalSources 项目地址: https://gitcode.com/gh_mirrors/lo/LongtermChatExternalSources

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值