Skip to main content

A minimalist Python package scaffolded with uv

Project description

oiiai

PyPI version Python versions License: MIT

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oiiai_lib-0.0.4-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

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

Hashes for oiiai_lib-0.0.4.tar.gz
Algorithm Hash digest
SHA256 3813c4db1f13a54e5450748d27e4e07f6d307e77036ddfd51daa8e75e838cd8a
MD5 3178a92c3068845bc76737a20ffb4fcd
BLAKE2b-256 245231c87b27367399fb7568a3b98462de834badd481da06ae43c0ab4b09e004

See more details on using hashes here.

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

Hashes for oiiai_lib-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ca822d986bca0d67a42af2f31573c0d12412af9e5fdeab1ca3ac73e6efef1391
MD5 fdb0b0a486d4267feb9bf0cd5ec2f712
BLAKE2b-256 78bfd76f5311d361c5c1439031a646d178e1781ae02d855f2a8dd0abd63998db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page