C++AI大模型接入SDK—快速上手

C++AI大模型接入SDK---ChatSDK编写---快速上手

项目地址:橘子师兄/ai-model-acess-tech - Gitee.com

博客专栏:C++AI大模型接入SDK_橘子师兄的博客-CSDN博客

博主首页:橘子师兄-CSDN博客

ChatSDK支持功能如下:

• 获取支持模型

• 创建会话

• 获取会话列表

• 给模型发送消息,模型响应以全量方式返回

• 给模型发送消息,模型响应以流式方式返回

• 获取历史会话消息

• 删除会话

详细参考使用手册:C++AI大模型接入SDK---ChatSDK使用手册-CSDN博客

使用介绍:

  1. 下载ChatSDK库
  2. 编译并安装libai_chat_sdk库
  3. 在项目中包含 <ai_chat_sdk/chat_sdk.h> 和 ai_chat_sdk 库

具体请详细阅读ChatSDK使用手册,以及仓库中的server案例。

下面快速实现一个基于ChatSDK的使用deepseek的cmd案例,大家看下效果:

c++ 复制代码
#include <iostream>
#include <ai_chat_sdk/chat_sdk.h>
#include <ai_chat_sdk/util/my_logger.h>

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;
    
    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);
    
    ai_chat_sdk::ChatSDK chatSDK;
    
    // 初始化deepseek模型信息
    ai_chat_sdk::ApiConfig deepseekConfig;
    deepseekConfig.api_key = std::getenv("deepseek_apikey");
    deepseekConfig.temperature = 0.7;
    deepseekConfig.max_tokens = 2048;
    deepseekConfig.model_name = "deepseek-chat";
    
    std::vector<std::shared_ptr<ai_chat_sdk::Config>> configs;
    configs.push_back(std::make_shared<ai_chat_sdk::ApiConfig>(deepseekConfig));
    
    // 初始化模型
    chatSDK.initModels(configs);
    
    std::cout << "--------------创建会话--------------" << std::endl;
    std::string sessionId = chatSDK.createSession("deepseek-chat");
    std::cout << "创建会话成功, 会话ID: " << sessionId << std::endl;
    
    int userOp = 1;  // 注意:原代码中变量名不一致,这里统一为userOp
    
    while (true) {
        std::cout << "-------1. send message 0. exit-----------------" << std::endl;
        std::cin >> userOp;
        
        if (userOp == 0) {
            break;
        }
        
        getchar();  // 清除输入缓冲区中的换行符
        sendMessageStream(chatSDK, sessionId);
    }
    
    std::cout << "--------------程序退出--------------" << std::endl;
    return 0;
}

在源码目录下创建CMakeList.txt文件,按照如下规则进行编译:

cmake 复制代码
# 项目名称为AIChatDemo
project(AIChatDemo)
# 设置C++标准,使用C++17标准进行编译,REQUIRED表示编译器如果不支持C++17则报错
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 设置构建类型为Debug
set(CMAKE_BUILD_TYPE Debug)
# 添加可执行文件
add_executable(AIChatDemo cmdChatDemo.cpp)
# 查找OpenSSL包
find_package(OpenSSL REQUIRED)
# 将 OpenSSL 的头文件目录添加到编译器的搜索路径中
include_directories(${OPENSSL_INCLUDE_DIR})
# 设置库的目录,链接器会在这个目录中查找需要的库文件ai_chat_sdk库文件
link_directories(/usr/local/lib)
# 链接SDK
target_link_libraries(AIChatDemo PRIVATE
    ai_chat_sdk
    fmt
    jsoncpp
    OpenSSL::SSL
    OpenSSL::Crypto
    gflags
    spdlog
    sqlite3
)

编译命令:

bash 复制代码
# 构建build目录,并进入build目录
mkdir build && cd build
# 生成构建系统文件
camke ..
# 对程序进行编译
make

运行结果:

复制代码
./AIChatDemo
// ...
--------------创建会话--------------
09:50:44 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/SessionManager.cpp:66 ] create session, session_id:
session_1758016244_00000001, model_name: deepseek-chat
09:50:44 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/DataManager.cpp:106 ] Inserted session:
session_1758016244_00000001
09:50:44 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/ChatSDK.cpp:34 ] create session session_1758016244_00000001
success with model deepseek-chat!!!
创建会话成功, 会话ID: session_1758016244_00000001
--------------发送消息--------------
user消息 > 你是谁?
--------------发送消息完成--------------
09:50:47 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/SessionManager.cpp:123 ] add message to session
session_1758016244_00000001:你是谁?
09:50:48 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/DeepSeekProvider.cpp:179 ] DeepSeekProvider sendMessageStream
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":
{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"我是"},"logprobs":null,"finish_reason":null}]}
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":" Deep"},"logprobs":null,"finish_reason":null}]}
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"Se"},"logprobs":null,"finish_reason":null}]}
data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"ek"},"logprobs":null,"finish_reason":null}]}
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"-V"},"logprobs":null,"finish_reason":null}]}
data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}]}
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}]}
data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"由"},"logprobs":null,"finish_reason":null}]}
buffer: data: {"id":"e4d2b6db-9a30-4088-852ed188d3b34b85","
object":"chat.completion.chunk","created":1758016248,"model":"de
epseekchat","
system_fingerprint":"fp_08f168e49b_prod0820_fp8_kvcache","choices":
[{"index":0,"delta":{"content":"深度"},"logprobs":null,"finish_reason":null}]}
// ...
buffer: data: [DONE]
assistant消息:
--------------接收消息完成--------------
09:50:53 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/ChatSDK.cpp:146 ] chatsdk sendMessageStream end : 我是 DeepSeek-
V3,由深度求索公司打造的智能助手!🤖✨ 我的目标是帮助你解答各类问题,无论是学习、工作,还
是生活中的小困扰,我都会尽力提供有用的信息和建议。有什么想问的,尽管来吧!😊
09:50:53 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/DataManager.cpp:170 ] Updated session timestamp:
session_1758016244_00000001, round 1
09:50:53 [aiChatServer][info ][/home/bit/will/AIModelAcess/ai-modelacess/
sdk/src/ChatSDK.cpp:152 ] Message send and response received for session
session_1758016244_00000001, round 1
--------------发送消息--------------
相关推荐
麒qiqi2 小时前
进阶 IMX6ULL 裸机开发:从 C 语言点灯到 BSP 工程化(附 SDK / 链接脚本实战)
c语言·开发语言
Analog1112 小时前
电子秤采用 SIG5530 国产平替 CS5530
人工智能·嵌入式硬件·目标检测·硬件架构·信号处理·智能硬件
Takoony2 小时前
深度学习多卡训练为什么要求均匀切分?
人工智能·深度学习
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-01-20
数据库·人工智能·经验分享·神经网络·搜索引擎·chatgpt
roamingcode2 小时前
造工具还是雇专家?AI Agent 扩展的黄金法则
人工智能
昨日之日20062 小时前
HeartMuLa - 用AI创作歌曲 输入歌词即可创作音乐 支持50系显卡 一键整合包下载
人工智能
70asunflower2 小时前
SFT(监督微调,Supervised Fine-Tuning)
人工智能·深度学习·机器学习
秋刀鱼程序编程2 小时前
Java基础入门(七)---异常处理
java·开发语言·python
遇见你的雩风2 小时前
Java---多线程(一)
java·开发语言