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
--------------发送消息--------------
相关推荐
ShineWinsu35 分钟前
对于C++:auto_ptr、unique_ptr、shared_ptr的模拟实现
c++·面试·笔试·智能指针·unique_ptr·shared_ptr·auto_ptr
驴友花雕1 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
hsjiasb1 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff2 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘2 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路2 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
火山引擎开发者社区2 小时前
DeepSeek-V4 Pro 发布,veStack Day 0 完成模型适配
人工智能
2501_926978332 小时前
AGI 的四种瓶颈:资源型还是发现型--以及DSH的位置
人工智能·经验分享·笔记·ai写作
Q463913493 小时前
线下销售复盘难落地,AI 会话设备能帮上啥忙
人工智能·自然语言处理
ebok.3 小时前
国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台
大数据·人工智能·低代码·ai