Qwen3.5-9B保姆级教程:history.json结构解析与对话数据导出

1. 前言:认识Qwen3.5-9B

Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,具备强大的逻辑推理和代码生成能力。特别值得一提的是,它的多模态版本Qwen3.5-9B-VL能够理解图文输入,并且支持长达128K tokens的上下文记忆。

在实际使用过程中,模型会自动将用户对话记录保存在history.json文件中。本文将深入解析这个文件的结构,并教你如何导出和管理这些宝贵的对话数据。

2. 准备工作

2.1 确认项目结构

首先,我们需要确认Qwen3.5-9B的项目目录结构。默认情况下,对话历史记录文件位于:

/root/qwen3.5-9b/
├── app.py              # 主程序 (Gradio WebUI)
├── start.sh            # 启动脚本
├── service.log         # 运行日志
└── history.json        # 对话历史记录文件

2.2 查看服务状态

在开始操作前,建议先检查服务状态:

supervisorctl status qwen3.5-9b

如果服务正在运行,你可以直接访问Web界面进行对话测试:

  • 本地访问: http://localhost:7860
  • 网络访问: http://服务器IP:7860

3. history.json文件解析

3.1 基本结构

history.json文件采用JSON格式存储,每个对话会话(session)都是一个独立的记录。文件的基本结构如下:

{
  "sessions": [
    {
      "id": "会话ID",
      "title": "会话标题",
      "create_time": "创建时间",
      "update_time": "更新时间",
      "messages": [
        {
          "role": "user",
          "content": "用户输入内容",
          "time": "时间戳"
        },
        {
          "role": "assistant",
          "content": "模型回复内容",
          "time": "时间戳"
        }
      ]
    }
  ]
}

3.2 字段详解

让我们详细看看每个字段的含义:

  1. sessions:包含所有对话会话的数组

    • id:会话的唯一标识符(UUID格式)
    • title:会话的标题(通常取第一条用户消息的前几个词)
    • create_time:会话创建时间(ISO 8601格式)
    • update_time:会话最后更新时间
    • messages:包含所有消息的数组
  2. messages:每个消息对象包含:

    • role:消息发送者("user"或"assistant")
    • content:消息内容(纯文本或包含图片的多模态内容)
    • time:消息发送时间戳

3.3 多模态内容格式

当对话包含图片时,content字段会采用特殊格式:

{
  "content": [
    {
      "type": "text",
      "value": "这张图片里有什么?"
    },
    {
      "type": "image",
      "value": "data:image/png;base64,..."
    }
  ]
}

4. 数据导出方法

4.1 直接复制文件

最简单的方法是直接复制history.json文件:

cp /root/qwen3.5-9b/history.json ~/qwen_history_backup.json

4.2 使用Python脚本导出

如果你需要更灵活的处理方式,可以使用Python脚本:

import json
from datetime import datetime

# 读取历史文件
with open('/root/qwen3.5-9b/history.json', 'r', encoding='utf-8') as f:
    history = json.load(f)

# 导出为Markdown格式
with open('qwen_history.md', 'w', encoding='utf-8') as f:
    for session in history['sessions']:
        f.write(f"## 会话: {session['title']}\n")
        f.write(f"创建时间: {session['create_time']}\n\n")
        
        for msg in session['messages']:
            role = "用户" if msg['role'] == 'user' else "助手"
            f.write(f"**{role}** ({msg['time']}):\n")
            
            # 处理多模态内容
            if isinstance(msg['content'], list):
                for item in msg['content']:
                    if item['type'] == 'text':
                        f.write(f"{item['value']}\n")
                    else:
                        f.write("【图片内容】\n")
            else:
                f.write(f"{msg['content']}\n")
            
            f.write("\n")

4.3 导出特定会话

如果你想导出特定时间段的会话,可以修改脚本:

start_date = datetime(2026, 3, 1)
end_date = datetime(2026, 3, 31)

with open('qwen_history_march.md', 'w', encoding='utf-8') as f:
    for session in history['sessions']:
        session_time = datetime.fromisoformat(session['create_time'])
        if start_date <= session_time <= end_date:
            # 导出逻辑同上
            ...

5. 数据清理与管理

5.1 清理历史记录

如果需要清空历史记录,可以:

rm -f /root/qwen3.5-9b/history.json
supervisorctl restart qwen3.5-9b

5.2 定期备份

建议设置定期备份任务,编辑crontab:

crontab -e

添加以下内容(每天凌晨3点备份):

0 3 * * * cp /root/qwen3.5-9b/history.json /backup/qwen_history_$(date +\%Y\%m\%d).json

6. 常见问题解答

6.1 history.json文件损坏怎么办?

如果文件损坏导致服务无法启动,可以:

  1. 尝试修复JSON格式:
jq '.' /root/qwen3.5-9b/history.json > /tmp/history_fixed.json
mv /tmp/history_fixed.json /root/qwen3.5-9b/history.json
  1. 如果无法修复,可以删除文件后重启服务:
rm -f /root/qwen3.5-9b/history.json
supervisorctl restart qwen3.5-9b

6.2 如何限制history.json大小?

目前Qwen3.5-9B没有内置的历史记录大小限制功能。你可以通过定期清理或使用脚本自动归档旧会话。

6.3 多用户环境下如何区分会话?

默认情况下,所有会话都存储在同一个history.json文件中。如果需要区分用户,可以考虑:

  1. 为每个用户部署独立实例
  2. 修改app.py,在会话对象中添加用户标识字段
  3. 使用脚本定期按用户拆分历史文件

7. 总结

通过本文,你应该已经掌握了:

  1. history.json文件的结构和内容
  2. 多种导出对话历史的方法
  3. 日常管理和维护技巧
  4. 常见问题的解决方案

Qwen3.5-9B的对话历史记录是宝贵的资源,可以用于分析用户需求、优化提示词设计,甚至作为微调数据。合理管理和利用这些数据,将帮助你更好地发挥模型的价值。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐