66 lines
2.0 KiB
Markdown
66 lines
2.0 KiB
Markdown
|
|
# 配置工作记忆
|
||
|
|
|
||
|
|
让我们为智能体添加工作记忆功能:
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
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({
|
||
|
|
id: "learning-memory-vector",
|
||
|
|
connectionUrl: "file:../../vector.db", // 相对于 `.mastra/output` 目录的相对路径
|
||
|
|
}), // 用于语义搜索的向量数据库
|
||
|
|
embedder: openai.embedding("text-embedding-3-small"), // 用于消息嵌入的嵌入器
|
||
|
|
options: {
|
||
|
|
semanticRecall: {
|
||
|
|
topK: 3,
|
||
|
|
messageRange: {
|
||
|
|
before: 2,
|
||
|
|
after: 1,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
workingMemory: {
|
||
|
|
enabled: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
// 创建具有配置内存的智能体
|
||
|
|
export const memoryAgent = new Agent({
|
||
|
|
name: "MemoryAgent",
|
||
|
|
instructions: `
|
||
|
|
您是一个具有高级记忆能力的助手。
|
||
|
|
您可以记住之前的对话和用户偏好。
|
||
|
|
|
||
|
|
重要提示:您有权访问工作记忆来存储关于用户的持久信息。
|
||
|
|
当您了解用户的任何重要信息时,请更新您的工作记忆。
|
||
|
|
这包括:
|
||
|
|
- 他们的姓名
|
||
|
|
- 他们的位置
|
||
|
|
- 他们的偏好
|
||
|
|
- 他们的兴趣
|
||
|
|
- 任何其他有助于个性化对话的相关信息
|
||
|
|
|
||
|
|
在询问用户已提供的信息之前,请始终参考您的工作记忆。
|
||
|
|
使用工作记忆中的信息提供个性化响应。
|
||
|
|
`,
|
||
|
|
model: openai("gpt-4o"),
|
||
|
|
memory: memory,
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
`workingMemory` 配置有几个重要选项:
|
||
|
|
|
||
|
|
- `enabled`:是否启用工作记忆
|
||
|
|
- `template`:工作记忆内容的模板
|
||
|
|
|
||
|
|
智能体的指令也很重要。它们指导智能体在工作记忆中存储什么信息,以及如何在响应用户时使用这些信息。
|