A unified API wrapper for various AI providers with proxy support
Project description
AI API Wrapper
A unified API wrapper for various AI providers, with built-in proxy support.
Features
- 🔄 Unified Interface: Access different AI models through a single, consistent API
- 🌐 Proxy Support: Built-in proxy support, perfect for users in mainland China
- 🤖 Multiple Providers: Support for various AI providers including:
- OpenAI
- Anthropic
- Azure OpenAI
- Google AI
- DeepSeek
- More providers coming soon...
Installation
# Using poetry
poetry install
# Or using pip
pip install ai-api-wrapper
Quick Start
from ai_api_wrapper import Client
# Create a client with proxy support
proxy_config = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890"
}
client = Client(proxy_config=proxy_config)
# Create a chat completion
response = client.chat.completions.create(
model="deepseek:deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7
)
# Print the response
print(response.choices[0].message.content)
Configuration
Environment Variables
Create a .env file in your project root with the following variables:
# API Keys
DEEPSEEK_API_KEY=your_api_key_here
OPENAI_API_KEY=your_api_key_here
ANTHROPIC_API_KEY=your_api_key_here
GOOGLE_API_KEY=your_api_key_here
AZURE_OPENAI_API_KEY=your_api_key_here
# Base URLs (Optional, will override config.json if set)
DEEPSEEK_BASE_URL=https://api.deepseek.com
OPENAI_BASE_URL=https://api.openai.com
ANTHROPIC_BASE_URL=https://api.anthropic.com
GOOGLE_BASE_URL=https://generativelanguage.googleapis.com
AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
Configuration File
The project uses a single config.json file for non-sensitive configurations. Base URLs in this file will be overridden by environment variables if set:
{
"deepseek": {
"base_url": "https://api.deepseek.com",
"timeout": 30.0,
"max_retries": 3,
"verify_ssl": true,
"models": {
"deepseek-chat": {
"max_tokens": 4000,
"temperature": 0.7
},
"deepseek-coder": {
"max_tokens": 4000,
"temperature": 0.7
}
}
},
"openai": {
"base_url": "https://api.openai.com",
"timeout": 30.0,
"max_retries": 3,
"verify_ssl": true
},
"anthropic": {
"base_url": "https://api.anthropic.com",
"timeout": 30.0,
"max_retries": 3,
"verify_ssl": true
},
"google": {
"base_url": "https://generativelanguage.googleapis.com",
"timeout": 30.0,
"max_retries": 3,
"verify_ssl": true
},
"azure": {
"base_url": "https://your-resource.openai.azure.com",
"timeout": 30.0,
"max_retries": 3,
"verify_ssl": true
},
"logging": {
"level": "INFO",
"file": "app.log"
}
}
Security Best Practices
-
Never commit sensitive information
- Keep all API keys in
.envfile - Add
.envto your.gitignore - Never commit API keys to version control
- Keep all API keys in
-
Configuration file
- Keep
config.jsonin version control - Only include non-sensitive configurations
- Use environment variables for sensitive data and custom base URLs
- Keep
-
Environment variables
- Use
.envfile for local development - Use system environment variables in production
- Never hardcode API keys or base URLs in your code
- Use
Development
# Install development dependencies
poetry install --with dev
# Run tests
poetry run pytest
# Format code
poetry run black .
poetry run isort .
# Type checking
poetry run mypy .
License
GPL v3
配置系统说明
配置文件结构
项目使用分层的JSON配置文件系统:
-
default.json:默认配置文件- 包含所有可能的配置项
- 定义默认值和基本结构
- 可以提交到版本控制
- 不应包含任何敏感信息(API密钥、密码等)
-
local.json:本地配置文件- 包含敏感信息(API密钥、密码等)
- 覆盖默认配置
- 不应提交到版本控制
- 应添加到
.gitignore文件中
安全最佳实践
-
敏感信息仅存储在
local.json中- API 密钥
- 数据库凭据
- JWT 密钥
- 任何其他密码或密钥
-
禁止在
default.json中存储任何真实的敏感信息- 在
default.json中,将所有密钥字段设置为空字符串"" - 仅使用
default.json定义配置结构
- 在
-
版本控制注意事项
- 始终将
local.json添加到.gitignore - 仅提交
default.json到仓库 - 提供
local.json.template文件,用于新开发人员设置
- 始终将
配置项说明
AI服务配置
{
"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:日志配置
使用方法
- 复制
local.json.template为local.json - 在
local.json中填入实际的配置值(API密钥等) - 不要修改
default.json中的默认值(除非添加新功能) - 使用
ConfigManager类访问配置:
from utils.config_manager import ConfigManager
config = ConfigManager()
# 获取提供商配置
provider_config = config.get_provider_config('deepseek', 'siliconflow')
# 获取模型配置
model_config = config.get_model_config('deepseek', 'siliconflow', 'deepseek-chat')
# 获取已启用的服务
enabled_services = config.get_enabled_services()
Test
python -m pytest tests/ -v
注意事项
- 不要在代码中硬编码任何敏感信息
- 不要提交
local.json到版本控制 - 保持配置文件的结构与
default.json一致 - 使用有意义的配置项名称
- 及时更新文档
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_api_wrapper-0.1.1.tar.gz.
File metadata
- Download URL: ai_api_wrapper-0.1.1.tar.gz
- Upload date:
- Size: 41.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.9 Darwin/24.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c221c8027612504a969714c254b834f52d3e0b328dd6aeabba0877aec1b836f
|
|
| MD5 |
b9d40e7a3a824de318dc0e94214ff98b
|
|
| BLAKE2b-256 |
e9c07bc11785ceb26890974dbfd0f73128332c3fc8dcfe1c05f424540efbdcdd
|
File details
Details for the file ai_api_wrapper-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ai_api_wrapper-0.1.1-py3-none-any.whl
- Upload date:
- Size: 56.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.9 Darwin/24.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30cff2014134e7eeb29b125e4999653d768a3dd2926df2915368d49762bd4462
|
|
| MD5 |
2da25d68bdc26562d527aa22a14f3df0
|
|
| BLAKE2b-256 |
ea83332e952c5de81435cbf5c8559defd95500f4b18767766233104d9c8f8086
|