【实战项目】从零实现c++ai大模型接入SDK(三)环境的安装与chatSDK快速上手
·
目录
一、开发环境介绍
随着⼈⼯智能技术的⻜速发展,AI编程助⼿类的插件和IDE如⾬后春笋般涌现,为开发者提供强⼤的代码⽣成、智能补全、错误检测和修复等功能,显著提⾼了开发效率。
AI编程插件:
|
插件名称
|
形态
|
核⼼功能
|
|
Github
Copilot
|
⽀持VS Code、JetBrains IDEs等
|
实时代码补全、Copilot Chat、多语⾔⽀持、上下⽂感知、智能代理、测试⽣成
|
|
Fitten Code
|
⽀持VSCode/JetBrains等
|
代码补全、Bug检测、注释⽣成、单元测试⾃动⽣成
|
|
Cline
|
VS Code插件
|
项⽬级⽂件读写操作、命令⾏任务执⾏、浏览器环境集成、基于权限的⾏动确认系统、任务链编排能⼒
|
|
通义灵码
|
插件(VSCode/JetBrains)+ 独⽴IDE
|
多⽂件代码修改、MCP⼯具链调⽤、⾏间会话、个性化记忆体系
|
基于命令⾏终端的AI编程⼯具
|
⼯具名称
|
核⼼功能
|
模型⽀持
|
|
Claude
Code
|
复杂的推理与分析:擅⻓ ⽂档阅读、摘要、逻辑推理
代码⽣成与解释:能⽣成、审查和解释代码,强调代码的安全性和可靠性
⻓上下⽂窗⼝(最⾼⽀持200K):可处理整个代码库的⽂件⾃然语⾔对话
|
Claude 4系列
|
|
Gemini CLI
|
终端内对话:在命令⾏中直接与Gemini模型交互
代码⽣成与帮助:⽣成代码⽚段、解释错误
⽂本处理:起草邮件、⽣成内容等通⽤任务
多模态⽀持:CLI可传输⽂件,未来可能⽀持图像分析
|
Gemini-2.5-pro
|
编程IDE⼯具
| IDE名称 | 核⼼功能 | 模型⽀持 |
|
codex
| 项目级代码理解、代码生成、代码修改、Bug定位与修复、自动重构、代码审查、运行测试、终端操作、多文件协同开发、Git辅助、工程任务自动执行 | 主流大模型都支持(接入api key就行) |
|
Cursor
|
代码⾃动⽣成、智能补全、Bug检测与修复、⽂档⽣成、多⽂件编辑、⾃然语⾔命令、VS Code兼容
|
集成Claude、GPT、 Gemini等多个模型
|
|
IDX
|
基于云的VSCode体验、深度集成Gemini模型进⾏代码补全和聊天、内置Android模拟器和Firebase⽀持、轻松预览和部署全栈应用
|
深度集成并优化Gemini模型家族
|
|
Kiro
|
兼容vscode、需求管理、⾃动化开发、集成与扩展、⽤⼾体验、预览代码修改、即时撤销修改、Agentic Chat
|
免费使⽤Claude-Sonnet和Claude-Opus-4模型
|
|
Trae
|
多模态交互、上下⽂理解引擎、智能体模式、全流程⾃动化、智能代码⽣成与优化
|
集成DeepSeek、
Doubao、Kimi、Qwen等模型
|
|
Qoder
|
代码库全景理解、智能结对编程、Quest模式、增强上下⽂⼯程、⻓短期记忆系统
|
⽀持Claude、GPT、
Gemini等模型
|
|
CodeBudd
y
|
智能代码补全、AI设计⽣成、设计稿转代码、AI全栈开发、内置腾讯云CloudeBase和Supabase服务、⼀键部署分享
|
内置腾讯混元、DeepSeek
等多种模型
|
虽然说有AI编程助⼿,但还是要求同学们打基础阶段(语⾔+数据结构+操作系统+⽹络+数据库硬通货),⾃⼰多动⼿敲代码减少AI辅助,等编程能⼒上来,⽐如能熟练独⽴开开发项⽬,再考虑让AI提效。
这些AI编程IDE基本都是基于vscode开发,功能使⽤上基本⼤同⼩异,本项⽬选择字节的Trae IDE⼯具开发,主要是在国内是免费的。
二、trae介绍
Trae IDE是基于vscode内核开发的,与AI深度集成,提供智能问答、代码⾃动补全以及基于Agent的AI⾃动编程能⼒。使⽤Trae开发项⽬,可以给AI灵活协作,提升开发效率。
trae官网:TRAE - Collaborate with Intelligence
trae使用手册:什么是 TRAE IDE? - 文档 - TRAE
trae下载:Download Center | TRAE - Collaborate with Intelligence
下载下来后,安装时⼀路next即可。
Trae⽀持远程资源管理功能(Remote SSH),允许直接访问和操控远程主机,⽆需额外配置。
打开Trae后,直接选择连接连接远程主机,输⼊
ssh
⽤⼾名
@ip
和密码即可。我这里连过,就不演示了。连的是Ubuntu。

如果没有这个图标的,看下图:选择第一个。

登录成功之后,需要安装clangd和CMake Tools插件,注意:这些插件是安装在远程主机上。
安装clangd插件,clangd是⼀款在Trae、VScode等编辑器中,⽤来开发C/C++程序的插件,⽀持:语法⾼亮、代码补全、实时错误检查(语法错误、类型不匹配、符号未定义等)、代码导航(快速跳转到变量/函数定义)、⽂档提⽰(⿏标悬停在函数名上会显⽰函数签名、注释⽂档)等。
在插件管理器中搜索"clangd",然后安装:

在插件管理器中搜索"CMake Tools",然后安装:

Trae需要通过插件实现与CMake的集成,包括⽣成构建⽂件、选择编译器等功能。
三、第三方库的使用
- gflags
- spdlog
- cppjson
- cpp-httplib
- gtest
安装:没有成功的运行一下这个sudo apt update
# gflags 安装
dev@dev-host:~/workspace$ sudo apt-get install libgflags-dev
# spdlog 安装
dev@dev-host:~/workspace$ sudo apt-get install libspdlog-dev
# fmt 安装
dev@dev-host:~/workspace$ sudo apt-get install fmt
# jsoncpp 安装
dev@dev-host:~/workspace$ sudo apt-get install libjsoncpp-dev
# gtest 安装
dev@dev-host:~/workspace$ sudo apt-get install libgtest-dev
# ssl 安装
dev@dev-host:~/workspace$ sudo apt-get install libssl-dev
# 安装 cmake
dev@dev-host:~/workspace$ sudo apt-get install cmake
# 安装pkg-config,⽤于帮助编译时查找库⽂件(⽐如头⽂件的位置、链接选型)的⼯具
dev@dev-host:~/workspace$ sudo apt install pkg-config
# 安装curl⼯具
dev@dev-host:~/workspace$ sudo apt install curl
# httplib下载
dev@dev-host:~/workspace$ git clone https://github.com/yhirose/cpp-httplib.git
# 注意:cpp-httplib是header-only库,只需要⼀个头⽂件,在项⽬中只需时只需要包含该头⽂件即可
# 我的cpp-httplib库下载在跟⽬录下
cailo@VM-0-17-ubuntu:~$ ls
bash_history c-and-linux code disk.img gitcode lesson1 test
cailo cmakegit cpp-httplib gdb gitcode1 my_cmake_app test_db
cailo@VM-0-17-ubuntu:~$ cd cpp-httplib
cailo@VM-0-17-ubuntu:~/cpp-httplib$ ls
benchmark Dockerfile httplib.h README.md split.py
cmake docs-src justfile README-sse.md test
CMakeLists.txt docs-util LICENSE README-stream.md
docker example meson.build README-websocket.md
docker-compose.yml generate_module.py meson_options.txt scripts
cailo@VM-0-17-ubuntu:~/cpp-httplib$ sudo cp httplib.h /usr/include
我们最后将httplib.h 拷贝到/usr/include里面就行,这样写头文件的时候程序就能直接找到。
四、快速上手chatSDK
我们现在当前家目录下面创建两个文件一个是SDK-source另一个是SDKDemo。

创建好之后我们就进入SDK-source输入以下命令,进行克隆仓库。
https://gitee.com/zhibite-edu/ai-model-acess-tech.git
然后就一路运行以下命令。

4.1 目录结构
.
├── sdk # sdk的源码
│ ├── CMakeLists.txt
│ ├── include
│ │ ├── ChatGPTProvider.h
│ │ ├── chat_sdk.h
│ │ ├── common.h
│ │ ├── dataManager.h
│ │ ├── DeepSeekProvider.h
│ │ ├── GeminiProvider.h
│ │ ├── ILLMProvider.h
│ │ ├── LLMManager.h
│ │ ├── OllamaDeepSeekProvider.h
│ │ ├── session_manager.h
│ │ └── util
│ │ └── my_logger.h
│ ├── src
│ ├── ChatGPTProvider.cpp
│ ├── chat_sdk.cpp
│ ├── DataManager.cpp
│ ├── DeepSeekProvider.cpp
│ ├── GeminiProvider.cpp
│ ├── LLMManager.cpp
│ ├── OllamaDeepSeekProvider.cpp
│ ├── session_manager.cpp
│ └── util
│ └── my_logger.cpp
├── build
进⼊
sdk
所在⽬录,然后执⾏如下命令:
> mkdir build && cd build # 创建 build ⽬录并进⼊该⽬录> cmake .. # 编译 ChatSDK ,⽣成 libai_chat_sdk.a 静态库> sudo make install
静态库安装在:
/usr/local/lib
头⽂件安装位置:
/usr/local/include/ai_chat_sdk
4.2 使用说明
4.2.1 关系类

4.2.3 ChatSDK使用介绍
在程序中使⽤ChatSDK库时,主要通过ChatSDK类与库交互。该库中涉及到的成员介绍如下:
|
Header : #include<ai_chat_sdk/ChatSDK.h>
|
|
CMake : target_link_libraries({ProjName} PRIVATE ai_chat_sdk)
|
public Functions
bool initModels(const std::vector<std::shared_ptr<Config>>& configs)功能:初始化所⽀持的模型参数:configs - 所有⽀持的模型需配置的参数返回值:初始化成功返回ture,否则返回false
std::shared_ptr<Session> getSession(const std::string& sessionId)功能:获取sessionId对应的会话信息参数:sessionId - 会话Id返回值:sessionId对应的会话信息
std::vector<std::string> getSessionList()功能:获取所有会话信息返回值:返回所有会话信息
std::vector<ModelInfo> getAvailableModels()功能:获取⽀持的所有模型返回值:返回⽀持的所有模型
bool deleteSession(const std::string& sessionId)功能:删除sessionId对应的会话信息参数:sessionId - 会话Id返回值:删除成功返回true,否则返回false
std::string sendMessage(const std::string sessionId, const std::string& message)功能:给⼤模型发送消息,⼤模型⽣成所有回复后⼀次性返回参数:sessionId - 会话Idmessage - 给⼤模型发送的消息内容返回值:返回⼤模型的完整回复
std::string sendMessageStream(const std::string sessionId, conststd::string& message, std::function<void(const std::string&, bool)>callback)功能:给⼤模型发送消息,⼤模型⽣成⼀点返回⼀点,即流式响应参数:sessionId - 会话Idmessage - 给⼤模型发送的消息内容callback - ⼤模型返回消息⽤⼾处理回到函数返回值:返回⼤模型的完整回复
相关数据结构请查看
sdk/include/common.h
⽂件
更多推荐
所有评论(0)