ChatLog Converter 是一款专为处理 AI 聊天数据设计的轻量级工具。它可以自动检测对话结构,按 Agent 名称分组消息,并将其转换为适合分析、备份或模型微调的各种格式。
- 🔒 隐私优先:所有处理在本地完成,数据永远不会离开你的设备
- 🎯 智能检测:自动识别 Agent 名称、角色、内容和时间戳字段
- 📊 多种模式:提取特定 Agent、分类所有 Agent 或转换为 JSON 格式
- 🎨 现代界面:简洁的 Web 界面,深色主题,直观的工作流程
- 💻 命令行支持:提供命令行接口,便于自动化和批量处理
- 🌍 双语支持:完整支持中文和英文界面
- 📦 零配置:开箱即用,自动检测分隔符
- ⚡ 批量处理:一次处理多个文件,自动分块处理大文件
- AI 开发者:整理多 Agent 对话数据用于模型微调
- 数据分析师:清洗和分类聊天日志进行分析
- 普通用户:备份和管理个人 AI 对话记录
- 研究人员:高效处理大规模对话数据集
# 克隆仓库
git clone https://github.com/Edeeron/chatlog-converter.git
cd chatlog-converter
# 安装依赖
pip install -r requirements.txt注意:在 Linux/macOS 上,可能需要使用 pip3 和 python3 而不是 pip 和 python。
# Windows
python main.py
# Linux/macOS
python3 main.py然后在浏览器中打开:http://127.0.0.1:8010
# 启动 CLI 模式
# Windows
python main.py --cli
# Linux/macOS
python3 main.py --cli
# 或直接使用 CLI
# Windows
python cli.py convert chat.csv --mode finetune
# Linux/macOS
python3 cli.py convert chat.csv --mode finetune| 模式 | 说明 | 输出格式 |
|---|---|---|
| 📄 提取指定 Agent | 输入 Agent 名称,提取与该 Agent 的全部对话 | CSV |
| 📑 全部 Agent 分类 | 按 Agent 名称分组,每个 Agent 保存一个文件 | 多个 CSV |
| 🔧 JSON - 储存格式 | 包含 message_id、turn_id、token_count 等完整信息 | JSON(适合储存与检索) |
| 🔗 JSON - 上下文格式 | 简洁的 role + content + 时间戳结构 | JSON(适合上下文接入与模型微调) |
| 🤖 OpenAI 微调格式 | 纯消息格式的 JSONL,用于 OpenAI/Azure 微调 | JSONL |
- 选择模式:选择你需要的处理模式
- 上传文件:拖拽或点击上传 CSV/TXT 文件
- 确认映射:验证自动检测的字段映射是否正确
- 处理并保存:点击处理按钮并下载结果
# 自动检测并转换为 JSON
python cli.py convert chat.csv --mode finetune
# 提取特定 Agent
python cli.py extract chat.csv --agent "GPT-4" --output ./extracted
# 分类所有 Agent
python cli.py classify chat.csv --output ./classified
# 预览文件结构(前 10 行)
python cli.py preview chat.csv --rows 10
# 设置语言为英文
python cli.py lang en
# 强制启用流式模式处理大文件
python cli.py convert large_file.csv --mode context --streaming假设你有一个包含多个 AI 助手的聊天记录,只想提取"客服助手"的对话:
- 选择"📄 提取指定 Agent"模式
- 上传
聊天记录.csv - 在"目标 Agent"输入框中输入:
客服助手 - 点击"预览匹配"确认结果
- 点击"开始处理"并保存
输出文件:聊天记录_提取_客服助手.csv
将聊天记录转换为包含完整元数据的 JSON 格式:
- 选择"🔧 JSON - 储存格式"模式
- 上传文件并确认字段映射
- 勾选"反转消息序列"(如果需要从旧到新排序)
- 保存为 JSON 文件
输出示例:
[
{
"conversation_id": "conv_客服助手_001",
"user_id": "",
"agent_name": "客服助手",
"created_at": "2024-05-09 11:20:45",
"messages": [
{
"message_id": "msg_001",
"turn_id": "turn_001",
"role": "user",
"content": "你好,我想咨询一下产品问题",
"timestamp": "2024-05-09 11:20:45",
"token_count": 15
},
{
"message_id": "msg_002",
"turn_id": "turn_001",
"role": "assistant",
"content": "您好!很高兴为您服务,请问有什么问题?",
"timestamp": "2024-05-09 11:20:46",
"token_count": 18
}
]
}
]将一个混合了多个 Agent 的聊天记录按 Agent 分开:
- 选择"📑 全部 Agent 分类"模式
- 上传
混合对话.csv - 确认 Agent 列检测正确
- 点击"开始处理"
输出文件:
混合对话_GPT4.csv混合对话_Claude.csv混合对话_客服助手.csv
将聊天记录直接转换为 JSONL 格式,用于 OpenAI/Azure 微调:
- 选择“🤖 OpenAI 微调格式”模式
- 上传你的 CSV 文件
- 确认字段映射(Agent、Role、Content 列)
- 点击“开始处理”
输出示例(chat_history_openai.jsonl):
{"messages": [{"role": "user", "content": "你好,最近怎么样?"}, {"role": "assistant", "content": "我很好!今天有什么可以帮你的吗?"}]}
{"messages": [{"role": "user", "content": "天气如何?"}, {"role": "assistant", "content": "今天阳光明媚,温度适宜。"}]}此格式完全兼容 OpenAI 的微调 API - 无需额外转换!
- 输入:CSV(逗号/制表符分隔)、TXT(表格格式)
- 输出:CSV、JSON(储存/上下文格式)
- 编码:UTF-8-SIG(兼容 Excel)
工具使用智能评分系统,结合以下策略:
- 关键词匹配:识别多语言(中文和英文)的常见列名
- 启发式分析:评估数据特征,如值多样性、文本长度和格式模式
- 样本验证:通过分析前 50 行确认检测准确性
使用 OpenAI 官方的 tiktoken 库(cl100k_base 编码)进行准确的 GPT-4 Token 计数,确保与 OpenAI API 保持一致。如果库不可用,则回退到字符计数。
- 自动检测分隔符:智能识别 CSV/TXT 多种格式(逗号/制表符)
- 流式处理模式:大于 100MB 的文件自动启用,内存占用恒定约 50-100MB
- 批量处理:一次处理多个文件,自动复用首次检测结果,提升效率
- 适用范围:流式模式目前仅适用于 JSON 转换模式(
finetune、context和openai)
chatlog-converter/
├── main.py # 统一入口点(Web/CLI 选择器)
├── api.py # FastAPI 后端服务
├── cli.py # 命令行界面
├── core.py # 核心处理逻辑
├── static/
│ └── index.html # Web 前端(单页应用)
├── locales/
│ ├── zh.json # 中文翻译
│ └── en.json # 英文翻译
├── requirements.txt # Python 依赖
├── LICENSE # MIT 许可证
└── README.md # 英文文档
A: 确保文件使用 UTF-8 编码、第一行是列标题、数据格式一致。可使用 python cli.py preview your_file.csv 检查结构。
A: 在 Web 界面上传文件后,在"字段映射"部分手动调整即可。
A: 支持中英文:
- Agent:
agent名称、agent_name、智能体、bot - Role:
role、角色、speaker、说话人 - Content:
content、内容、message、消息 - Time:
time、时间、timestamp、日期
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
由 Edeeron 用 ❤️ 制作
⭐ 如果觉得有帮助,请给个 Star!