C++后端项目:统一大模型接入 SDK(一)

目录

一、写在前面

二、这个项目到底是干嘛的

三、先搞懂几个概念

[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(深度求索)

官网https://www.deepseek.com

梁圣的巨作,用来服务自己的量化,顺带以基地的价格普惠老百姓

  • 核心模型:DeepSeek-V4
  • 特点
    • 中文表现非常优秀,代码能力也强
    • 性价比极高,价格只有 GPT 的几分之一
    • 开源,社区活跃
    • 支持上传 PDF、Word、Excel 等文件
  • 适合:日常问答、代码生成、中文场景

4.2 ChatGPT / GPT(OpenAI)

官网https://openai.com

  • 核心模型:GPT-5.5
  • 特点
    • 业界标杆,英文和推理能力顶尖
    • 生态最完善,第三方工具最多
    • 支持图像识别、语音等多模态
  • 适合:英文场景、复杂推理、多模态任务

4.3 Gemini(Google)

官网https://gemini.google.com

  • 核心模型:gemini-3
  • 特点
    • Google 出品,跟 Google 生态深度集成
    • 多模态能力很强(能看图片、视频)
  • 适合:多模态任务、Google 生态用户

五、项目整体架构

这个项目分了四层,从下往上分别是:

每层各司其职:

层次 职责 核心文件
入口层 启动服务、解析参数 main.cpp
HTTP服务层 对外提供 RESTful API ChatServer.h/cpp
SDK核心层 封装模型调用和会话管理 ChatSDK.h/cppLLMManager.cppSessionManager.cpp
Provider层 对接各家 AI 厂商的 API DeepSeekProvider.cppChatGPTProvider.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

作者现在也是一名正在准备秋招的应届生,水平有限,文章中如果有写错的地方,欢迎评论区指正。一起加油!

相关推荐
林夕071 小时前
Qt 6.x 新特性概览:从 Qt 5 到 Qt 6 的升级之路
c++·qt6·跨平台开发
码农编程录1 小时前
【notes10】spi
linux
没有梦想的咸鱼185-1037-16631 小时前
农业普查大数据与AI融合的数字农业与粮食安全智慧决策
大数据·人工智能·chatgpt·数据分析
高校俱乐部2 小时前
API 中转站的重要性:让国内用户灵活畅享 ChatGPT 的力量
chatgpt
basketball6162 小时前
C++ 强制类型转换:从 C 风格到 C++ 四大金刚
java·c语言·c++
米高梅狮子2 小时前
03.OpenStack使用
linux·前端·云原生·容器·架构·kubernetes·openstack
无限进步_2 小时前
C++11概览与统一初始化
开发语言·c++
实心儿儿2 小时前
Linux —— Linux进程信号 - 信号产生
linux·运维·服务器
吃着火锅x唱着歌2 小时前
深度探索C++对象模型 学习笔记 第五章 构造、解构、拷贝语意学(1)
c++·笔记·学习