82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
|
|
# 构建完整的记忆增强型智能体
|
|||
|
|
|
|||
|
|
在这一最后步骤中,我们将把我们探讨的所有记忆功能整合在一起,创建一个完整的记忆增强型智能体。我们还将创建一个实际示例,展示这些功能如何协同工作。
|
|||
|
|
|
|||
|
|
## 整合所有记忆功能
|
|||
|
|
|
|||
|
|
让我们创建一个利用对话历史记录、语义回忆和工作记忆的综合智能体:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
// src/mastra/agents/memory-agent.ts
|
|||
|
|
import { Agent } from "@mastra/core/agent";
|
|||
|
|
import { Memory } from "@mastra/memory";
|
|||
|
|
import { openai } from "@ai-sdk/openai";
|
|||
|
|
import { LibSQLStore, LibSQLVector } from "@mastra/libsql";
|
|||
|
|
|
|||
|
|
// 创建全面的内存配置
|
|||
|
|
const memory = new Memory({
|
|||
|
|
storage: new LibSQLStore({
|
|||
|
|
id: "learning-memory-storage",
|
|||
|
|
url: "file:../../memory.db", // 相对于 `.mastra/output` 目录的相对路径
|
|||
|
|
}),
|
|||
|
|
vector: new LibSQLVector({
|
|||
|
|
connectionUrl: "file:../../vector.db", // 相对于 `.mastra/output` 目录的相对路径
|
|||
|
|
}),
|
|||
|
|
embedder: openai.embedding("text-embedding-3-small"),
|
|||
|
|
options: {
|
|||
|
|
// 对话历史记录配置
|
|||
|
|
lastMessages: 20, // 在上下文中包含最后 20 条消息
|
|||
|
|
|
|||
|
|
// 语义回忆配置
|
|||
|
|
semanticRecall: {
|
|||
|
|
topK: 3, // 检索 3 条最相似的消息
|
|||
|
|
messageRange: {
|
|||
|
|
before: 2, // 包含每次匹配前的 2 条消息
|
|||
|
|
after: 1, // 包含每次匹配后的 1 条消息
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 工作记忆配置
|
|||
|
|
workingMemory: {
|
|||
|
|
enabled: true,
|
|||
|
|
template: `
|
|||
|
|
# 用户档案
|
|||
|
|
|
|||
|
|
## 个人信息
|
|||
|
|
- 姓名:
|
|||
|
|
- 位置:
|
|||
|
|
- 时区:
|
|||
|
|
- 职业:
|
|||
|
|
|
|||
|
|
## 偏好
|
|||
|
|
- 沟通风格:
|
|||
|
|
- 感兴趣的话题:
|
|||
|
|
- 学习目标:
|
|||
|
|
|
|||
|
|
## 项目信息
|
|||
|
|
- 当前项目:
|
|||
|
|
- [项目 1]:
|
|||
|
|
- 截止日期:
|
|||
|
|
- 状态:
|
|||
|
|
- [项目 2]:
|
|||
|
|
- 截止日期:
|
|||
|
|
- 状态:
|
|||
|
|
|
|||
|
|
## 会话状态
|
|||
|
|
- 当前主题:
|
|||
|
|
- 未解决问题:
|
|||
|
|
- 行动项:
|
|||
|
|
`,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这个全面的内存配置整合了我们探讨的所有三种记忆功能:
|
|||
|
|
|
|||
|
|
1. **对话历史记录**,使用 `lastMessages` 选项
|
|||
|
|
2. **语义回忆**,使用 `semanticRecall` 选项
|
|||
|
|
3. **工作记忆**,使用 `workingMemory` 选项
|
|||
|
|
|
|||
|
|
每种功能在增强智能体的记忆能力方面都有不同的目的,它们共同创建了一个强大的记忆系统,可以在跨对话中保持上下文并提供个性化响应。
|