Metadata-Version: 2.4
Name: chemchat
Version: 0.1.0
Summary: 化学分子智能对话与可视化系统 — 面向中小学生的化学学习助手
Author: chemchat contributors
License: MIT
Keywords: chemistry,molecule,visualization,education,chat,3D
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Environment :: X11 Applications :: Qt
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: PySide6>=6.5
Requires-Dist: numpy
Requires-Dist: requests
Requires-Dist: matplotlib
Requires-Dist: pyqtgraph>=0.13
Requires-Dist: PyOpenGL
Provides-Extra: rdkit
Requires-Dist: rdkit-pypi; extra == "rdkit"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"

# ChemChat — 化学分子智能对话与可视化系统

面向中小学生的化学学习助手，支持分子2D/3D可视化、LLM智能对话、化学实体自动识别。

## 安装

```bash
pip install chemchat
```

### 可选依赖

```bash
# RDKit 分子处理（推荐，支持更精确的2D/3D结构生成）
conda install rdkit
# 或
pip install rdkit-pypi

# PySide6 WebEngine（3D分子查看器需要）
pip install PySide6-WebEngine
```

## 使用

### 启动 GUI

```bash
chemchat
```

或在 Python 中：

```python
from chemchat.__main__ import main
main()
```

### Python API

```python
from chemchat.engine.mol_parser import MoleculeParser
from chemchat.engine.entity_extractor import EntityExtractor
from chemchat.engine.element_data import ELEMENTS, format_element_info, get_element
from chemchat.db.knowledge_base import init_db, search_molecules

# 初始化知识库
init_db()

# 分子解析
parser = MoleculeParser()
result = parser.parse("H2O")
print(result["formula"])   # H2O
print(result["elements"])  # ['O', 'H', 'H']

# 实体提取
ext = EntityExtractor()
entities = ext.extract("苯和乙醇是常见溶剂")
# [(苯, c1ccccc1, 0, 1), (乙醇, CCO, 2, 4)]

# 元素信息
info = format_element_info("Fe")
# <b>铁 (Fe)</b>  <i>Iron</i><br>原子序数: 26...
```

## 功能特性

- **分子可视化**：2D/3D切换，支持球棒模型、空间填充等多种显示风格
- **智能对话**：集成 Ollama LLM，自动识别对话中的化学物质并可视化
- **实体提取**：自动识别中文化学名、化学式、SMILES等
- **知识库**：内置57+种常见化学物质的详细数据
- **元素信息**：46种常见元素的完整周期表数据，点击原子即时查看
- **数据库管理**：支持CRUD、JSON/CSV导入导出

## 技术栈

- PySide6 + WebEngine (3D分子渲染)
- RDKit (分子结构解析)
- 3Dmol.js (3D可视化)
- Ollama (LLM对话)
- SQLite (知识库)

## License

MIT
