跳到主要内容

💾 导入与导出

Open WebUI 提供了备份聊天历史记录并在以后进行恢复,或者从其他平台迁移对话的工具。

访问导入与导出

  1. 点击侧边栏左下角的个人资料名称或头像。
  2. 从菜单中选择 Settings(设置)。
  3. 导航到 Data Controls(数据控制)标签页。
  4. 使用 Import Chats(导入聊天)或 Export Chats(导出聊天)按钮。

导出聊天

点击 Export Chats 按钮以将您的所有对话下载为一个 JSON 文件。此备份包含:

  • 所有聊天消息及其元数据
  • 每次对话中使用的模型信息
  • 时间戳和对话结构
定期备份

定期导出您的聊天是一个好习惯,特别是在进行重大更新或迁移之前。

导入聊天

点击 Import Chats 按钮并选择一个 JSON 文件以恢复对话。Open WebUI 支持从以下来源导入:

  • Open WebUI 导出:以往导出的原生 JSON 格式
  • ChatGPT 导出:从 OpenAI 的 ChatGPT 导出的对话(自动检测并转换)
  • 自定义 JSON 文件:遵循下文记录的预期结构的任何 JSON 文件

导入行为

  • 导入的聊天将被添加到您现有的对话中(它们不会替换现有对话)
  • 每个导入的聊天都会收到一个新的唯一 ID,因此重新导入相同的文件会创建重复的对话
  • 如果使用 ChatGPT 导出,其格式会被自动检测并转换

聊天导入 JSON Schema

导入文件必须是聊天对象的 JSON 数组。有两种可接受的格式:标准格式(由 Open WebUI 导出使用)和遗留/历史格式

数组中的每个对象都应该有一个包含对话数据的 chat 键:

[
  {
    "chat": {
      "title": "My Conversation",
      "models": ["llama3.2"],
      "history": {
        "currentId": "message-id-2",
        "messages": {
          "message-id-1": {
            "id": "message-id-1",
            "parentId": null,
            "childrenIds": ["message-id-2"],
            "role": "user",
            "content": "Hello, how are you?",
            "timestamp": 1700000000
          },
          "message-id-2": {
            "id": "message-id-2",
            "parentId": "message-id-1",
            "childrenIds": [],
            "role": "assistant",
            "content": "I'm doing well, thank you!",
            "model": "llama3.2",
            "done": true,
            "timestamp": 1700000005
          }
        }
      }
    },
    "meta": {
      "tags": ["greeting"]
    },
    "pinned": false,
    "folder_id": null,
    "created_at": 1700000000,
    "updated_at": 1700000005
  }
]

遗留/历史格式

如果数组中的对象没有 chat 键,则整个对象本身将被视为聊天数据(即该对象会被自动包裹在 { "chat": <object> } 中):

[
  {
    "title": "My Conversation",
    "models": ["llama3.2"],
    "history": {
      "currentId": "message-id-2",
      "messages": {
        "message-id-1": {
          "id": "message-id-1",
          "parentId": null,
          "childrenIds": ["message-id-2"],
          "role": "user",
          "content": "Hello!"
        },
        "message-id-2": {
          "id": "message-id-2",
          "parentId": "message-id-1",
          "childrenIds": [],
          "role": "assistant",
          "content": "Hi there!",
          "model": "llama3.2",
          "done": true
        }
      }
    }
  }
]

字段参考

顶级聊天对象(标准格式)

字段类型是否必填描述
chatobject对话数据(见下方的聊天数据)
metaobject元数据,例如 tags(字符串数组)。默认为 {}
pinnedboolean聊天是否被置顶。默认为 false
folder_idstring | null放置聊天的文件夹 ID。默认为 null
created_atinteger | null聊天创建的 Unix 时间戳(秒)
updated_atinteger | null聊天最后更新的 Unix 时间戳(秒)

聊天数据对象

字段类型是否必填描述
titlestring对话标题。默认为 "New Chat"
modelsstring[]对话中使用的模型标识符列表
historyobject包含消息树(见下方的历史记录)
optionsobject聊天级别的选项/参数

历史记录对象

字段类型是否必填描述
currentIdstring活动对话分支中最后一条消息的 ID
messagesobject消息 ID ➡️ 消息对象的映射(见下方的消息)

消息对象

字段类型是否必填描述
idstring消息的唯一标识符
parentIdstring | null父消息的 ID,第一条消息则为 null
childrenIdsstring[]子消息 ID 的数组。最后一条消息则为空数组 []
rolestring"user"(用户)或 "assistant"(助手)之一
contentstring消息文本(支持 Markdown)
modelstring模型标识符(与助手消息相关)
doneboolean响应是否已完成
timestampinteger消息的 Unix 时间戳(秒)
contextstring | null消息的额外上下文
消息树结构

消息使用的是树状结构,而不是扁平列表。每条消息都通过 parentId 引用其当父节点,并通过 childrenIds 引用其子节点。这使得 Open WebUI 能够支持分支对话(例如编辑一条消息并获得不同的响应)。history.currentId 字段指向当前活动分支中的最后一条消息。

ChatGPT 导出格式

当数组中的第一个对象包含 mapping 键时,系统会自动检测为 ChatGPT 导出。您无需手动转换 ChatGPT 导出——只需直接导入文件,Open WebUI 将处理转换。

最小工作示例

最小的有效导入文件如下所示:

[
  {
    "title": "Quick Chat",
    "history": {
      "currentId": "msg-1",
      "messages": {
        "msg-1": {
          "id": "msg-1",
          "parentId": null,
          "childrenIds": [],
          "role": "user",
          "content": "Hello!"
        }
      }
    }
  }
]

这使用了包含单条用户消息的遗留格式(没有 chat 包裹器)。

常见问题

Q: 导入聊天会覆盖我现有的对话吗?
A: 不会。导入的聊天将被添加到您现有的对话旁边。

Q: 我可以从 Claude、Gemini 或其他平台导入聊天吗?
A: 没有针对这些平台的内置转换器。您需要将您的导出文件转换为上面记录的 JSON 结构。关键要求是构建具有正确的 parentId / childrenIds 关系的消息树。

Q: 导入有大小限制吗?
A: 没有硬编码的限制,但非常大的文件可能需要更长的时间来处理。实际限制取决于您的服务器配置和可用内存。

Q: 如果我把同一个文件导入两次会发生什么?
A: 每次导入都会创建带有全新 ID 的新聊天,因此您最终会得到重复的对话。

Q: 支持哪些消息角色?
A: 导入支持 "user"(用户)和 "assistant"(助手)角色。系统消息通常是通过模型配置设置的,而不是存储在聊天历史记录中。

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.