# AT Chat Mask

**AskTable 对话数据脱敏工具** - 从真实对话记录创建演示案例，使用虚拟数据保护客户隐私

[![PyPI version](https://badge.fury.io/py/at-chat-mask.svg)](https://badge.fury.io/py/at-chat-mask)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## 功能特性

- 📖 自动分析对话文件，提取数据结构和问题
- 🤖 智能生成中文案例名称（基于表名和内容分析）
- 🔧 自动生成虚拟 CSV 数据，保护客户隐私
- 🚀 自动创建 AskTable 的 Datasource、Bot 和 Chat
- 💬 交互式对话，灵活配置案例参数
- 🌐 一键发布，快速生成可分享的演示链接

## 安装

```bash
pip install at-chat-mask
```

## 快速开始

### 1. 配置 API Key

创建 `.env` 文件：

```bash
ASKTABLE_API_KEY=your_api_key_here
ASKTABLE_API_BASE=https://api.asktable.com
```

### 2. 准备对话文件

将 AskTable 对话导出文件命名为 `chat-{编号}.json` 格式，例如：
- `chat-001.json`
- `chat-002.json`

### 3. 运行工具

```bash
at-chat-mask
```

### 4. 按提示操作

```
案例编号 [001]: 001
```
系统自动查找 `chat-001.json` 文件并分析内容

```
📝 自动生成案例名称
✓ 案例名称: 体育成绩数据分析
是否使用此名称？ [Y/n]:
```
系统根据对话内容自动生成中文案例名称，可以确认使用或自定义

确认信息后，系统会自动：
1. 生成虚拟 CSV 数据（`case-001.csv`）
2. 创建 AskTable Datasource
3. 创建 AskTable Bot（公开分享）
4. 创建 AskTable Chat

完成后获取分享链接。

## 对话文件格式

文件必须命名为 `chat-{编号}.json`，内容为标准的 AskTable Chat 格式：

```json
{
  "items": [
    {
      "role": "human",
      "content": {"text": "展示跳绳最好的前10名学生的详情"}
    },
    {
      "role": "ai",
      "metadata": {
        "tool_response": [{
          "sql": "SELECT ... FROM table_name ...",
          "result": "..."
        }]
      }
    }
  ]
}
```

## API 使用

```python
from at_chat_mask import ChatMaskAgent, CSVGenerator

# 创建 Agent
agent = ChatMaskAgent(
    api_key="your_api_key",
    api_base="https://api.asktable.com"
)

# 运行交互式流程
agent.run()

# 或者单独使用 CSV 生成器
generator = CSVGenerator()
csv_content = generator.generate_csv_from_messages(
    chat_file="chat-001.json",
    output_file="output.csv",
    num_rows=20
)
```

## 许可证

MIT License

## 相关链接

- [AskTable 官网](https://www.asktable.com)
- [GitHub 仓库](https://github.com/datamini/at-chat-mask)
- [问题反馈](https://github.com/datamini/at-chat-mask/issues)
