目录
[3.1 什么是大模型(LLM)](#3.1 什么是大模型(LLM))
[3.2 什么是 Token](#3.2 什么是 Token)
[3.3 什么是 Prompt](#3.3 什么是 Prompt)
[3.4 什么是 API Key?](#3.4 什么是 API Key?)
[4.1 DeepSeek(深度求索)](#4.1 DeepSeek(深度求索))
[4.2 ChatGPT / GPT(OpenAI)](#4.2 ChatGPT / GPT(OpenAI))
[4.3 Gemini(Google)](#4.3 Gemini(Google))
一、写在前面
AI 大模型现在特别火,市面上 DeepSeek、ChatGPT、Gemini 各家的 API 五花八门,我就琢磨着:
能不能用 C++ 写一个 SDK,把各家 AI 模型的 API 统一封装起来?
说干就干,花了两周时间,搞出了这个项目。现在把整个过程写成系列博客分享出来,希望对正在准备秋招的兄弟们有帮助。
二、这个项目到底是干嘛的
一句话总结:
用 C++17 写了一个统一的 SDK,让你能用同一套代码调用 DeepSeek、ChatGPT、Gemini 三家的大模型,还支持通过 Ollama 接入本地模型。
具体来说,这个项目做了三件事:
| 功能 | 说明 |
|---|---|
| 统一封装 | 不管你是调 DeepSeek 还是 ChatGPT,API 接口一模一样 |
| 流式输出 | 支持 SSE 协议,AI 一个字一个字地输出,体验拉满 |
| HTTP 服务 | 把 SDK 包装成 RESTful API,前端或其他服务可以直接调用 |
举个例子,你写了一个聊天软件,想同时支持 DeepSeek 和 ChatGPT。如果没有这个 SDK,你要分别对接两套 API,写两套 HTTP 请求、两套 JSON 解析、两套错误处理。有了这个 SDK,你只需要写一套代码,换一个模型名称就行。
三、先搞懂几个概念
如果你是第一次接触 AI 大模型,下面这几个概念先过一遍,不然看代码会懵。
3.1 什么是大模型(LLM)
LLM 全称 Large Language Model(大语言模型) ,简单说就是一个超级巨大的神经网络,通过学习海量的文本数据(比如整个互联网的网页、书籍),学会了理解和生成人类语言。
你现在用的 DeepSeek、ChatGPT、Gemini,背后都是 LLM。它们可以回答问题、写代码、写文章、翻译......本质上就是在做一件事:根据你给的输入,预测接下来最应该输出什么。
3.2 什么是 Token
Token 是 AI 理解文本的最小单位。它不是字母也不是单词,而是一个"语义碎片"。
直观理解:1 个汉字 ≈ 1~2 个 token,1 个英文单词 ≈ 1 个 token
举个例子:
- "你好" → 2 个 token
- "Hello" → 1 个 token
- "C++ 后端开发" → 4~5 个 token
为什么要在乎 Token? 因为调用 AI 的 API 是按 Token 数量收费的!比如 DeepSeek 是 1 块钱 100 万个 token,GPT-5 就更贵了。
3.3 什么是 Prompt
Prompt 就是你给 AI 的指令。写好 Prompt 是用好 AI 的核心技能。
一个好的 Prompt 通常包含三个要素:
1. 角色(Role):告诉 AI 它是什么身份
→ "你是一个 C++ 后端开发专家"
2. 任务(Task):告诉 AI 要做什么
→ "请帮我解释策略模式的优缺点"
3. 格式(Format):告诉 AI 怎么输出
→ "用表格形式对比,200字以内"
3.4 什么是 API Key?
API Key 就是厂商给你的身份凭证,相当于一把钥匙。每次调用 AI 的 API 时,都要在 HTTP 请求头里带上这个 Key:
html
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
没有这个 Key,我们不能使用对应的服务。
四、三大模型简介
4.1 DeepSeek(深度求索)
梁圣的巨作,用来服务自己的量化,顺带以基地的价格普惠老百姓
- 核心模型:DeepSeek-V4
- 特点 :
- 中文表现非常优秀,代码能力也强
- 性价比极高,价格只有 GPT 的几分之一
- 开源,社区活跃
- 支持上传 PDF、Word、Excel 等文件
- 适合:日常问答、代码生成、中文场景
4.2 ChatGPT / GPT(OpenAI)
- 核心模型:GPT-5.5
- 特点 :
- 业界标杆,英文和推理能力顶尖
- 生态最完善,第三方工具最多
- 支持图像识别、语音等多模态
- 适合:英文场景、复杂推理、多模态任务
4.3 Gemini(Google)
- 核心模型:gemini-3
- 特点 :
- Google 出品,跟 Google 生态深度集成
- 多模态能力很强(能看图片、视频)
- 适合:多模态任务、Google 生态用户
五、项目整体架构
这个项目分了四层,从下往上分别是:
每层各司其职:
| 层次 | 职责 | 核心文件 |
|---|---|---|
| 入口层 | 启动服务、解析参数 | main.cpp |
| HTTP服务层 | 对外提供 RESTful API | ChatServer.h/cpp |
| SDK核心层 | 封装模型调用和会话管理 | ChatSDK.h/cpp、LLMManager.cpp、SessionManager.cpp |
| Provider层 | 对接各家 AI 厂商的 API | DeepSeekProvider.cpp、ChatGPTProvider.cpp |
六、技术栈一览
| 技术 | 作用 | 使用场景 |
|---|---|---|
| C++17 | 编程语言 | 整个项目 |
| CMake | 构建工具 | 项目构建 |
| spdlog | 日志库 | 取代 std::cout,带级别和时间的日志输出 |
| jsoncpp | JSON 解析/生成 | 构造 HTTP 请求体、解析 AI 响应 |
| cpp-httplib | HTTP 库(header-only) | HTTP 客户端(调 AI 厂商)+ HTTP 服务端(对外提供 API) |
| OpenSSL | SSL/TLS 加密 | HTTPS 通信(调 AI 厂商必须) |
| SQLite3 | 嵌入式数据库 | 持久化存储会话和历史消息 |
| gflags | 命令行参数解析 | 程序启动参数(端口、日志级别等) |
| gtest | 单元测试 | 测试 Provider 的 sendMessage |
| curl | HTTP 工具 | 调试时手动调 API 测试 |
七、构建和运行
开发环境基于Linux,依赖安装:
cpp
# 安装依赖
sudo apt-get install libgflags-dev libspdlog-dev libjsoncpp-dev libgtest-dev \
libssl-dev cmake curl libsqlite3-dev
# cpp-httplib 是 header-only 库,直接把头文件拷到系统 include
git clone https://github.com/yhirose/cpp-httplib.git
sudo cp cpp-httplib/httplib.h /usr/include/
# 构建 SDK
cd sdk && mkdir build && cd build
cmake .. && sudo make install
# 构建并启动 ChatServer
cd ../../ChatServer && mkdir build && cd build
cmake .. && make
# 启动(API Key 通过环境变量传入)
export deepseek_apikey="sk-xxx"
export chatgpt_apikey="sk-xxx"
export gemini_apikey="AIzaSyxxx"
./AIChatServer --port=8080 --log_level=INFO
作者现在也是一名正在准备秋招的应届生,水平有限,文章中如果有写错的地方,欢迎评论区指正。一起加油!