# C++ AI应用开发项目 - AI应用服务平台
现在AI很火,对于开发岗来说,掌握 AI应用相关开发技术,是很加分的。
之前,知识星球 (opens new window)里发布了 HTTP服务框架 这个项目。
用C++开发一个 基础HTTP服务框架,在这个框下来,可以更容易开发各种 应用。
这次,在 HTTP服务框架 基础上,我们做一个AI 应用服务平台,旨在帮助 C++录友们入门AI应用开发。
如果 大家学过 HTTP服务框架 (opens new window) 这个项目,基本 7天内,就可以入门 该项目,如果没有项目实战经验直接学该项目,可能需要 1-2个月。
# 该项目亮点
- ✅ AI 聊天(多轮会话 + 会话记忆):把大语言模型的 API 嵌入 C++ 服务,支持上下文记忆与历史同步。
- ✅ AI 图像识别(MobileNetV2 + ONNXRuntime):图片 → 预处理 → 模型推理 → 标签返回,端到端闭环。
- ✅ 工程级部署:一键 Docker 镜像,包含 MySQL / RabbitMQ 等依赖,拿到 API key 即可跑起来。
- ✅ 高并发设计:基于 Muduo + 自研 HTTP 框架 + RabbitMQ + 线程池,AI 推理任务异步化,避免阻塞主线程。
- ✅ 简历友好:明确的可写项(AI 集成 / 推理部署 / 异步队列 / 会话持久化),面试问得住、写得漂亮。
一些做开发的录友,可能不了解 什么是 推理部署?
训练:用海量数据去训练模型,得到模型参数(权重)。
推理:拿训练好的模型,在生产环境中加载并运行,输入数据 → 模型前向计算 → 得到预测结果
本项目中,输入一张图片 → OpenCV 做预处理 → 喂进 ONNXRuntime → 模型输出分类结果。这就是典型的 AI 推理流程。
# 项目演示
这里给出部分截图,本项目专栏中有演示视频:
# 谁适合看、能收获什么
C++ 录友,想在简历上,添加AI应用开发 案例的录友,都可以学习。
- 有底层/后端基础的同学:几小时读完掌握全局结构并能跑起来。
- 刚入门 AI 应用的同学:7 天内完成实战,从模型接入到前端交互全流程。
- 求职/转行者:拿到一个能写在简历上的「AI 应用服务平台」项目:面试时能说清楚技术难点与工程化实现。
简历可写点:
- AI 聊天服务集成:在 C++ 框架中调用大模型 API,实现多轮对话与会话记忆。
- AI 图像识别服务:结合 OpenCV + ONNX Runtime,完成图像预处理与推理全流程。
- 高并发架构设计:利用 Muduo + RabbitMQ + 线程池,提升系统在多用户场景下的并发处理能力。
- 工程化能力:熟悉 Docker 部署、消息队列解耦、数据库异步写入等服务化开发经验。
# 项目架构
# 系统整体设计
本项目基于 自己开发的 HTTP 服务框架 (opens new window),在其之上扩展了 AI 聊天服务 与 AI 图像识别服务。整体架构分为三层:
- 客户端层:用户通过浏览器或前端页面发起请求(如登录、聊天、上传图片)。
- 应用服务层:由自研 HTTP 框架承载,整合了 AI 对话服务、AI 图像识别服务、用户管理服务。
- 基础支撑层:由数据库、消息队列、推理引擎及三方 API 组成,为应用层提供持久化、异步处理和模型推理能力。
在整体流程上,用户请求经过 HTTP 服务框架调度,调用对应的 业务 Handler,并通过消息队列、数据库、推理引擎完成 AI 聊天、图像识别等功能,再将结果返回到前端页面。
# 技术架构解读
1、业务服务层
- AI 聊天服务:通过 cURL 调用阿里云百炼 API,实现大语言模型对话。
- AI 图像识别服务:基于 OpenCV + ONNX Runtime 部署轻量级模型,实现图片分类。
- 用户服务:负责登录、注册、登出、会话管理等功能。
2、三方依赖库
- json:C++ JSON 解析
- curl:HTTP 请求封装
- Muduo:高性能网络库
- OpenCV:图像预处理
- SimpleAmqpClient / Base64:用于消息队列通信与图片数据解码
3、基础支撑模块
- MySQL:存储用户信息、聊天记录、图像识别结果
- RabbitMQ:提供异步消息队列,解耦高并发场景下的数据库写入
- ONNX Runtime:执行模型推理,支持轻量化部署(如 MobileNetV2)
4、项目构建与部署
- CMake:统一构建管理
- Docker:提供一键化部署,集成 MySQL、RabbitMQ、OpenCV、ONNX 等环境
# 项目整体流程图
# 项目目录
AIApps
`-- ChatServer
|-- include
| |-- AIUtil
| | |-- AIHelper.h //内部封装curl去访问对阿里的模型
| | |-- ImageRecognizer.h //内部封装openncv等接口进行图像识别操作
| | |-- MQManager.h //封装消息队列有关的线程池(消费者生产者相关函数)
| | `-- base64.h //三方库,用于解码前端传进来的图片base64数据
| |-- ChatServer.h //包装多个业务相关的映射表
| `-- handlers
| |-- AIMenuHandler.h //有关菜单页面
| |-- AIUploadHandler.h //有关图像识别页面
| |-- AIUploadSendHandler.h //有关图像识别业务
| |-- ChatEntryHandler.h //有关登录界面
| |-- ChatHandler.h //有关AI聊天界面
| |-- ChatHistoryHandler.h //有关AI聊天界面的同步历史数据业务
| |-- ChatLoginHandler.h //有关登录界面登录业务
| |-- ChatLogoutHandler.h //有关菜单界面登出业务
| |-- ChatRegisterHandler.h //有关注册界面注册业务
| `-- ChatSendHandler.h //有关AI聊天界面的聊天业务
|-- resource
| |-- AI.html //AI聊天前端页面
| |-- NotFound.html //鉴权失败返回的前端页面
| |-- entry.html //登录前端页面
| |-- menu.html //菜单前端页面
| `-- upload.html //图像识别页面
`-- src
|-- AIUtil
| | |-- AIHelper.cpp //内部封装curl去访问对阿里的模型
| | |-- ImageRecognizer.cpp //内部封装openncv等接口进行图像识别操作
| | |-- MQManager.cpp //封装消息队列有关的线程池(消费者生产者相关函数)
| | `-- base64.cpp //三方库,用于解码前端传进来的图片base64数据
| |-- ChatServer.cpp //包装多个业务相关的映射表
|-- handlers
| |-- AIMenuHandler.cpp //有关菜单页面
| |-- AIUploadHandler.cpp //有关图像识别页面
| |-- AIUploadSendHandler.cpp //有关图像识别业务
| |-- ChatEntryHandler.cpp //有关登录界面
| |-- ChatHandler.cpp //有关AI聊天界面
| |-- ChatHistoryHandler.cpp //有关AI聊天界面的同步历史数据业务
| |-- ChatLoginHandler.cpp //有关登录界面登录业务
| |-- ChatLogoutHandler.cpp //有关菜单界面登出业务
| |-- ChatRegisterHandler.cpp //有关注册界面注册业务
| `-- ChatSendHandler.cpp //有关AI聊天界面的聊天业务
`-- main.cpp //用于线程池、服务初始化
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 更详细内容
本项目专栏依然是只分享在知识星球 (opens new window)里。
详细的 各个文件的讲解:
流程讲解:
AI开发的各种细节
项目难点强调:
简历写法 和 面试问题,做完项目可以直接写到简历上!
# 答疑
本项目在知识星球 (opens new window)里为 文字专栏形式,大家不用担心,看不懂,星球里每个项目有专属答疑群,任何问题都可以在群里问,都会得到解答:
# 获取本项目专栏
本文档仅为星球内部专享,大家可以加入知识星球里获取,在星球置顶一:
加入星球后可以获取全部项目文档和八股资料!。


这里给出10元代金券,领代金券加入,代码随想录知识星球支持三天内(72h)可以全额退款。

加入知识星球后,记得加如下微信,发动付款截图,拉你到星球交流群:
