一条命令启动训练,YOLOv10镜像太适合新手
本文介绍了如何在星图GPU平台上自动化部署YOLOv10 官版镜像,实现目标检测任务的快速训练与推理。用户仅需一条命令即可启动模型训练,适用于工业质检、视频监控等典型场景,大幅提升AI开发效率,降低新手入门门槛。
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 字段详解
让我们详细看看每个字段的含义:
-
sessions:包含所有对话会话的数组
- id:会话的唯一标识符(UUID格式)
- title:会话的标题(通常取第一条用户消息的前几个词)
- create_time:会话创建时间(ISO 8601格式)
- update_time:会话最后更新时间
- messages:包含所有消息的数组
-
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文件损坏怎么办?
如果文件损坏导致服务无法启动,可以:
- 尝试修复JSON格式:
jq '.' /root/qwen3.5-9b/history.json > /tmp/history_fixed.json
mv /tmp/history_fixed.json /root/qwen3.5-9b/history.json
- 如果无法修复,可以删除文件后重启服务:
rm -f /root/qwen3.5-9b/history.json
supervisorctl restart qwen3.5-9b
6.2 如何限制history.json大小?
目前Qwen3.5-9B没有内置的历史记录大小限制功能。你可以通过定期清理或使用脚本自动归档旧会话。
6.3 多用户环境下如何区分会话?
默认情况下,所有会话都存储在同一个history.json文件中。如果需要区分用户,可以考虑:
- 为每个用户部署独立实例
- 修改app.py,在会话对象中添加用户标识字段
- 使用脚本定期按用户拆分历史文件
7. 总结
通过本文,你应该已经掌握了:
- history.json文件的结构和内容
- 多种导出对话历史的方法
- 日常管理和维护技巧
- 常见问题的解决方案
Qwen3.5-9B的对话历史记录是宝贵的资源,可以用于分析用户需求、优化提示词设计,甚至作为微调数据。合理管理和利用这些数据,将帮助你更好地发挥模型的价值。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)