【AI接入大模型SDK】ChatSDK示例验证
个人主页艾莉丝努力练剑❄专栏传送门《C语言》《数据结构与算法》《C/C干货分享学习过程记录》《Linux操作系统编程详解》《笔试/面试常见算法从基础到进阶》《Python干货分享》⭐️为天地立心为生民立命为往圣继绝学为万世开太平 艾莉丝的简介文章目录ChatSDK 知识体系一、ChatSDK 基础概述二、SDK 部署流程三、核心类层次体系四、核心 API 能力集五、项目集成规范六、常见踩坑与排错1 ~ ChatSDK 基础概述1.1 产品定位1.2 支持模型清单1.3 核心特性2 ~ SDK 编译与安装流程2.1 源码获取2.2 SDK 源码目录结构2.3 标准编译安装步骤2.4 安装路径说明2.5 CMake 安装规则原理3 ~ 核心类体系与 API 规范3.1 类设计关系3.2 ChatSDK 核心 API 详解3.2.1 模型初始化3.2.2 会话管理接口3.2.3 消息交互接口4 ~ 快速上手实战代码4.1 前置要求4.2 完整可运行示例代码5 ~ 项目 CMake 构建配置5.1 CMakeLists.txt 完整配置5.2 编译运行命令5.3 常见构建错误排查结尾ChatSDK 知识体系一、ChatSDK 基础概述定位C17 实现的大模型接入静态库封装 HTTP 请求、会话管理、持久化底层逻辑支持模型云端DeepSeek、GPT-4o、Gemini、本地Ollama DeepSeek R1核心能力多轮对话、流式 / 非流式响应、会话全生命周期管理、SQLite 数据持久化依赖栈OpenSSL、fmt、jsoncpp、spdlog、gflags、sqlite3二、SDK 部署流程源码获取Git 克隆官方仓库构建生成CMake 生成 Makefile Make 编译生成静态库系统安装头文件与静态库安装至系统标准目录三、核心类层次体系顶层入口类ChatSDK统一对外接口管理层LLMManager模型实例管理SessionManager会话生命周期管理DataManagerSQLite 持久化数据管理配置层基类Config派生ApiConfig云端模型、OllamaConfig本地模型数据实体Session、ModelInfo、Message提供者层多态实现基类LLMProvider派生DeepSeekProvider、ChatGPTProvider、GeminiProvider、OllamaDeepSeekProvider四、核心 API 能力集模型初始化initModels会话管理createSession、getSession、getSessionList、deleteSession消息交互sendMessage同步非流式、sendMessageStream异步流式元信息查询getAvailableModels五、项目集成规范头文件引入路径CMake 链接配置规则日志库前置初始化要求六、常见踩坑与排错日志未初始化导致段错误头文件大小写不一致系统依赖库缺失API Key 环境变量未配置CMake 源文件名不匹配1 ~ ChatSDK 基础概述1.1 产品定位ChatSDK 是基于 C 语言封装的大模型接入开发库屏蔽了不同厂商 API 的协议差异、HTTP 通信细节、会话上下文维护与数据持久化逻辑为上层应用提供统一的调用接口。1.2 支持模型清单云端 API 模型deepseek-chat、gpt-4o-mini、gemini-2.0-flash本地部署模型通过 Ollama 接入 deepseek-r1:1.5b1.3 核心特性多轮对话自动维护会话上下文无需开发者手动拼接历史消息双模式响应支持一次性完整返回、流式逐块回调两种响应模式会话管理支持会话创建、查询、删除全生命周期操作持久化存储基于 SQLite 实现会话与消息数据的本地落盘2 ~ SDK 编译与安装流程补充cmake ..描述为 “编译”属于概念错误。因为cmake是构建系统生成工具仅负责生成 Makefile 等构建脚本真正的编译动作由make命令执行。2.1 源码获取仓库地址https://gitee.com/zhibite-edu/ai-model-access-dev.gitgitclone https://gitee.com/zhibite-edu/ai-model-access-dev.git2.2 SDK 源码目录结构SDK 核心代码位于仓库sdk/目录下结构如下sdk/ ├── CMakeLists.txt # CMake构建配置 ├── include/ # 头文件目录 │ ├── chat_sdk.h # 核心入口头文件 │ ├── common.h # 公共数据结构定义 │ ├── ILLMProvider.h # 模型提供者抽象接口 │ ├── LLMManager.h # 模型管理器 │ ├── SessionManager.h # 会话管理器 │ ├── DataManager.h # 数据持久化管理器 │ ├── DeepSeekProvider.h │ ├── ChatGPTProvider.h │ ├── GeminiProvider.h │ ├── OllamaDeepSeekProvider.h │ └── util/my_logger.h # 日志工具 ├── src/ # 核心源文件 └── util/ # 工具类源文件2.3 标准编译安装步骤# 1. 进入sdk源码根目录cdsdk# 2. 创建独立构建目录并进入mkdirbuildcdbuild# 3. 生成Makefile构建脚本非编译cmake..# 4. 执行编译生成静态库 libai_chat_sdk.amake# 5. 安装至系统目录需root权限sudomakeinstall2.4 安装路径说明静态库安装路径/usr/local/lib/libai_chat_sdk.a头文件安装路径/usr/local/include/ai_chat_sdk/2.5 CMake 安装规则原理SDK 的 CMakeLists.txt 通过install指令指定安装行为静态库目标安装至系统lib目录include/下所有.h文件安装至系统include/ai_chat_sdk目录保证头文件路径统一3 ~ 核心类体系与 API 规范3.1 类设计关系组合关系ChatSDK 类内部组合了 LLMManager、SessionManager、Config 三类对象对外提供统一门面继承关系采用策略模式实现多厂商模型适配不同厂商 Provider 继承自 LLMProvider 抽象基类数据实体Session、ModelInfo、Message 为纯数据结构对应业务实体3.2 ChatSDK 核心 API 详解3.2.1 模型初始化bool initModels(const std::vectorstd::shared_ptrConfig configs);功能根据传入的配置列表初始化所有模型实例参数configs为所有模型配置的智能指针数组返回值初始化成功返回true失败返回false3.2.2 会话管理接口// 创建指定模型的会话返回唯一会话ID std::string createSession(const std::string modelName); // 根据会话ID获取会话对象 std::shared_ptrSession getSession(const std::string sessionId); // 获取所有会话的ID列表 std::vectorstd::string getSessionList(); // 删除指定会话及其历史消息 bool deleteSession(const std::string sessionId); // 获取所有已初始化的可用模型列表 std::vectorModelInfo getAvailableModels();3.2.3 消息交互接口非流式发送同步返回std::string sendMessage(const std::string sessionId, const std::string message);阻塞等待模型生成完整回复后一次性返回返回值模型完整响应文本流式发送回调返回std::string sendMessageStream( const std::string sessionId, const std::string message, std::functionvoid(const std::string, bool) callback );模型每生成一段文本即触发一次回调模拟打字效果callback参数第一个参数为当前文本片段第二个参数done标识响应是否结束返回值最终完整的响应文本4 ~ 快速上手实战代码**补充**如果直接运行会触发Segmentation fault核心原因是未初始化 spdlog 日志库。4.1 前置要求已完成 SDK 编译与系统安装已配置环境变量deepseek_apikey存储 API 密钥系统已安装所有依赖库4.2 完整可运行示例代码#include iostream #include string #include vector #include memory #include ai_chat_sdk/chat_sdk.h #include ai_chat_sdk/common.h #include ai_chat_sdk/util/my_logger.h /** * brief 封装流式消息发送与打印 * param chatSDK ChatSDK实例引用 * param sessionId 会话ID */ void sendMessageStream(ai_chat_sdk::ChatSDK chatSDK, const std::string sessionId) { std::cout -----发送消息----- std::endl; std::cout user消息; std::string message; std::getline(std::cin, message); std::cout -----发送消息完成----- std::endl; // 调用流式接口lambda表达式作为回调处理返回 chatSDK.sendMessageStream(sessionId, message, [](const std::string response, bool done){ std::cout assistant消息: response std::endl; if(done){ std::cout -----接收消息完成----- std::endl; } }); } int main(int argc, char* argv[]) { // 【必须步骤】初始化日志库否则直接触发段错误 bite::Logger::init_logger(aiChatServer, stdout, spdlog::level::info); // 1. 创建ChatSDK核心实例 ai_chat_sdk::ChatSDK chatSDK; // 2. 配置DeepSeek模型参数 ai_chat_sdk::ApiConfig deepseekConfig; deepseekConfig.api_key std::getenv(deepseek_apikey); // 从环境变量读取密钥 deepseekConfig.temperature 0.7; // 采样温度值越高随机性越强 deepseekConfig.max_tokens 2048; // 单次响应最大token数 deepseekConfig.model_name deepseek-chat; // 3. 组装配置数组支持同时配置多个模型 std::vectorstd::shared_ptrai_chat_sdk::Config configs; configs.push_back(std::make_sharedai_chat_sdk::ApiConfig(deepseekConfig)); // 4. 初始化所有模型 chatSDK.initModels(configs); // 5. 创建会话 std::cout -----创建会话----- std::endl; std::string sessionId chatSDK.createSession(deepseek-chat); std::cout 创建会话成功会话ID: sessionId std::endl; // 6. 主交互循环 int userOp 1; while(true){ std::cout -------1.send message 0.exit------- std::endl; std::cin userOp; if(userOp 0){ break; } getchar(); // 消化输入缓冲区残留的换行符避免getline读空 sendMessageStream(chatSDK, sessionId); } std::cout -----程序退出----- std::endl; return 0; }5 ~ 项目 CMake 构建配置5.1 CMakeLists.txt 完整配置cmake_minimum_required(VERSION 3.10) project(AIChatDemo) # 强制使用C17标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 设置构建类型为Debug set(CMAKE_BUILD_TYPE Debug) # 添加可执行目标源文件名必须与实际文件一致 add_executable(AIChatDemo chatDemo.cpp) # 查找并引入OpenSSL依赖 find_package(OpenSSL REQUIRED) include_directories(${OPENSSL_INCLUDE_DIR}) # 指定系统库搜索路径确保能找到安装的ai_chat_sdk link_directories(/usr/local/lib) # 链接所有依赖库 target_link_libraries(AIChatDemo PRIVATE ai_chat_sdk # ChatSDK静态库 fmt jsoncpp OpenSSL::SSL OpenSSL::Crypto gflags spdlog sqlite3 )5.2 编译运行命令# 在项目根目录创建构建目录mkdirbuildcdbuild# 生成构建文件cmake..# 编译生成可执行文件make# 运行程序需提前配置deepseek_apikey环境变量./AIChatDemo5.3 常见构建错误排查源文件找不到add_executable中指定的文件名必须与实际源文件名完全一致大小写敏感依赖库缺失需提前通过系统包管理器安装libssl-dev、libfmt-dev、libjsoncpp-dev、libspdlog-dev、libgflags-dev、libsqlite3-dev链接不到 SDK确保已执行sudo make install且link_directories路径正确结尾uu们本文的内容到这里就全部结束了艾莉丝在这里再次感谢您的阅读艾莉丝努力练剑C/C Linux 底层探索者 | 一个正在努力练剑的技术博主【关注】跟随我一起深耕技术领域见证每一次成长。❤️【点赞】让优质内容被更多人看见让知识传递更有力量。⭐【收藏】把核心知识点存好在需要时随时查、随时用。【评论】分享你的经验或疑问评论区一起交流避坑不要忘记给博主“一键四连”哦“今日练剑达成”“技术之路难免有困惑但同行的人会让前进更有方向。”结语希望对学习Linux相关内容的uu有所帮助不要忘记给博主“一键四连”哦往期回顾【AI接入大模型SDK】Trae IDE开发环境搭建指南博主在这里放了一只小狗大家看完了摸摸小狗放松一下吧૮₍ ˶ ˊ ᴥ ˋ˶₎ა

相关新闻

Falco:Kubernetes运行时安全守护者——内核态监控与异常行为检测实战解析

Falco:Kubernetes运行时安全守护者——内核态监控与异常行为检测实战解析

一、Falco技术架构与内核态监控原理Falco作为CNCF毕业的云原生运行时安全项目,通过eBPF技术实现了对Kubernetes集群中Pod异常行为的内核态监控。其技术原理基于Linux内核的eBPF(扩展伯克利包过滤器)机制,能够在不修改内核源码的前…

2026/8/22 17:13:53 阅读更多 →
计算机毕业设计之无人驾驶出租车注册管理系统

计算机毕业设计之无人驾驶出租车注册管理系统

随着无人驾驶技术的快速发展,无人驾驶出租车已成为智能交通体系的重要组成部分。全球范围内,包括Waymo、Uber、NuTonomy等企业已率先开展无人驾驶出租车的商业化运营,中国如百度等企业也在北京、长沙等城市落地试点项目。技术层面&#xff0c…

2026/8/22 17:13:53 阅读更多 →
K-Means、KNN、SVM三大算法原理与实战:从黑盒到白盒的建模指南

K-Means、KNN、SVM三大算法原理与实战:从黑盒到白盒的建模指南

1. 从“黑盒”到“白盒”:为什么我们需要通俗理解算法干了这么多年数学建模,带过不少队伍,我发现一个特别普遍的现象:很多同学一看到算法名字,比如SVM、K-Means,第一反应就是去搜代码,然后想办法…

2026/8/22 17:13:53 阅读更多 →

最新新闻

Vue 3组件定义方式全解析:从选项式到组合式API的实战演进

Vue 3组件定义方式全解析:从选项式到组合式API的实战演进

1. 从“选项”到“组合”:Vue 3组件定义方式的演进背景如果你是从Vue 2时代过来的开发者,或者正在学习Vue 3,那么“如何定义一个组件”这个问题,可能比你想象的要复杂和有趣得多。在Vue 2的世界里,答案几乎是唯一的&am…

2026/8/24 3:32:11 阅读更多 →
3 步跑通 Word/Excel/PDF 文档处理技能

3 步跑通 Word/Excel/PDF 文档处理技能

3 步跑通 Word/Excel/PDF 文档处理技能 【免费下载链接】awesome-agent-skills A curated collection of 1000 agent skills from official dev teams and the community, compatible with Claude Code, Codex, Gemini CLI, Cursor, and more. 项目地址: https://gitcode.com…

2026/8/24 3:32:11 阅读更多 →
UniBest 快速上手指南:一套代码跑通 H5、微信小程序、App(完整版)

UniBest 快速上手指南:一套代码跑通 H5、微信小程序、App(完整版)

UniBest 快速上手指南:一套代码跑通 H5、微信小程序、App(完整版) 【免费下载链接】unibest unibest - 最好用的 uniapp 开发框架。unibest 是由 uniapp Vue3 Ts Vite4 UnoCss UniUI 驱动的跨端快速启动模板,使用 VS Code 开…

2026/8/24 3:32:11 阅读更多 →
2026 新款女生蓝牙耳机实测|小耳道久戴不痛降噪 TWS 选购测评

2026 新款女生蓝牙耳机实测|小耳道久戴不痛降噪 TWS 选购测评

CSDN 摘要:本文针对 2026 新款女生蓝牙耳机展开实测测评,聚焦女生小耳道佩戴痛点,基于第三方实验室检测数据,从佩戴体验、降噪能力、音质表现、续航、多场景实际表现,测评梵洛音 CZA06、华为 FreeBuds 7i、vivo TWS3 P…

2026/8/24 3:32:11 阅读更多 →
VMware vCenter Converter 6.4:P2V/V2V迁移实战与疑难解析

VMware vCenter Converter 6.4:P2V/V2V迁移实战与疑难解析

1. 项目概述:物理到虚拟的桥梁如果你手头有一台老旧的物理服务器,或者是从其他虚拟化平台(比如Hyper-V)迁移过来的虚拟机,想要把它们无缝整合到VMware vSphere的环境里,那么“VMware vCenter Converter Sta…

2026/8/24 3:32:11 阅读更多 →
8G显存本地部署LTX2.5:基于ComfyUI的AI视频生成整合包实战指南

8G显存本地部署LTX2.5:基于ComfyUI的AI视频生成整合包实战指南

在实际 AI 视频生成领域,从文本或图像生成高质量视频正成为内容创作、产品演示和创意表达的重要工具。然而,对于许多开发者和技术爱好者而言,部署和运行一个功能完整的 AI 视频生成环境并非易事,常常面临显存要求高、依赖复杂、配…

2026/8/24 3:31:11 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →