Metadata-Version: 2.5
Name: sdpy-kit
Version: 0.1.1
Summary: SDPY Kit——统一数据库访问层（PG/MySQL/SQLite）与 AI/MCP/Redis/文件/文档/向量工具集
Author-email: Clark <changhongyuan@126.com>
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.13
Requires-Dist: fastmcp>=4.0.3
Requires-Dist: firecrawl-anydoc>=0.2.4
Requires-Dist: httpx>=0.28.1
Requires-Dist: markdown-it-py>=3.0
Requires-Dist: numpy>=2.0
Requires-Dist: pimd[pdfa]>=2.2.5
Requires-Dist: psycopg2-binary>=2.9.12
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: pydantic>=2.0
Requires-Dist: pymysql>=1.2.0
Requires-Dist: python-dotenv>=1.2.3
Requires-Dist: redis>=5.0.0
Requires-Dist: requests>=2.34.0
Requires-Dist: sqlalchemy~=2.0.51
Requires-Dist: sqliteai-vector>=1.0.0
Requires-Dist: sqlmodel>=0.0.39
Requires-Dist: zvec>=0.6.0
Description-Content-Type: text/markdown

# sdpy-kit

SDPY 统一工具集（Kit 体系），供 Python 项目开箱即用：统一数据库访问层（PostgreSQL / MySQL / SQLite，三个 Kit API 完全一致）+ AI 多模型服务池（chat / embedding / rerank / image，多厂商候选链与故障转移）+ MCP 客户端 + Redis / 文件 / 文档 / 向量库 / MinerU 工具。

> 要求 Python 3.13+

## 安装

```bash
pip install sdpy-kit
# 或
uv add sdpy-kit
```

## 配置（.env）

kit 通过 pydantic-settings 读取项目根目录 `.env`（默认值见下，均可省略）：

```dotenv
# 日志
LOG_LEVEL=INFO
LOG_TO_CONSOLE=true
LOG_TO_FILE=false

# 数据库（三选一，切换只改 DEFAULT_DB_TYPE）
DEFAULT_DB_TYPE=sqlite          # postgresql / mysql / sqlite
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=postgres
DB_USER=admin
DB_PASSWORD=
MYSQL_PORT=3306
MYSQL_DATABASE=mydb
MYSQL_USER=root
SQLITE_DB_PATH=./data/app.db

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
```

## AI / MCP 功能的档案文件

AI 与 MCP 功能需要在项目根目录提供两个 JSON 档案文件：

- `config/ai_models.json` —— chat / embedding / rerank / image 四类型多厂商模型档案
- `config/mcp_servers.json` —— MCP 服务器档案

文件缺失时，首次使用相应功能会报错，**报错信息中附带可直接复制的最小模板**；
其中 `api_key` / `token_env` 字段填写环境变量名，真实密钥配置在 `.env`。

## 快速开始

### 日志与配置

```python
from kit.config import get_settings, get_default_logger

settings = get_settings()
logger = get_default_logger(__name__)
logger.info("hello %s", settings.APP_NAME)
```

### 数据库（SQLiteKit / PgKit / MySqlKit API 完全一致，切换只改 import）

```python
from sqlmodel import SQLModel, Field
from kit.db.sqlite_kit import SQLiteKit

class Item(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str

SQLiteKit.connect()
SQLiteKit.create_tables([Item])
item = SQLiteKit.create(Item, {"name": "demo"})
```

约定：`SQLiteKit/PgKit/MySqlKit` 方法自动提交；`CRUDBase`（配合 `session_scope`）不自动提交；事务用 `kit.transactional`。

## 模块总览

| 模块 | 内容 |
|------|------|
| `kit.db` | 统一数据库访问层：PgKit / MySqlKit / SQLiteKit、CRUDBase、transactional |
| `kit.ai` | AI 服务池：chat / embedding / rerank / image，多厂商候选链 + 故障转移 |
| `kit.mcp_kit` | 通用 MCP 客户端（streamable-http / sse，档案驱动多服务器） |
| `kit.redis_kit` | Redis 工具 |
| `kit.file_kit` | 文件工具 |
| `kit.doc_kit` | 文档转换（基于 firecrawl-anydoc / pimd） |
| `kit.zvec_kit` | zvec 本地向量库 |
| `kit.mineru_kit` | MinerU 文档精准解析 API |
| `kit.common_kit` | 通用工具 |

## License

MIT
