本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
概述#
大多数插件工具和端点以无状态的单轮交互模型运行:
- 接收请求
- 处理数据
- 返回响应
- 结束交互
然而,许多实际应用需要在多次交互中维护状态。这正是 持久化存储 的关键所在。
Info
持久化存储让插件在同一工作空间内跨交互保存数据,从而实现有状态应用和记忆功能。
Dify 目前为插件提供键值(KV)存储系统;后续会根据开发者需求提供更灵活、更强大的存储接口。
访问存储#
所有存储操作都通过插件会话中可用的 storage 对象执行:
存储操作#
存储数据#
使用 set 方法存储数据:
Warning
值必须是 bytes 格式。这提供了存储各种类型数据的灵活性,包括文件。
示例:存储不同数据类型#
检索数据#
使用 get 方法检索存储的数据:
示例:检索和转换数据#
删除数据#
使用 delete 方法删除存储的数据:
最佳实践#
使用描述性键名
为键创建一致的命名方案,以避免冲突并使代码更易于维护。
处理缺失的键
在处理数据之前始终检查数据是否存在,因为键可能不存在。
序列化复杂数据
在存储之前将复杂对象转换为 JSON 或其他序列化格式。
实现错误处理
将存储操作包装在 try/except 块中,以优雅地处理潜在错误。
常见用例#
- 用户偏好:在会话之间存储用户设置和偏好。
- 对话历史:维护先前对话的上下文。
- API 令牌:安全存储认证令牌。
- 缓存数据:存储频繁访问的数据以减少 API 调用。
- 文件存储:存储用户上传的文件或生成的内容。