-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
你好。我最近在关注这个项目,非常喜欢 llmapi 解决了 C++ 中对 LLM API 调用工具的缺失的问题。
现状与痛点
目前项目核心基于 C++23 Modules 实现。这非常前沿,但目前的编译器(如 GCC 13/14, CMake 3.30 以下的版本)对 Modules 的支持在跨平台和工程落地方面仍有门槛,尤其不幸的是,许多长期支持的 Linux 稳定发行版软件包列表中并没有支持import std;这一特性的 gcc-15。许多现有的工业级项目仍锁定在 C++17 标准,无法直接接入。
虽然项目提供了 extern "C" 接口,但使用 C 接口会丢失 C++ 的类型安全和 RAII, std::string_view 等现代化特性。
建议方案
建议提供一套 C++17 Header-only 实现。
我注意到核心逻辑(如 openai.cppm)主要依赖 libcurl 和 nlohmann/json,逻辑本身并不强依赖 C++20/23 的独有特性(如 Coroutines)。因此,可以将核心逻辑移植为标准的 C++17 头文件。
这样做的好处是:
- 用户可以直接使用 C++ 类和方法,而不需要经过 C 接口的转换。
- C++17 用户只需包含头文件并链接
libcurl即可使用,无需配置复杂的 Modules 编译链 (尤其是在当下用户需要手动编译std模块),实现了构建方面的解耦。 - 这些头文件的加入是非侵入式的,与现有的 C++23实现 (
.cppm文件) 互不影响。
我已经基于现有的 C++23 源码完成了 C++17 版本的移植(主要工作是将 Modules 语法替换为标准头文件包含,将 Concepts 替换为 SFINAE),并在本地验证通过。稍后我会提交一个 PR,烦请评估。
Metadata
Metadata
Assignees
Labels
No labels