一个轻量、灵活、生产级的大语言模型 API 封装框架,支持多种 LLM 提供商,提供统一的 YAML 配置接口。
- 🎨 统一接口:一套 YAML 语法适配多个 LLM 提供商
- ⚡ 轻量高效:精简代码,零冗余依赖
- 🔄 生产就绪:自动重试、使用量追踪、批量写入
- 🛡️ 类型安全:完整类型注解,IDE 友好
- 📊 可观测性:自动记录 API 调用和使用量
- 🧩 模块化设计:独立模块,按需导入
| 提供商 | 模块名 | 特色功能 | 文档 |
|---|---|---|---|
| Google Gemini | gemini |
思考模式、多模态图片理解 | 📖 查看文档 |
| OpenAI 兼容 | openai |
异步并发、通用兼容 | 📖 查看文档 |
OpenAI 兼容模块支持所有遵循 OpenAI API 规范的服务:OpenAI 官方、Azure OpenAI、本地部署服务等
# 建议在独立虚拟环境中安装
python -m venv _venv && source _venv/bin/activate
# 直接通过 pip 安装 Git 仓库(可替换为 SSH 或指定 tag)
pip install "LLM-API @ git+https://github.com/zfeny/LLM_API.git"更多 pip 安装版用法见
docs/gemini-pypackage.md,其中包含更完整的环境变量/预设/记录器配置说明。
创建 .env 文件:
# Gemini API
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_MODEL=gemini-2.5-flash
# OpenAI 兼容 API
LLM_API_KEY=your_openai_api_key_here
LLM_API_BASE=https://api.openai.com/v1
LLM_MODEL=gpt-4from gemini import LLMClient, load_env_file
load_env_file()
client = LLMClient.from_env()
yaml_prompt = """
messages:
- system: 你是一个helpful assistant。
- user: 介绍一下Python的特点。
generation:
model: gemini-2.5-flash
"""
response = client.invoke_from_yaml(yaml_prompt)
print(response)from openai import LLMClient, load_env_file
load_env_file()
client = LLMClient.from_env()
yaml_prompt = """
messages:
- user: 用Markdown总结Python的核心优势。
generation:
model: gpt-4
format: markdown
"""
response = client.invoke_from_yaml(yaml_prompt)
print(response)messages:
- system: 系统提示词
- user: 用户消息
generation:
model: gemini-2.5-flash
temperature: 0.7
max_output_tokens: 2048
format: markdown # 可选:格式化输出generation:
model: gemini-2.5-flash
think: -1 # 启用深度思考messages:
- user: 描述这张图片。
images:
- path/to/image.jpg
generation:
model: gemini-2.5-flash支持 Markdown、JSON、JSON Schema 三种格式:
generation:
format:
type: json_schema
json_schema:
name: UserInfo
schema:
type: object
properties:
name: {type: string}
age: {type: integer}所有 API 调用自动记录到 SQLite 数据库:
from gemini import UsageRecorder
recorder = UsageRecorder()
records = recorder.get_all_records()
for record in records:
print(f"模型: {record['model']}, Token: {record['total_tokens']}")- Gemini 模块完整指南 - 思考模式、多模态、Files API
- OpenAI 兼容模块指南 - 异步并发、自定义配置
- OpenList 开发规范 - 项目开发流程
LLM_API/
├── llm/ # 公共基类与共享工具(含 preset_module/ 资源)
├── gemini/ # Gemini 原生 API 封装
├── openai/ # OpenAI 兼容 API 封装
├── docs/ # 详细文档
├── test_run_gemini.py # Gemini 测试示例
├── test_run.py # OpenAI 测试示例
└── README.md # 本文件
YAML 输入 → Parser → ICS 中间层 → Adapter → SDK
yaml_prompt = """
messages:
- system: 你是Python专家。
- user: 编写斐波那契函数,使用动态规划。
generation:
model: gemini-2.5-flash
format: markdown
"""yaml_prompt = """
messages:
- user: 识别图片中的物体。
images: [photo.jpg]
generation:
model: gemini-2.5-flash
format:
type: json_schema
json_schema:
name: ImageAnalysis
schema:
type: object
properties:
objects: {type: array}
scene: {type: string}
"""yaml_prompt = """
messages:
- user: 搜索最新的 AI 发布会新闻并给出链接。
generation:
model: gemini-2.5-flash
tools: search
"""from openai import AsyncLLMClient
async def process_batch(prompts):
client = AsyncLLMClient.from_env()
tasks = [client.invoke_from_yaml(p) for p in prompts]
return await asyncio.gather(*tasks)from gemini import RetryConfig
retry_config = RetryConfig(
max_retries=5,
initial_delay=1.0,
exponential_base=2.0
)
client = LLMClient.from_env(retry_config=retry_config)from gemini import UsageRecorder
recorder = UsageRecorder(
db_path="custom_usage.db",
batch_size=20
)
client = LLMClient.from_env(recorder=recorder)- Gemini 原生:需要思考模式、多模态等 Gemini 专属功能
- OpenAI 兼容:使用 OpenAI API 或需要异步并发
可以,完全独立:
from gemini import LLMClient as GeminiClient
from openai import LLMClient as OpenAIClient只需更改导入语句,YAML 格式基本兼容。
详细问题请查看各模块文档。
| 特性 | 效果 |
|---|---|
| 批量写入 | 减少 90% 数据库连接 |
| 异步 I/O | 高并发 8x 性能提升 |
| 自动重试 | 成功率 +80% |
| 文件缓存 | 避免重复上传 |
- ✅ 添加 Gemini 原生封装模块
- ✅ 思考模式、多模态图片理解
- ✅ Files API 集成
- 🔄 模块化重构
- ✅ OpenAI 兼容封装
- ✅ 异步客户端、自动重试
- ✅ 使用量追踪
- Fork 本仓库
- 创建功能分支:
git checkout -b feature/xxx - 提交更改:
git commit -m 'Add xxx' - 推送分支:
git push origin feature/xxx - 创建 Pull Request
详细开发规范请查看 OpenList 文档。
MIT License - 详见 LICENSE 文件
Happy Coding! 🚀