Skip to main content

openai_sqlite_cache

openai_sqlite_cache 是非官方的 OpenAI Python SDK 透明 SQLite 缓存层。同一个 API、同一个模型、完全相同的输入再次调用时,会直接返回本机缓存的响应,不再请求上游。

PyPI 分发名是 openai_sqlite_cache(规范化名称为 openai-sqlite-cache);为满足只替换 import 的用法,Python 导入名仍然是 cached_openai。

安装

在当前仓库中安装:

pip install ./openai_sqlite_cache

发布到你有权限的 Python 包索引后,安装形式为:

pip install openai_sqlite_cache

注意:本项目与公共 PyPI 上的 cached-openai 分发项目都提供 cached_openai 导入包,二者不能安全地安装在同一个 Python 环境中。请只安装其中一个。

用法

现有代码只需替换 import,并保留 openai 这个本地别名:

# 原来:import openai
import cached_openai as openai

client = openai.OpenAI()
response = client.responses.create(
    model="gpt-5",
    input="Explain SQLite in one sentence.",
)
print(response.output_text)

也可以直接使用包名:

import cached_openai

client = cached_openai.OpenAI()
completion = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=[{"role": "user", "content": "Hello"}],
)

以下官方 SDK 用法均保持不变:

  • OpenAI、AsyncOpenAI、AzureOpenAI 和 AsyncAzureOpenAI;
  • 模块级调用,如 openai.chat.completions.create(...);
  • with_options()、with_raw_response、with_streaming_response;
  • 自定义 base_url 和自定义同步/异步 http_client;
  • 官方 SDK 的响应模型和异常类型。

流式响应会在第一次被完整消费时写入缓存;如果流被提前关闭,则不会缓存不完整内容。Realtime/WebSocket 不经过普通 HTTP 请求,因此不会缓存。

缓存规则

缓存键使用 SHA-256 计算,包含:

  • HTTP 方法和规范化后的完整 API URL;
  • 请求体(JSON 会按键排序,multipart 会忽略随机 boundary 并对文件内容取 hash);
  • 模型名;
  • organization、project、beta 等会影响语义的请求头;
  • API 凭据的不可逆作用域 hash,防止不同 API key 之间共享响应。

请求原文和 API key 都不会写入数据库。数据库只保存 hash、成功响应体、必要响应头和命中统计。默认永久保留,只缓存 2xx 响应。

为避免有副作用的操作被错误去重,目前只缓存这些推理/生成端点:Responses、Chat Completions、Completions、Embeddings、Moderations、Images、Audio 和 Videos。Files、Uploads、Batches、Fine-tuning、Vector Stores 等管理类 API 会原样请求上游。

配置

默认数据库位置:

  • macOS:~/Library/Caches/openai-sqlite-cache/cache.sqlite3
  • Linux:$XDG_CACHE_HOME/openai-sqlite-cache/cache.sqlite3,未设置时使用 ~/.cache/...
  • Windows:%LOCALAPPDATA%/openai-sqlite-cache/cache.sqlite3

环境变量:

export CACHED_OPENAI_CACHE_PATH=/path/to/cache.sqlite3
export CACHED_OPENAI_TTL_SECONDS=86400
export CACHED_OPENAI_DISABLE=0

也可以在创建客户端前配置:

import cached_openai as openai

openai.configure_cache(
    path="./.cache/openai.sqlite3",
    ttl_seconds=24 * 60 * 60,
)
client = openai.OpenAI()

单个客户端可以覆盖全局配置:

client = openai.OpenAI(
    cache_path="./project-cache.sqlite3",
    cache_ttl=3600,
    cache_enabled=True,
)

维护接口:

print(openai.cache_info())
removed = openai.clear_cache()

缓存文件可能包含模型响应中的敏感内容,应像其他本地应用数据一样保护。包会尽量把目录和数据库权限分别设为 0700 和 0600。

开发与测试

cd openai_sqlite_cache
python -m unittest discover -s tests -v
python -m pip wheel --no-deps . -w dist

Metadata

Release files for openai-sqlite-cache 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openai-sqlite-cache 0.0.1
File Size Uploaded
openai_sqlite_cache-0.0.1.tar.gz 20.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openai-sqlite-cache 0.0.1
File Interpreter ABI Platform
openai_sqlite_cache-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 38.0 kB

Release files / openai_sqlite_cache-0.0.1.tar.gz

Download URL openai_sqlite_cache-0.0.1.tar.gz
Size 20.5 kB
Tags Source
SHA-256 checksum
How to use checksums
48ab6fae7655b8104c37a744516f1599dabc354bd66c278c576da10dcdcd95f0
BLAKE2b-256 checksum
How to use checksums
ef5f229065adffd2b95ecd42593a7f8c00fb47d9242157ce61cfdcb8162919c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / openai_sqlite_cache-0.0.1-py3-none-any.whl

Download URL openai_sqlite_cache-0.0.1-py3-none-any.whl
Size 17.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba34216713c66fbbcc9437b71055ae40424280a2cc20fde800e32c28f0888363
BLAKE2b-256 checksum
How to use checksums
066d2b1f26872ae0d049fef55b5c2a55357c97b9e3b84c7e06673057cb631e9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

0.0.3

2 release files

0.0.2

2 release files

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page