Skip to main content

A lightweight OpenAI-compatible LLM client wrapper with defaults, retries, logging, and manual JSON mode.

Project description

LaiwenAI animated banner

LaiwenAI LLM Client

一个轻量的 OpenAI 兼容 Python 客户端封装,内置默认参数、重试机制、服务商校验和 logger 输出。

简体中文 · English

Python OpenAI compatible License


项目简介

LaiwenAI 让 OpenAI 兼容模型的调用更省心:你只需要在 .env 里配置一次默认服务商、模型、超时和重试策略,就可以继续使用熟悉的 OpenAI SDK 写法,同时获得默认参数注入、服务商切换保护和可选 logger 输出。

适合用于脚本、后端服务、原型验证,以及需要在多个 OpenAI 兼容服务之间切换的小型项目。

功能特性

  • OpenAI SDK 兼容写法:继续使用 client.chat.completions.create(...)client.embeddings.create(...) 等熟悉接口。
  • 支持 OpenAI 兼容接口:通过 DEFAULT_BASE_URL 或实例化参数接入第三方兼容服务。
  • 集中默认配置:统一管理默认模型、embedding 模型、温度、超时、重试次数和日志目录。
  • 更安全的服务商切换:传入自定义 base_url 时必须显式传入 api_key,降低误用默认密钥的风险。
  • 可选 logger 输出:可关闭、只输出到屏幕,或同时输出到屏幕和文件。

项目结构

.
├── .env.example          # 环境变量模板
├── LICENSE               # MIT 许可证
├── pyproject.toml        # Python 包配置
├── README.md             # 中文说明
├── README.EN.md          # English README
├── image/README/         # README 图片与 banner
├── docs/                 # 设计与代码说明
├── examples/             # 调用示例
├── tests/                # 单元测试
└── src/
    └── laiwenai/
        ├── __init__.py
        ├── llm_client.py        # LaiwenAI 客户端封装
        └── llm_config.py        # .env 配置读取

快速开始

1. 安装依赖

pip install laiwenai

2. 配置环境变量

cp .env.example .env

.env 中填入你的 API Key、OpenAI 兼容接口地址和默认模型:

LLM_API_KEY=your_api_key_here
DEFAULT_BASE_URL=https://api.example.com/v1
DEFAULT_MODEL=MiniMax-M2.7
DEFAULT_EMBEDDING_MODEL=text-embedding-3-small
DEFAULT_TEMPERATURE=0
DEFAULT_TIMEOUT=30.0
MAX_RETRIES=1
ENABLE_LOG_CONSOLE=False
ENABLE_LOG_FILE=False
LOG_DIR=logs

3. 检查默认行为

运行时配置都可以放在 .env 中:

DEFAULT_TEMPERATURE=0
DEFAULT_TIMEOUT=30.0
MAX_RETRIES=1
ENABLE_LOG_CONSOLE=False
ENABLE_LOG_FILE=False
LOG_DIR=logs

日志默认关闭。只想在屏幕显示日志时,将 ENABLE_LOG_CONSOLE 改为 True。如果将 ENABLE_LOG_FILE 改为 True,日志会同时输出到屏幕,并写入 LOG_DIR/laiwenai.logLOG_DIR 默认是当前运行目录下的 logs/,也可以设置成你自己的日志目录。

4. 运行示例

python examples/llm.py

示例脚本会先发起一次 chat completion,再发起一次 embedding 请求,并打印模型回复或 embedding 向量维度。

使用方式

默认客户端

LaiwenAI() 会读取 .env 中的配置,并通过 laiwenai.llm_config 转换成运行时配置。

from laiwenai import LaiwenAI

client = LaiwenAI()

response = client.chat.completions.create(
    messages=[
        {"role": "user", "content": "Hello, please confirm your model version"}
    ]
)

print(response.choices[0].message.content)

请求默认值

modeltemperaturetimeout 不传或传入 None 时,会使用默认配置。Chat/Responses 请求默认使用 .env 里的 DEFAULT_MODEL,Embedding 请求默认使用 .env 里的 DEFAULT_EMBEDDING_MODEL

response = client.chat.completions.create(
    model=None,
    messages=[{"role": "user", "content": "Hello"}],
    temperature=None,
    timeout=None,
)

Embedding 调用示例:

embedding = client.embeddings.create(input="Hello")
print(len(embedding.data[0].embedding))

JSON mode 等 OpenAI SDK 参数会原样透传给底层接口:

response = client.chat.completions.create(
    messages=[{"role": "user", "content": "Return a JSON object"}],
    response_format={"type": "json_object"},
)

OpenAI 兼容接口

当你传入自定义 base_url 时,必须显式传入 api_key,避免把默认密钥误用于另一个服务商。

from laiwenai import LaiwenAI

client = LaiwenAI(
    api_key="your-provider-key",
    base_url="https://api.example.com/v1",
    model="MiniMax-M2.7",
)

内置使用帮助

from laiwenai import LaiwenAI

print(LaiwenAI.usage())

调用日志

默认不输出日志。将 .env 中的 ENABLE_LOG_CONSOLE 设置为 True 后,LaiwenAI 会把结构化日志输出到屏幕。将 ENABLE_LOG_FILE 设置为 True 后,LaiwenAI 会同时输出到屏幕,并追加写入 LOG_DIR/laiwenai.log

日志包含时间、API 类型、模型、耗时、Token 用量、结束原因、系统提示词、用户提示词、回复文本和完整 JSON。

测试

PYTHONPATH=src pytest tests/test_llm.py -v

示例输出:

Pytest output screenshot

配置参考

配置项 文件 说明
LLM_API_KEY .env 通过 python-dotenv 加载的默认 API Key。
DEFAULT_BASE_URL .env 默认 OpenAI 兼容接口地址;不配置则使用 OpenAI SDK 默认地址。
DEFAULT_MODEL .env Chat/Responses 请求未指定模型时使用的模型;必须配置。
DEFAULT_EMBEDDING_MODEL .env Embedding 请求未指定模型时使用的模型;必须配置。
DEFAULT_TEMPERATURE .env 请求未指定或传入 None 时使用的温度。
DEFAULT_TIMEOUT .env 请求未指定或传入 None 时使用的超时时间。
MAX_RETRIES .env 封装 API 调用的重试次数。
ENABLE_LOG_CONSOLE .env 是否只输出屏幕日志。
ENABLE_LOG_FILE .env 是否开启文件日志;开启后同时输出到屏幕和文件。
LOG_DIR .env 文件日志目录;默认当前运行目录下的 logs

参与贡献

欢迎提交 Issue 和 Pull Request。对于有行为变化的修改,建议附上简短说明、必要示例,以及能防止回归的测试。

开源协议

LaiwenAI 基于 MIT License 开源。

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

laiwenai-0.0.1.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

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

laiwenai-0.0.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file laiwenai-0.0.1.tar.gz.

File metadata

  • Download URL: laiwenai-0.0.1.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for laiwenai-0.0.1.tar.gz
Algorithm Hash digest
SHA256 bd7e9815a7551f2ec3fc9e319961be997ccb63be0cfe19344f1bfaf4e612e298
MD5 0b816223229eab2b1af2405b27726ee3
BLAKE2b-256 d5417dad4a58d69103562bdd8a94dd677ccb5945778302672a80d9b87a15806f

See more details on using hashes here.

File details

Details for the file laiwenai-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: laiwenai-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for laiwenai-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a26af1fc05996d6a0398ec5a830a57b98da61ebe98682ca80dbdbdfb8018a5c6
MD5 a6404bf96d76c6edcfec9a69834f46f7
BLAKE2b-256 95e05af8fbaabaa0b6df229ead8e243ecff089bd10897b11cea73b732d23d26b

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