A minimalist Python package scaffolded with uv
Project description
oiiai
oiiai 是一个简单的 AI 模型调用工具包,提供模型列表获取和模型调用功能。
特性
- 🚀 支持多个 AI 提供商的模型列表获取
- 📦 统一的 API 接口
- 🛠️ 简单易用的设计
- 🔧 可扩展的架构
- 📝 统一的日志记录系统(支持 JSON 格式和异步日志)
支持的提供商
| 提供商 | 模型获取 | 说明 |
|---|---|---|
| 智谱 AI | ✅ FetchZhipu | 从官方文档页面解析模型列表 |
| OpenRouter | ✅ FetchOpenRouter | 通过 API 获取模型列表 |
| ModelScope | ✅ FetchModelScope | 通过 API 获取模型列表 |
| SiliconFlow | ✅ FetchSiliconFlow | 通过 API 获取模型列表 |
| IFlow | ✅ FetchIFlow | 通过 API 获取模型列表 |
| Nova (Amazon) | ✅ FetchNova | 通过 API 获取模型列表 |
安装
使用 pip
pip install oiiai-lib
使用 uv
uv add oiiai-lib
快速开始
from oiiai import Fetch<Provider>
# 需要 API Key 的提供商
fetcher = FetchNova(api_key="your-api-key") # 或设置环境变量 NOVA_API_KEY
models = fetcher.fetch_models()
print(f"可用模型: {len(models)} 个")
# 不需要 API Key 的提供商
fetcher = FetchZhipu()
models = fetcher.fetch_models()
API 参考
基类 FetchBase
所有模型获取器的抽象基类。
from oiiai import FetchBase
class MyFetcher(FetchBase):
@property
def provider(self) -> str:
return "my_provider"
def fetch_models(self) -> List[str]:
return ["model-1", "model-2"]
可用提供商
| 类名 | 提供商 | API Key | 环境变量 | 特殊方法 |
|---|---|---|---|---|
FetchZhipu |
智谱 AI | 不需要 | - | - |
FetchModelScope |
ModelScope | 不需要 | - | - |
FetchIFlow |
IFlow | 不需要 | - | - |
FetchOpenRouter |
OpenRouter | 可选 | OPENROUTER_API_KEY |
- |
FetchSiliconFlow |
SiliconFlow | 需要 | SILICONFLOW_API_KEY |
- |
FetchNova |
Amazon Nova | 需要 | NOVA_API_KEY |
fetch_models_raw() |
使用示例
需要 API Key 的提供商
from oiiai import FetchNova
# 方式一:直接传入 API Key
fetcher = FetchNova(api_key="your-api-key")
# 方式二:从环境变量读取
fetcher = FetchNova() # 需设置 NOVA_API_KEY
models = fetcher.fetch_models()
# Nova 特有:获取原始 API 响应
raw_response = fetcher.fetch_models_raw()
不需要 API Key 的提供商
from oiiai import FetchZhipu
fetcher = FetchZhipu()
models = fetcher.fetch_models()
日志配置
oiiai 提供统一的日志记录系统,支持 JSON 格式输出和异步日志。
基本配置
import logging
from oiiai import configure_logging, shutdown_logging
# 配置日志级别为 DEBUG,使用 JSON 格式输出
configure_logging(level=logging.DEBUG)
# 使用完毕后关闭日志(清理异步日志资源)
shutdown_logging()
配置选项
configure_logging(
level=logging.WARNING, # 日志级别(默认: WARNING)
handler=None, # 自定义 Handler(默认: NullHandler)
use_json=True, # 是否使用 JSON 格式(默认: True)
async_enabled=False, # 是否启用异步日志(默认: False)
)
自定义 Handler
import logging
from oiiai import configure_logging
# 使用文件 Handler
file_handler = logging.FileHandler("oiiai.log")
configure_logging(level=logging.INFO, handler=file_handler)
异步日志
在高并发场景下,可以启用异步日志避免阻塞:
from oiiai import configure_logging, shutdown_logging
# 启用异步日志
configure_logging(level=logging.INFO, async_enabled=True)
# 程序退出前务必调用 shutdown_logging() 确保日志写入完成
shutdown_logging()
JSON 日志格式
启用 JSON 格式后,日志输出包含以下字段:
| 字段 | 说明 |
|---|---|
| timestamp | ISO 8601 格式时间戳 |
| level | 日志级别 |
| provider | Provider 标识符 |
| message | 日志消息 |
| module | 模块名称 |
| function | 函数名称 |
| line | 行号 |
| exc_info | 异常堆栈(可选) |
开发
克隆仓库
git clone https://github.com/weisiren000/oiiai
cd oiiai
安装开发依赖
uv sync --dev
运行测试
uv run pytest
代码格式化
uv run ruff format .
uv run ruff check .
扩展
实现自定义获取器只需继承 FetchBase 并实现 provider 属性和 fetch_models() 方法。
许可证
MIT License. 详见 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request!
链接
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
oiiai_lib-0.0.4.tar.gz
(107.6 kB
view details)
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
oiiai_lib-0.0.4-py3-none-any.whl
(13.9 kB
view details)
File details
Details for the file oiiai_lib-0.0.4.tar.gz.
File metadata
- Download URL: oiiai_lib-0.0.4.tar.gz
- Upload date:
- Size: 107.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3813c4db1f13a54e5450748d27e4e07f6d307e77036ddfd51daa8e75e838cd8a
|
|
| MD5 |
3178a92c3068845bc76737a20ffb4fcd
|
|
| BLAKE2b-256 |
245231c87b27367399fb7568a3b98462de834badd481da06ae43c0ab4b09e004
|
File details
Details for the file oiiai_lib-0.0.4-py3-none-any.whl.
File metadata
- Download URL: oiiai_lib-0.0.4-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca822d986bca0d67a42af2f31573c0d12412af9e5fdeab1ca3ac73e6efef1391
|
|
| MD5 |
fdb0b0a486d4267feb9bf0cd5ec2f712
|
|
| BLAKE2b-256 |
78bfd76f5311d361c5c1439031a646d178e1781ae02d855f2a8dd0abd63998db
|