Metadata-Version: 2.5
Name: chat-table
Version: 0.1.0
Summary: Interactive web UI for routing LLM tasks across Kimi, Qwen, OpenAI, Claude, DeepSeek, and Gemini — with multi-turn chat, concurrent tasks, and token/cost tracking.
Project-URL: Homepage, https://github.com/myinxd/chat-table
Project-URL: Repository, https://github.com/myinxd/chat-table
Author-email: Jason Ma <myinxd@users.noreply.github.com>
License: MIT
License-File: LICENSE
Keywords: ai,claude,cli,kimi,llm,model-router,openai,qwen
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: hatch; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Description-Content-Type: text/markdown

# Chat Table

> 交互式大模型任务路由工具，通过浏览器界面选择 Provider/模型、执行任务、统计 Token 费用。

**支持 Provider**：Kimi · Qwen (通义千问) · OpenAI · Anthropic (Claude) · DeepSeek · Gemini

---

## 快速开始

### 安装

```bash
pip install chat-table
```

或者开发模式（修改代码后实时生效）：

```bash
git clone https://github.com/myinxd/chat-table.git
cd chat-table
pip install -e .
```

### 启动

```bash
# 默认端口 8877，数据存 ~/.model_router/
chat-table

# 指定端口 + 项目级数据目录（每个项目独立会话）
chat-table -p 8878 -d ~/projects/my-project/.model_router

# 启动后自动打开浏览器
chat-table --open
```

然后浏览器打开 **http://localhost:8877** 即可。

---

## 功能

- 🌐 **多 Provider 切换**：Kimi / Qwen / OpenAI / Claude / DeepSeek / Gemini
- 💬 **多轮会话**：发送消息自动携带上下文
- ⚡ **多任务并发**：最多同时跑 3 个任务
- 📊 **Token 统计**：输入/输出 tokens、用量费用
- ↩️ **History 恢复**：从历史记录恢复某个会话继续对话
- 💾 **持久化**：会话自动保存到 `~/.model_router/state.json`，重启不丢
- 🎨 **轻量 Web UI**：点击选模型、发送任务、查看用量，无需命令行

---

## 数据目录

默认存 `~/.model_router/`：

```
~/.model_router/
└── state.json      # 会话历史、消息、usage 统计
```

指定 `--data-dir` 可为每个项目分配独立数据目录，互不干扰。

---

## API

启动后可通过 HTTP 调用：

```bash
# 查看状态
curl http://localhost:8877/api/state

# 发送任务
curl -X POST http://localhost:8877/api/run \
  -H "Content-Type: application/json" \
  -d '{"prompt": "你好"}'

# 注入 API Key（运行时生效）
curl -X POST http://localhost:8877/api/set-env \
  -H "Content-Type: application/json" \
  -d '{"KIMI_API_KEY": "sk-xxx"}'

# 恢复历史会话
curl -X POST http://localhost:8877/api/resume-history \
  -H "Content-Type: application/json" \
  -d '{"id": "t1"}'

# 清空会话
curl -X POST http://localhost:8877/api/clear-messages
```

---

## 配置 API Key

**方式一：环境变量（推荐）**

```bash
export KIMI_API_KEY="sk-xxx"
export DASHSCOPE_API_KEY="sk-xxx"
export OPENAI_API_KEY="sk-xxx"
# ...
chat-table
```

**方式二：Web UI 的 ⚙️ Config 页面直接填入**

---

## 卸载

```bash
pip uninstall chat-table
rm -rf ~/.model_router/
```
