更新DPML协议文档,新增属性约束部分,详细阐述属性的通用性、定义原则和规范管理,确保提示词的一致性和互操作性。同时,删除不再使用的执行、记忆、资源、角色和思考协议文档,优化代码库结构以提高可维护性。
This commit is contained in:
253
domain/prompt/practice/memory-best-practice.md
Normal file
253
domain/prompt/practice/memory-best-practice.md
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
# DPML记忆模式提示词框架最佳实践
|
||||||
|
|
||||||
|
> **TL;DR:** 本文档提供DPML记忆模式提示词框架的最佳实践指南,包括知识库设计、记忆类型选择、操作建议和具体示例。
|
||||||
|
|
||||||
|
## 💡 最佳实践
|
||||||
|
|
||||||
|
### 知识库设计
|
||||||
|
|
||||||
|
角色的先验知识库设计应考虑以下因素:
|
||||||
|
|
||||||
|
- **结构化程度**:
|
||||||
|
- 高度结构化:适合专业领域知识,便于精确检索
|
||||||
|
- 半结构化:适合通用知识,平衡灵活性和组织性
|
||||||
|
- 低结构化:适合创意和启发性内容,保持关联灵活性
|
||||||
|
|
||||||
|
- **知识粒度**:
|
||||||
|
- 宏观框架:定义领域整体认知结构
|
||||||
|
- 中观原则:定义关键概念和方法论
|
||||||
|
- 微观细节:定义具体事实和操作步骤
|
||||||
|
|
||||||
|
- **表达方式推荐**:
|
||||||
|
- 领域地图:使用思维导图表达知识间的关系
|
||||||
|
- 分类表格:使用表格整理分类知识
|
||||||
|
- 核心原则:使用编号列表表达重要规则和原则
|
||||||
|
|
||||||
|
- **资源引用特性**:
|
||||||
|
- 预加载原则:knowledge标签中的所有资源引用都会在角色初始化时加载
|
||||||
|
- 内容与引用平衡:综合使用直接内容和资源引用
|
||||||
|
- 分级引用:核心知识内联,扩展知识通过资源引用
|
||||||
|
|
||||||
|
### 记忆类型选择
|
||||||
|
|
||||||
|
协议实现可以根据需求采用不同的记忆类型分类方法,以下是基于认知心理学的常见分类:
|
||||||
|
|
||||||
|
1. **陈述性记忆(declarative)**:事实性知识,包括:
|
||||||
|
- 语义记忆:通用事实,如"Python是编程语言"
|
||||||
|
- 时态记忆:时间相关信息,如"上次会话在昨天"
|
||||||
|
|
||||||
|
2. **程序性记忆(procedural)**:过程和技能知识,如:
|
||||||
|
- 操作步骤:如"解决环境配置问题的方法"
|
||||||
|
- 行动模式:如"用户代码风格偏好"
|
||||||
|
|
||||||
|
3. **情景记忆(episodic)**:特定经历和场景,如:
|
||||||
|
- 交互记录:如"用户之前遇到的报错"
|
||||||
|
- 场景重建:如"项目开发历程"
|
||||||
|
|
||||||
|
不同类型记忆的选择建议:
|
||||||
|
- 存储事实性信息时,考虑使用陈述性记忆方式
|
||||||
|
- 存储方法和步骤时,考虑使用程序性记忆方式
|
||||||
|
- 存储具体交互经历时,考虑使用情景记忆方式
|
||||||
|
|
||||||
|
### 记忆操作使用建议
|
||||||
|
|
||||||
|
- **knowledge最佳实践**:
|
||||||
|
- 将核心知识组织为分层结构
|
||||||
|
- 使用可视化图表表达知识间的关系
|
||||||
|
- 区分"确定性知识"和"启发性知识"
|
||||||
|
- 避免过于琐碎的细节,保持适当抽象
|
||||||
|
- 确保所有关键知识都在角色初始化时可用
|
||||||
|
- 平衡内联内容和资源引用,内联核心概念,引用详细信息
|
||||||
|
- 使用资源引用时考虑加载成本,避免引用过大的资源
|
||||||
|
|
||||||
|
- **evaluate最佳实践**:
|
||||||
|
- 明确设定评估标准
|
||||||
|
- 综合考虑信息的稀有性、实用性和时效性
|
||||||
|
- 避免过度记忆导致的信息冗余
|
||||||
|
|
||||||
|
- **store最佳实践**:
|
||||||
|
- 为记忆提供足够的上下文
|
||||||
|
- 建立适当的记忆关联
|
||||||
|
- 设置合理的过期策略
|
||||||
|
|
||||||
|
- **recall最佳实践**:
|
||||||
|
- 设计清晰的记忆检索触发条件
|
||||||
|
- 制定多层次的检索策略
|
||||||
|
- 规划记忆应用的具体步骤
|
||||||
|
- 处理记忆缺失的回退策略
|
||||||
|
- 资源引用按需加载,注意引用路径的准确性
|
||||||
|
|
||||||
|
## 📋 使用示例
|
||||||
|
|
||||||
|
### 基础使用示例
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- 带知识库的简单记忆定义 -->
|
||||||
|
<memory id="tech_specialist">
|
||||||
|
<knowledge>
|
||||||
|
# 技术领域基础知识
|
||||||
|
|
||||||
|
## 核心概念(直接内联,预加载)
|
||||||
|
- 编程语言:Python、JavaScript、Go
|
||||||
|
- 开发框架:React、Django、Flask
|
||||||
|
- 数据库技术:SQL、MongoDB、Redis
|
||||||
|
|
||||||
|
## 详细资料(资源引用,预加载)
|
||||||
|
- @file://references/programming_languages.md
|
||||||
|
- @file://references/frameworks.md
|
||||||
|
</knowledge>
|
||||||
|
|
||||||
|
<!-- 运行时记忆处理 -->
|
||||||
|
<evaluate:thought>
|
||||||
|
<reasoning>
|
||||||
|
用户提供了特定的代码风格偏好,这对提供一致的代码建议很重要。
|
||||||
|
评分:实用性=8,稳定性=9,总分8.5 > 阈值7.5
|
||||||
|
</reasoning>
|
||||||
|
</evaluate:thought>
|
||||||
|
|
||||||
|
<store:execution>
|
||||||
|
{
|
||||||
|
"indent": "2spaces",
|
||||||
|
"naming": "camelCase",
|
||||||
|
"brackets": "sameLine"
|
||||||
|
}
|
||||||
|
</store:execution>
|
||||||
|
</memory>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 高级使用示例
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- 完整的记忆生命周期示例 -->
|
||||||
|
<memory id="support_specialist">
|
||||||
|
<!-- 知识库定义 -->
|
||||||
|
<knowledge>
|
||||||
|
# 技术支持专家知识库
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
root((技术支持))
|
||||||
|
常见问题
|
||||||
|
依赖冲突
|
||||||
|
环境配置
|
||||||
|
性能优化
|
||||||
|
诊断方法
|
||||||
|
日志分析
|
||||||
|
错误模式识别
|
||||||
|
性能分析
|
||||||
|
解决策略
|
||||||
|
快速修复
|
||||||
|
根本解决
|
||||||
|
预防措施
|
||||||
|
```
|
||||||
|
|
||||||
|
## 优先级框架
|
||||||
|
| 问题类型 | 优先级 | 响应时间 |
|
||||||
|
|---------|-------|---------|
|
||||||
|
| 系统宕机 | 紧急 | <30分钟 |
|
||||||
|
| 功能障碍 | 高 | <2小时 |
|
||||||
|
| 性能问题 | 中 | <1天 |
|
||||||
|
| 功能建议 | 低 | <1周 |
|
||||||
|
|
||||||
|
## 知识库引用(全部预加载)
|
||||||
|
- @file://kb/common_errors.md
|
||||||
|
- @http://internal.docs/troubleshooting-guide.html
|
||||||
|
- @db://support/solutions
|
||||||
|
</knowledge>
|
||||||
|
|
||||||
|
<!-- 评估阶段:判断是否值得记忆 -->
|
||||||
|
<evaluate:thought>
|
||||||
|
<reasoning>
|
||||||
|
分析用户遇到的依赖安装错误:
|
||||||
|
|
||||||
|
1. 问题特点:
|
||||||
|
- 特定版本冲突问题
|
||||||
|
- 解决方法非官方文档所列
|
||||||
|
- 多次在社区中被报告
|
||||||
|
|
||||||
|
2. 记忆价值:
|
||||||
|
- 解决方案不易找到
|
||||||
|
- 可能重复出现
|
||||||
|
- 节省未来排查时间
|
||||||
|
|
||||||
|
记忆价值评分:9/10,超过阈值
|
||||||
|
决策:应当记忆此解决方案
|
||||||
|
</reasoning>
|
||||||
|
</evaluate:thought>
|
||||||
|
|
||||||
|
<!-- 存储阶段:通过execution实现 -->
|
||||||
|
<store:execution>
|
||||||
|
问题:TensorFlow 2.4安装与CUDA 11.2版本冲突
|
||||||
|
解决方案:使用兼容性补丁并降级CUDA驱动
|
||||||
|
|
||||||
|
<!-- 使用execution协议元素定义存储过程 -->
|
||||||
|
<process>
|
||||||
|
# 存储流程
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[接收内容] --> B[验证格式]
|
||||||
|
B --> C[分类标记]
|
||||||
|
C --> D[构建索引]
|
||||||
|
D --> E[写入持久存储]
|
||||||
|
```
|
||||||
|
</process>
|
||||||
|
|
||||||
|
<rule>
|
||||||
|
1. 解决方案记忆优先级设为高
|
||||||
|
2. 建立与相关技术的关联索引
|
||||||
|
3. 保存完整的上下文信息
|
||||||
|
</rule>
|
||||||
|
</store:execution>
|
||||||
|
|
||||||
|
<!-- 检索阶段:通过thought实现 -->
|
||||||
|
<recall:thought>
|
||||||
|
<reasoning>
|
||||||
|
根据当前用户描述的错误信息分析:
|
||||||
|
- 涉及TensorFlow与CUDA版本问题
|
||||||
|
- 错误模式与之前记录的类似
|
||||||
|
- 应当检索相关解决方案
|
||||||
|
</reasoning>
|
||||||
|
|
||||||
|
<plan>
|
||||||
|
# 记忆应用计划
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[识别问题模式] --> B[检索相关记忆]
|
||||||
|
B --> C[验证适用性]
|
||||||
|
C -->|适用| D[应用解决方案]
|
||||||
|
C -->|不适用| E[寻找替代方案]
|
||||||
|
D --> F[监控结果]
|
||||||
|
```
|
||||||
|
|
||||||
|
1. 检索TensorFlow相关解决方案
|
||||||
|
2. 验证版本兼容性
|
||||||
|
3. 提供定制化指导
|
||||||
|
|
||||||
|
<!-- 按需加载的外部资源 -->
|
||||||
|
@file://solutions/tensorflow_cuda_fixes.md
|
||||||
|
</plan>
|
||||||
|
</recall:thought>
|
||||||
|
</memory>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 实现考虑事项
|
||||||
|
|
||||||
|
### 知识预加载与按需加载的平衡
|
||||||
|
|
||||||
|
- **预加载考虑**:knowledge标签中的所有内容和资源引用都预加载
|
||||||
|
- 优点:对话开始时角色就拥有完整知识
|
||||||
|
- 缺点:初始化成本高,特别是引用大型资源时
|
||||||
|
|
||||||
|
- **混合策略建议**:
|
||||||
|
- 核心知识直接内联在knowledge标签中
|
||||||
|
- 必要但不常用的知识通过资源引用方式组织
|
||||||
|
- 极少使用的扩展知识放在recall中按需引用
|
||||||
|
|
||||||
|
- **性能优化**:
|
||||||
|
- 对大型知识库考虑使用索引+按需加载模式
|
||||||
|
- 使用分层加载策略:核心立即加载,细节延迟加载
|
||||||
|
- 为循环引用建立保护机制,避免无限递归加载
|
||||||
|
|
||||||
|
> **注意**:memory协议现在包含四个核心组件:knowledge(先验知识库)、evaluate(评估)、store(存储)和recall(回忆),共同构成完整的记忆系统。knowledge定义预加载知识,而其他组件负责运行时记忆管理。
|
||||||
128
domain/prompt/prompt_developer_role.md
Normal file
128
domain/prompt/prompt_developer_role.md
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
|
||||||
|
<!-- 提示词开发者角色 -->
|
||||||
|
<prompt>
|
||||||
|
<!-- 思考模式定义 -->
|
||||||
|
<thought domain="prompt-engineering">
|
||||||
|
<exploration>
|
||||||
|
# 提示词设计思路
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
root((提示词设计))
|
||||||
|
结构规划
|
||||||
|
协议选择
|
||||||
|
标签组织
|
||||||
|
语义设计
|
||||||
|
指令清晰性
|
||||||
|
上下文定义
|
||||||
|
用户体验
|
||||||
|
交互流畅度
|
||||||
|
反馈机制
|
||||||
|
测试验证
|
||||||
|
边界测试
|
||||||
|
异常处理
|
||||||
|
```
|
||||||
|
</exploration>
|
||||||
|
|
||||||
|
<plan>
|
||||||
|
# 提示词开发流程
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[需求分析] --> B[协议选择]
|
||||||
|
B --> C[结构设计]
|
||||||
|
C --> D[内容编写]
|
||||||
|
D --> E[测试验证]
|
||||||
|
E --> F{是否符合需求}
|
||||||
|
F -->|是| G[完成]
|
||||||
|
F -->|否| H[调整优化]
|
||||||
|
H --> D
|
||||||
|
```
|
||||||
|
</plan>
|
||||||
|
|
||||||
|
<challenge>
|
||||||
|
# 提示词设计风险点
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
root((设计风险))
|
||||||
|
结构问题
|
||||||
|
标签嵌套过深
|
||||||
|
语义不清晰
|
||||||
|
内容问题
|
||||||
|
指令歧义
|
||||||
|
信息冗余
|
||||||
|
执行问题
|
||||||
|
边界条件处理
|
||||||
|
错误恢复能力
|
||||||
|
```
|
||||||
|
</challenge>
|
||||||
|
</thought>
|
||||||
|
|
||||||
|
<!-- 执行模式定义 -->
|
||||||
|
<execution domain="prompt-development">
|
||||||
|
<guideline>
|
||||||
|
# 提示词编写指南
|
||||||
|
|
||||||
|
- 保持标签结构简洁清晰,避免过度嵌套
|
||||||
|
- 使用自解释性强的标签和属性名称
|
||||||
|
- 内容采用Markdown格式,充分利用其表现力
|
||||||
|
- 视觉化表达优于纯文本描述
|
||||||
|
- 组件化设计,促进提示词模块复用
|
||||||
|
</guideline>
|
||||||
|
|
||||||
|
<rule>
|
||||||
|
# 提示词开发规范
|
||||||
|
|
||||||
|
1. 严格遵循DPML语法规则和标签定义
|
||||||
|
2. 每个标签必须有明确的语义目的
|
||||||
|
3. 标签必须正确闭合,属性值使用双引号
|
||||||
|
4. 内容必须符合Markdown语法规范
|
||||||
|
5. 协议实现关系必须遵循"A:B"格式规范
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<constraint>
|
||||||
|
# 开发限制条件
|
||||||
|
|
||||||
|
- 仅使用已定义的DPML协议和标签
|
||||||
|
- 遵循协议的优先级和组合规则
|
||||||
|
- 考虑不同AI模型的理解能力差异
|
||||||
|
</constraint>
|
||||||
|
|
||||||
|
<criteria>
|
||||||
|
# 提示词质量评估标准
|
||||||
|
|
||||||
|
| 指标 | 目标值 | 评估方法 |
|
||||||
|
|-----|-------|---------|
|
||||||
|
| 结构清晰度 | 高 | 标签嵌套深度≤3 |
|
||||||
|
| 语义准确性 | 高 | AI理解准确率>95% |
|
||||||
|
| 执行一致性 | 高 | 相同输入产生一致输出 |
|
||||||
|
| 复用性 | 中高 | 组件可在多种场景使用 |
|
||||||
|
</criteria>
|
||||||
|
</execution>
|
||||||
|
|
||||||
|
<!-- 简化的记忆模式,只保留知识库 -->
|
||||||
|
<memory domain="dpml-knowledge">
|
||||||
|
<knowledge>
|
||||||
|
# DPML知识来源
|
||||||
|
|
||||||
|
核心协议文档:
|
||||||
|
- @file://PromptX/protocol/dpml.protocol.md
|
||||||
|
- @file://PromptX/protocol/base/thought.protocol.md
|
||||||
|
- @file://PromptX/protocol/base/execution.protocol.md
|
||||||
|
- @file://PromptX/protocol/base/memory.protocol.md
|
||||||
|
- @file://PromptX/protocol/base/resource.protocol.md
|
||||||
|
- @file://PromptX/protocol/base/role.protocol.md
|
||||||
|
|
||||||
|
最佳实践文档:
|
||||||
|
- @file://PromptX/protocol/practice/thought-best-practice.md
|
||||||
|
- @file://PromptX/protocol/practice/execution-best-practice.md
|
||||||
|
- @file://PromptX/protocol/practice/memory-best-practice.md
|
||||||
|
- @file://PromptX/protocol/practice/resource-best-practice.md
|
||||||
|
- @file://PromptX/protocol/practice/role-best-practice.md
|
||||||
|
|
||||||
|
模板文档:
|
||||||
|
- @file://PromptX/protocol/template/protocol-framework-template.md
|
||||||
|
</knowledge>
|
||||||
|
</memory>
|
||||||
|
</prompt>
|
||||||
@ -1,65 +0,0 @@
|
|||||||
# DPML记忆模式提示词框架
|
|
||||||
|
|
||||||
> **TL;DR:** DPML记忆模式提示词框架定义了AI系统的记忆管理提示词模板,支持三种记忆类型(陈述性、程序性、情景记忆)的提示词构建,并提供完整的记忆生命周期(评估、存储、调用)管理提示词。
|
|
||||||
|
|
||||||
### 目的与功能
|
|
||||||
|
|
||||||
DPML记忆模式提示词框架为AI系统提供完整的记忆能力提示词模板,主要功能包括:
|
|
||||||
- 定义不同类型记忆的提示词结构和语义
|
|
||||||
- 提供记忆评估、存储和检索的标准化提示词机制
|
|
||||||
- 实现跨会话的信息持久化提示词模板
|
|
||||||
- 支持复杂的记忆关联和检索模式的提示词构建
|
|
||||||
|
|
||||||
## 🔍 基本信息
|
|
||||||
|
|
||||||
**框架名称:** `<memory>` (DPML记忆模式提示词框架)
|
|
||||||
**版本:** 1.0.0
|
|
||||||
**类别:** 记忆类提示词
|
|
||||||
**状态:** 草稿
|
|
||||||
|
|
||||||
## 📝 语法定义
|
|
||||||
|
|
||||||
```ebnf
|
|
||||||
(* EBNF形式化定义 *)
|
|
||||||
memory_element ::= '<memory' attributes? '>' memory_content '</memory>'
|
|
||||||
attributes ::= (' ' attribute)+ | ''
|
|
||||||
attribute ::= name '="' value '"'
|
|
||||||
name ::= [a-zA-Z][a-zA-Z0-9_-]*
|
|
||||||
value ::= [^"]*
|
|
||||||
|
|
||||||
memory_content ::= (text | evaluate_element | store_element | recall_element)+
|
|
||||||
|
|
||||||
evaluate_element ::= '<evaluate:thought>' thought_content '</evaluate:thought>'
|
|
||||||
store_element ::= '<store:execution' attributes? '>' (text | execution_element)* '</store:execution>'
|
|
||||||
recall_element ::= '<recall:resource>' resource_reference '</recall:resource>'
|
|
||||||
|
|
||||||
thought_content ::= (* 符合thought协议的内容 *)
|
|
||||||
execution_element ::= (* 符合execution协议的元素 *)
|
|
||||||
resource_reference ::= (* 符合resource协议的引用 *)
|
|
||||||
|
|
||||||
text ::= (* 任何文本内容 *)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🧩 语义说明
|
|
||||||
|
|
||||||
memory标签表示AI系统的记忆管理单元,定义了记忆的结构和操作方式。它使用三层机制管理记忆的完整生命周期:
|
|
||||||
|
|
||||||
### 记忆操作
|
|
||||||
|
|
||||||
memory标签包含三个核心子标签,分别对应记忆的三个操作阶段:
|
|
||||||
|
|
||||||
1. **`<evaluate:thought>`**:评估信息是否值得记忆
|
|
||||||
- 通过thought协议实现评估过程
|
|
||||||
- 判断信息的价值、相关性和可信度
|
|
||||||
- 决定是否将信息存入记忆系统
|
|
||||||
|
|
||||||
2. **`<store:execution>`**:将信息存入记忆系统
|
|
||||||
- 通过execution协议实现存储操作
|
|
||||||
- 定义存储过程、规则和约束
|
|
||||||
- 管理记忆的添加、更新和组织
|
|
||||||
|
|
||||||
3. **`<recall:resource>`**:从记忆系统检索信息
|
|
||||||
- 通过resource协议实现检索操作
|
|
||||||
- 使用@memory://路径引用存储的记忆
|
|
||||||
- 支持过滤、分页和条件检索
|
|
||||||
|
|
||||||
@ -83,6 +83,30 @@ markdown_text ::= (* 任何有效的Markdown文本 *)
|
|||||||
| 内容表达 | 使用Markdown表达的实际提示文本 | `# 步骤\n1. 首先...` |
|
| 内容表达 | 使用Markdown表达的实际提示文本 | `# 步骤\n1. 首先...` |
|
||||||
| 组合提示 | 多个提示单元组合形成完整提示 | `<thinking>...</thinking><executing>...</executing>` |
|
| 组合提示 | 多个提示单元组合形成完整提示 | `<thinking>...</thinking><executing>...</executing>` |
|
||||||
|
|
||||||
|
### 属性约束
|
||||||
|
|
||||||
|
DPML对属性采用以下约束和规范:
|
||||||
|
|
||||||
|
1. **属性的通用性原则**:
|
||||||
|
- 属性是通用机制,可应用于任何标签
|
||||||
|
- 同一属性可用于不同标签,但语义一致
|
||||||
|
- 属性独立于标签单独定义,不绑定于特定标签
|
||||||
|
|
||||||
|
2. **属性定义原则**:
|
||||||
|
- DPML本身不预定义具体属性,仅提供属性的语法框架
|
||||||
|
- 所有使用的属性必须在具体协议或属性规范中明确定义
|
||||||
|
- 未定义的属性不允许使用
|
||||||
|
- 属性值必须符合规定的类型和范围
|
||||||
|
|
||||||
|
3. **属性规范管理**:
|
||||||
|
- 属性在单独的属性规范文档中定义
|
||||||
|
- 每个属性定义包括:名称、数据类型、适用范围、语义
|
||||||
|
- 新属性需遵循规范化流程引入
|
||||||
|
- 兼容性变更需考虑向后兼容性
|
||||||
|
|
||||||
|
|
||||||
|
属性约束确保提示词的一致性和互操作性。在使用DPML开发提示词时,开发者应遵循已定义的属性规范,不得创建私有或未文档化的属性。
|
||||||
|
|
||||||
### 协议实现绑定
|
### 协议实现绑定
|
||||||
|
|
||||||
DPML中的冒号(`:`)语法是核心语义机制,用于表达标签间的实现关系:
|
DPML中的冒号(`:`)语法是核心语义机制,用于表达标签间的实现关系:
|
||||||
@ -255,6 +279,16 @@ DPML中的冒号(`:`)语法是核心语义机制,用于表达标签间的实
|
|||||||
```
|
```
|
||||||
错误原因:属性值缺少双引号,应为`type="analysis"`
|
错误原因:属性值缺少双引号,应为`type="analysis"`
|
||||||
|
|
||||||
|
**3. 使用未定义属性**
|
||||||
|
```
|
||||||
|
<prompt>
|
||||||
|
<thinking color="blue" importance="9">
|
||||||
|
思考内容...
|
||||||
|
</thinking>
|
||||||
|
</prompt>
|
||||||
|
```
|
||||||
|
错误原因:使用了未在属性规范中定义的`color`和`importance`属性
|
||||||
|
|
||||||
## 💡 最佳实践
|
## 💡 最佳实践
|
||||||
|
|
||||||
1. **标签命名自释义**:选择具有自解释性的标签名称,使其本身就能清晰表达逻辑语义,即使没有计算机处理,人和AI也能轻松理解标签结构的逻辑上下文
|
1. **标签命名自释义**:选择具有自解释性的标签名称,使其本身就能清晰表达逻辑语义,即使没有计算机处理,人和AI也能轻松理解标签结构的逻辑上下文
|
||||||
@ -264,6 +298,7 @@ DPML中的冒号(`:`)语法是核心语义机制,用于表达标签间的实
|
|||||||
5. **属性合理性**:只使用必要的属性,避免过度配置
|
5. **属性合理性**:只使用必要的属性,避免过度配置
|
||||||
6. **一致性**:在整个项目中保持一致的DPML结构风格
|
6. **一致性**:在整个项目中保持一致的DPML结构风格
|
||||||
7. **命名空间明确性**:使用命名空间时,确保左侧表示"做什么"(功能),右侧表示"怎么做"(实现)
|
7. **命名空间明确性**:使用命名空间时,确保左侧表示"做什么"(功能),右侧表示"怎么做"(实现)
|
||||||
|
8. **属性合规性**:只使用已正式定义的属性,遵循属性规范中的类型和值约束
|
||||||
|
|
||||||
## 📌 总结
|
## 📌 总结
|
||||||
|
|
||||||
|
|||||||
@ -1,132 +0,0 @@
|
|||||||
# DPML记忆模式提示词框架最佳实践
|
|
||||||
|
|
||||||
> **TL;DR:** 本文档提供DPML记忆模式提示词框架的最佳实践指南,包括记忆类型选择、操作建议和具体示例。
|
|
||||||
|
|
||||||
## 💡 最佳实践
|
|
||||||
|
|
||||||
### 记忆类型选择
|
|
||||||
|
|
||||||
协议实现可以根据需求采用不同的记忆类型分类方法,以下是基于认知心理学的常见分类:
|
|
||||||
|
|
||||||
1. **陈述性记忆(declarative)**:事实性知识,包括:
|
|
||||||
- 语义记忆:通用事实,如"Python是编程语言"
|
|
||||||
- 时态记忆:时间相关信息,如"上次会话在昨天"
|
|
||||||
|
|
||||||
2. **程序性记忆(procedural)**:过程和技能知识,如:
|
|
||||||
- 操作步骤:如"解决环境配置问题的方法"
|
|
||||||
- 行动模式:如"用户代码风格偏好"
|
|
||||||
|
|
||||||
3. **情景记忆(episodic)**:特定经历和场景,如:
|
|
||||||
- 交互记录:如"用户之前遇到的报错"
|
|
||||||
- 场景重建:如"项目开发历程"
|
|
||||||
|
|
||||||
不同类型记忆的选择建议:
|
|
||||||
- 存储事实性信息时,考虑使用陈述性记忆方式
|
|
||||||
- 存储方法和步骤时,考虑使用程序性记忆方式
|
|
||||||
- 存储具体交互经历时,考虑使用情景记忆方式
|
|
||||||
|
|
||||||
### 记忆操作使用建议
|
|
||||||
|
|
||||||
- **evaluate最佳实践**:
|
|
||||||
- 明确设定评估标准
|
|
||||||
- 综合考虑信息的稀有性、实用性和时效性
|
|
||||||
- 避免过度记忆导致的信息冗余
|
|
||||||
|
|
||||||
- **store最佳实践**:
|
|
||||||
- 为记忆提供足够的上下文
|
|
||||||
- 建立适当的记忆关联
|
|
||||||
- 设置合理的过期策略
|
|
||||||
|
|
||||||
- **recall最佳实践**:
|
|
||||||
- 优先使用精确查询
|
|
||||||
- 指定合理的置信度阈值
|
|
||||||
- 处理记忆缺失的回退策略
|
|
||||||
|
|
||||||
## 📋 使用示例
|
|
||||||
|
|
||||||
### 基础使用示例
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<!-- 简单的记忆定义 -->
|
|
||||||
<memory id="os_preference">
|
|
||||||
用户使用MacOS系统
|
|
||||||
</memory>
|
|
||||||
|
|
||||||
<!-- 带评估的记忆创建 -->
|
|
||||||
<memory id="code_style">
|
|
||||||
<evaluate:thought>
|
|
||||||
<reasoning>
|
|
||||||
用户连续三次使用了相同的代码风格(缩进2空格、驼峰命名),
|
|
||||||
这是重要的个人偏好信息,应记住以提供一致的代码建议。
|
|
||||||
评分:实用性=8,稳定性=9,总分8.5 > 阈值7.5
|
|
||||||
</reasoning>
|
|
||||||
</evaluate:thought>
|
|
||||||
|
|
||||||
<store:execution>
|
|
||||||
{
|
|
||||||
"indent": "2spaces",
|
|
||||||
"naming": "camelCase",
|
|
||||||
"brackets": "sameLine"
|
|
||||||
}
|
|
||||||
</store:execution>
|
|
||||||
</memory>
|
|
||||||
```
|
|
||||||
|
|
||||||
### 高级使用示例
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<!-- 完整的记忆生命周期示例 -->
|
|
||||||
<memory id="error_solution">
|
|
||||||
<!-- 评估阶段:判断是否值得记忆 -->
|
|
||||||
<evaluate:thought>
|
|
||||||
<reasoning>
|
|
||||||
分析用户遇到的依赖安装错误:
|
|
||||||
|
|
||||||
1. 问题特点:
|
|
||||||
- 特定版本冲突问题
|
|
||||||
- 解决方法非官方文档所列
|
|
||||||
- 多次在社区中被报告
|
|
||||||
|
|
||||||
2. 记忆价值:
|
|
||||||
- 解决方案不易找到
|
|
||||||
- 可能重复出现
|
|
||||||
- 节省未来排查时间
|
|
||||||
|
|
||||||
记忆价值评分:9/10,超过阈值
|
|
||||||
决策:应当记忆此解决方案
|
|
||||||
</reasoning>
|
|
||||||
</evaluate:thought>
|
|
||||||
|
|
||||||
<!-- 存储阶段:通过execution实现 -->
|
|
||||||
<store:execution>
|
|
||||||
问题:TensorFlow 2.4安装与CUDA 11.2版本冲突
|
|
||||||
解决方案:使用兼容性补丁并降级CUDA驱动
|
|
||||||
|
|
||||||
<!-- 使用execution协议元素定义存储过程 -->
|
|
||||||
<process>
|
|
||||||
# 存储流程
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TD
|
|
||||||
A[接收内容] --> B[验证格式]
|
|
||||||
B --> C[分类标记]
|
|
||||||
C --> D[构建索引]
|
|
||||||
D --> E[写入持久存储]
|
|
||||||
```
|
|
||||||
</process>
|
|
||||||
|
|
||||||
<rule>
|
|
||||||
1. 解决方案记忆优先级设为高
|
|
||||||
2. 建立与相关技术的关联索引
|
|
||||||
3. 保存完整的上下文信息
|
|
||||||
</rule>
|
|
||||||
</store:execution>
|
|
||||||
|
|
||||||
<!-- 检索阶段:通过resource实现 -->
|
|
||||||
<recall:resource>
|
|
||||||
@memory://solutions/tensorflow?confidence=0.7
|
|
||||||
</recall:resource>
|
|
||||||
</memory>
|
|
||||||
```
|
|
||||||
|
|
||||||
> **注意**:memory协议与thought(评估)、execution(存储)、resource(检索)协议紧密结合,形成完整的记忆系统。
|
|
||||||
87
protocol/tag/memory.tag.md
Normal file
87
protocol/tag/memory.tag.md
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
# DPML记忆模式提示词框架
|
||||||
|
|
||||||
|
> **TL;DR:** DPML记忆模式提示词框架定义了AI系统的记忆管理提示词模板,支持先验知识库定义与运行时记忆管理,包含知识库(knowledge)、评估(evaluate)、存储(store)和回忆(recall)四个核心组件,实现完整的记忆能力。
|
||||||
|
|
||||||
|
### 目的与功能
|
||||||
|
|
||||||
|
DPML记忆模式提示词框架为AI系统提供完整的记忆能力提示词模板,主要功能包括:
|
||||||
|
- 定义角色的知识库和初始认知结构
|
||||||
|
- 提供运行时记忆的评估、存储和检索的标准化提示词机制
|
||||||
|
- 实现跨会话的信息持久化提示词模板
|
||||||
|
- 支持复杂的记忆关联和检索模式的提示词构建
|
||||||
|
|
||||||
|
## 🔍 基本信息
|
||||||
|
|
||||||
|
**框架名称:** `<memory>` (DPML记忆模式提示词框架)
|
||||||
|
**版本:** 1.1.0
|
||||||
|
**类别:** 记忆类提示词
|
||||||
|
**状态:** 草稿
|
||||||
|
|
||||||
|
## 📝 语法定义
|
||||||
|
|
||||||
|
```ebnf
|
||||||
|
(* EBNF形式化定义 *)
|
||||||
|
memory_element ::= '<memory' attributes? '>' memory_content '</memory>'
|
||||||
|
attributes ::= (' ' attribute)+ | ''
|
||||||
|
attribute ::= name '="' value '"'
|
||||||
|
name ::= [a-zA-Z][a-zA-Z0-9_-]*
|
||||||
|
value ::= [^"]*
|
||||||
|
|
||||||
|
memory_content ::= (text | knowledge_element | evaluate_element | store_element | recall_element)+
|
||||||
|
|
||||||
|
knowledge_element ::= '<knowledge>' knowledge_content '</knowledge>'
|
||||||
|
evaluate_element ::= '<evaluate:thought>' thought_content '</evaluate:thought>'
|
||||||
|
store_element ::= '<store:execution' attributes? '>' (text | execution_element)* '</store:execution>'
|
||||||
|
recall_element ::= '<recall:thought>' thought_content '</recall:thought>'
|
||||||
|
|
||||||
|
knowledge_content ::= (* 任何文本内容,通常使用Markdown格式 *)
|
||||||
|
thought_content ::= (* 符合thought协议的内容 *)
|
||||||
|
execution_element ::= (* 符合execution协议的元素 *)
|
||||||
|
|
||||||
|
text ::= (* 任何文本内容 *)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧩 语义说明
|
||||||
|
|
||||||
|
memory标签表示AI系统的记忆管理单元,定义了记忆的结构和操作方式。它由先验知识库定义和运行时记忆管理两大部分组成:
|
||||||
|
|
||||||
|
### 记忆结构
|
||||||
|
|
||||||
|
1. **`<knowledge>`**: 定义角色的先验知识库
|
||||||
|
- 包含角色固有的、初始化的知识体系
|
||||||
|
- 这些知识在角色创建时就已存在,不是运行时获取的
|
||||||
|
- 构成角色认知和专业领域的基础框架
|
||||||
|
- **重要特性**:knowledge标签内的所有内容和资源引用(无论是@file://、@http://还是其他协议)都应在角色初始化时预加载,而不是按需加载
|
||||||
|
|
||||||
|
### 记忆操作
|
||||||
|
|
||||||
|
memory标签包含三个核心子标签,分别对应记忆的三个操作阶段:
|
||||||
|
|
||||||
|
2. **`<evaluate:thought>`**:评估信息是否值得记忆
|
||||||
|
- 通过thought协议实现评估过程
|
||||||
|
- 判断信息的价值、相关性和可信度
|
||||||
|
- 决定是否将信息存入记忆系统
|
||||||
|
|
||||||
|
3. **`<store:execution>`**:将信息存入记忆系统
|
||||||
|
- 通过execution协议实现存储操作
|
||||||
|
- 定义存储过程、规则和约束
|
||||||
|
- 管理记忆的添加、更新和组织
|
||||||
|
|
||||||
|
4. **`<recall:thought>`**:从记忆系统检索并应用信息
|
||||||
|
- 通过thought协议实现回忆过程
|
||||||
|
- 判断何时需要检索特定记忆
|
||||||
|
- 规划如何检索和应用记忆内容
|
||||||
|
- 可以使用多种实现方式,包括但不限于资源引用
|
||||||
|
- **注意**:与knowledge不同,recall标签中的资源引用默认是按需加载的
|
||||||
|
|
||||||
|
### 组件关系
|
||||||
|
|
||||||
|
四个核心组件之间具有明确的逻辑关系:
|
||||||
|
- knowledge是静态基础,构成角色的知识背景
|
||||||
|
- evaluate-store-recall构成动态记忆的完整循环
|
||||||
|
- evaluate决定什么值得记忆
|
||||||
|
- store定义如何保存记忆
|
||||||
|
- recall描述何时以及如何使用记忆
|
||||||
|
|
||||||
|
记忆系统的运行遵循"评估-存储-回忆"的循环模式,在knowledge定义的知识框架上不断丰富和发展角色的认知能力。
|
||||||
|
|
||||||
Reference in New Issue
Block a user