Metadata-Version: 2.2
Name: ai-api-wrapper
Version: 0.1.0
Summary: A unified wrapper for various AI API services
Author: James Ding
Author-email: James Ding <xingshizhai@gmail.com>
License: GPL v3.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openai>=1.0.0
Requires-Dist: httpx>=0.24.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: python-dotenv>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: build>=0.10.0; extra == "dev"
Requires-Dist: twine>=4.0.0; extra == "dev"
Dynamic: author
Dynamic: requires-python

# ai-api-wrapper

ai-api-wrapper/
│
├── src/
│   └── ai_api_wrapper/
│       ├── __init__.py
│       ├── services/
│       │   ├── __init__.py
│       │   ├── ai_service.py
│       │   ├── openai_service.py
│       │   ├── message_types.py
│       │   └── ... (其他AI服务实现)
│       ├── utils/
│       │   ├── __init__.py
│       │   ├── config_manager.py
│       │   └── logger.py
│       └── config/
│           ├── __init__.py
│           ├── default_config.yaml
│           └── ... (默认配置文件)
│
├── examples/
│   ├── config/
│   │   └── example_config.yaml
│   ├── basic_usage.py
│   └── streaming_example.py
│
├── tests/
│   ├── __init__.py
│   ├── test_openai_service.py
│   └── ... (其他测试)
│
├── docs/
│   └── ... (文档文件)
│
├── .gitignore
├── LICENSE
├── MANIFEST.in
├── pyproject.toml
├── README.md
└── setup.py



# 配置系统说明

## 配置文件结构

项目使用分层的JSON配置文件系统：

1. `default.json`：默认配置文件
   - 包含所有可能的配置项
   - 定义默认值和基本结构
   - 可以提交到版本控制
   - **不应包含任何敏感信息**（API密钥、密码等）

2. `local.json`：本地配置文件
   - 包含敏感信息（API密钥、密码等）
   - 覆盖默认配置
   - **不应提交到版本控制**
   - 应添加到 `.gitignore` 文件中

## 安全最佳实践

1. **敏感信息仅存储在 `local.json` 中**
   - API 密钥
   - 数据库凭据
   - JWT 密钥
   - 任何其他密码或密钥

2. **禁止在 `default.json` 中存储任何真实的敏感信息**
   - 在 `default.json` 中，将所有密钥字段设置为空字符串 `""`
   - 仅使用 `default.json` 定义配置结构

3. **版本控制注意事项**
   - 始终将 `local.json` 添加到 `.gitignore`
   - 仅提交 `default.json` 到仓库
   - 提供 `local.json.template` 文件，用于新开发人员设置

## 配置项说明

### AI服务配置

```json
{
    "ai_services": {
        "service_name": {
            "enabled": true,
            "default_provider": "official",
            "default_model": "model-name",
            "providers": {
                "provider_name": {
                    "name": "显示名称",
                    "enabled": true,
                    "api_key": "",  // 在 default.json 中留空，在 local.json 中填写实际值
                    "base_url": "API基础URL",
                    "models": {
                        "model_name": {
                            "internal_name": "提供商特定的模型名称",
                            "max_tokens": 4000,
                            "temperature": 0.7
                        }
                    }
                }
            }
        }
    }
}
```

### 其他配置

- `database`：数据库配置（密码仅存储在 local.json）
- `redis`：Redis配置（密码仅存储在 local.json）
- `jwt_secret`：JWT密钥（仅存储在 local.json）
- `logging`：日志配置

## 使用方法

1. 复制`local.json.template`为`local.json`
2. 在`local.json`中填入实际的配置值（API密钥等）
3. 不要修改`default.json`中的默认值（除非添加新功能）
4. 使用`ConfigManager`类访问配置：

```python
from utils.config_manager import ConfigManager

config = ConfigManager()

# 获取服务配置
service_config = config.get_service_config('deepseek')

# 获取提供商配置
provider_config = config.get_provider_config('deepseek', 'siliconflow')

# 获取模型配置
model_config = config.get_model_config('deepseek', 'siliconflow', 'deepseek-chat')

# 获取已启用的服务
enabled_services = config.get_enabled_services()
```

## 注意事项

1. 不要在代码中硬编码任何敏感信息
2. 不要提交`local.json`到版本控制
3. 保持配置文件的结构与`default.json`一致
4. 使用有意义的配置项名称
5. 及时更新文档 


## 

```
# 安装必要的工具
pip install build twine pytest

# 运行测试，确保一切正常
pytest

# 检查 README.md 在渲染后是否正确
python -m readme_renderer README.md
```
