liboai
纯 C++17 非官方 OpenAI API 客户端库,让 C++ 开发者以头文件库方式调用 GPT-4、DALL·E、Whisper 等所有 OpenAI 服务,支持同步/异步双模式(已停止维护,建议使用 jasonduncan/liboai Fork)。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯 C++17 非官方 OpenAI API 客户端库,让 C++ 开发者以头文件库方式调用 GPT-4、DALL·E、Whisper 等所有 OpenAI 服务,支持同步/异步双模式(已停止维护,建议使用 jasonduncan/liboai Fork)。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2022 年底,OpenAI 开放 API 后,Python 社区第一时间拿到了官方 SDK。但 C++ 开发者呢?他们手握系统级语言、追求极致性能、熟悉底层控制——却只能眼巴巴地看着 Python 用户调用 GPT-4,画 DALL·E 图。那时候如果要通过 C++ 调用 OpenAI API,唯一的办法是手撸 HTTP 请求、处理 JSON 解析、自己管理连接池。
开发者 D7EAD 看不下去这个局面,在 2022 年 12 月底撸出了 liboai——一个纯 C++17 的非官方 OpenAI API 库。他的目标很明确:让 C++ 程序员像写 Python 一样优雅地调用 GPT。
这个库有多像 Python?官方 README 直接贴出了等价的 Python 代码和 C++ 代码对比,逻辑几乎一一对应。开发者不需要理解 HTTP 底层,只需要 oai.Image->create("一只蛇在草地上", 1, "256x256") 这样一行调用,就能生成图片。这在当时填补了 C++ 生态的巨大空白。
liboai 的野心很大——它不是只做 ChatGPT,而是要覆盖整个 OpenAI API 生态。目前已实现的模块包括:
| 模块 | 功能 | 说明 |
|---|---|---|
| Chat | 对话补全 | 支持 Function Calling / GPT-4 / GPT-3.5-Turbo |
| Image | DALL·E 图片生成 | 支持 256×256 / 512×512 / 1024×1024 |
| Audio | 语音转文字 | Whisper 模型接入 |
| Completions | 文本补全 | GPT-3 / Codex 等 |
| Embeddings | 向量嵌入 | 适用于 RAG 场景 |
| Files | 文件管理 | 上传/下载训练数据 |
| Fine-tunes | 微调训练 | 自定义模型微调 |
| Moderation | 内容审核 | 内容安全检测 |
| Azure | Azure OpenAI 支持 | 企业级部署 |
| Edits | 文本编辑 | GPT-3 编辑模式 |
最核心的设计亮点是它对异步操作的原生支持。库提供了同步和异步两套接口,开发者可以根据性能需求选择。在游戏引擎、高频交易、实时推理等对延迟敏感的场景中,异步调用意味着不会阻塞主线程,这是 Python SDK 无法轻易做到的优势。
liboai 的代码结构体现了扎实的 C++ 工程素养,采用**头文件库(Header-only + 可选编译组件)**架构:
liboai/
├── include/
│ ├── liboai.h # 主入口头文件
│ ├── components/ # 各模块接口(.h 头文件)
│ │ ├── chat.h
│ │ ├── images.h
│ │ ├── audio.h
│ │ └── ...
│ └── core/ # 核心基础设施
│ ├── authorization.h # API Key 管理
│ ├── network.h # 网络抽象层
│ ├── netimpl.cpp # cURL 封装实现
│ ├── response.h # JSON 响应封装
│ └── exception.h # 异常处理
└── components/ # 对应实现文件(.cpp)
依赖策略极为克制:外部依赖只有两个——nlohmann/json(JSON 解析)和 libcurl(HTTP 客户端)。两者都是 C++ 社区久经验证的基础库,不引入额外复杂依赖链。相比之下,很多现代 C++ 库动辄拉起数十个第三方依赖,liboai 的依赖控制堪称清流。
网络层封装是另一个技术亮点。开发者 D7EAD 没有直接暴露 libcurl 的 C 接口,而是封装了一层 Network 抽象,提供统一的方法签名。这样做的好处是未来可以替换底层实现(比如换成 Boost.Asio 或自定义 HTTP 客户端),而不影响上层业务代码。
构建系统支持 CMake + vcpkg 或 CMake + Conan 两种方式,对现代 C++ 开发者来说,上手门槛在可接受范围内。但对于没有 C++ 开发经验的用户(比如只会 Python 的 AI 工程师),这个库的门槛仍然是相当高的——需要熟悉编译器、构建工具链、包管理器。
以 Ubuntu 为例,安装步骤大约如下:
# 安装依赖
sudo apt install libcurl4-openssl-dev
# 通过 vcpkg 安装 nlohmann-json
vcpkg install nlohmann-json:x64-linux
# 克隆 + 编译
git clone https://github.com/D7EAD/liboai.git
cd liboai && mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=[vcpkg/scripts/buildsystems/vcpkg.cmake]
cmake --build . -j$(nproc)
使用示例(ChatGPT 调用):
#include "liboai.h"
using namespace liboai;
int main() {
OpenAI oai;
oai.auth.SetKeyEnv("OPENAI_API_KEY");
Response res = oai.Chat->create(
"gpt-3.5-turbo",
Conversation().AddMessage("user", "用C++写一个快速排序")
);
std::cout << res["choices"][0]["message"]["content"] << std::endl;
}
对比 Python 的 openai.ChatCompletion.create(...),接口设计确实非常接近。开发者迁移成本低。
README 第一行就醒目地写着:
DISCLAIMER: This repository is no longer actively maintained.
截至 2026 年 6 月,该库已超过 2 年没有更新。OpenAI API 在此期间经历了大量 Breaking Change:
liboai 无法使用这些新功能。好在有一个活跃的社区 Fork——jasonduncan/liboai(目前 13 ⭐),持续跟进 OpenAI 最新 API。
对于新项目,强烈建议:
liboai 的出现有其历史价值。在 2022-2023 年,OpenAI API 的 C++ 支持几乎是空白。它的意义在于:
虽然项目已停止维护,但它为后来者趟了路。如今,C++ AI 开发者的选择已经更多——但 liboai 仍然是理解这一领域不可绕过的案例。