From 659317546ba229dbfed8d9d31ee158e23ed82bef Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Fri, 10 Oct 2025 18:23:02 +0800 Subject: [PATCH] =?utf8?q?ai=E5=A2=9E=E5=8A=A0=E6=A8=A1=E5=9E=8B=E9=80=89?= =?utf8?q?=E6=8B=A9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/aivoice/src/AiVoicePresenter.cpp | 4 +-- .../nativeui/aivoice/src/AiVoicePresenter.cpp | 4 +-- code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp | 2 +- .../ai_old/websocket_server_example.cpp | 36 +++++++++++++------ .../zhihui/ai_old/websocket_server_manager.h | 4 ++- code/sdk/zhihui/utils/custom_cmd_service.c | 24 ++++++++++--- code/sdk/zhihui/utils/custom_utils.h | 2 +- 7 files changed, 54 insertions(+), 22 deletions(-) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp index b236bb1fc..1f7d2a801 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp @@ -505,7 +505,7 @@ namespace OHOS // init_ai_task(AiVoiceModel::GetInstance().GetCurUsing4GAiModelType()); #ifdef SUPPORT_AI_SERVICE uapi_init_all_websocket_servers(); - uapi_start_all_websocket_servers(); // 连接服务器 + uapi_start_all_websocket_servers(0); // 连接服务器 #endif /* -------------------------------------------------------------------------- */ model->start_ai4g_connect_timer(); @@ -549,7 +549,7 @@ namespace OHOS // init_ai_task(AiVoiceModel::GetInstance().GetCurUsing4GAiModelType()); #ifdef SUPPORT_AI_SERVICE uapi_init_all_websocket_servers(); - uapi_start_all_websocket_servers(); // 连接服务器 + uapi_start_all_websocket_servers(0); // 连接服务器 #endif model->start_ai4g_connect_timer(); ChangeViewAndLogicOperator(model->GetCurView(), AIVOICE_4GSERVICECON_VIEW); // LOADING diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp index b236bb1fc..1f7d2a801 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp @@ -505,7 +505,7 @@ namespace OHOS // init_ai_task(AiVoiceModel::GetInstance().GetCurUsing4GAiModelType()); #ifdef SUPPORT_AI_SERVICE uapi_init_all_websocket_servers(); - uapi_start_all_websocket_servers(); // 连接服务器 + uapi_start_all_websocket_servers(0); // 连接服务器 #endif /* -------------------------------------------------------------------------- */ model->start_ai4g_connect_timer(); @@ -549,7 +549,7 @@ namespace OHOS // init_ai_task(AiVoiceModel::GetInstance().GetCurUsing4GAiModelType()); #ifdef SUPPORT_AI_SERVICE uapi_init_all_websocket_servers(); - uapi_start_all_websocket_servers(); // 连接服务器 + uapi_start_all_websocket_servers(0); // 连接服务器 #endif model->start_ai4g_connect_timer(); ChangeViewAndLogicOperator(model->GetCurView(), AIVOICE_4GSERVICECON_VIEW); // LOADING diff --git a/code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp b/code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp index 566b6dd53..3e40cfd29 100644 --- a/code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp +++ b/code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp @@ -352,7 +352,7 @@ static uint32_t startserver(uint8_t *para, uint32_t paraLen, char *strCommonCmd) } #ifdef SUPPORT_AI_SERVICE init_all_websocket_servers(); - start_all_websocket_servers(); + start_all_websocket_servers(0); #endif return 0; } diff --git a/code/sdk/zhihui/ai_old/websocket_server_example.cpp b/code/sdk/zhihui/ai_old/websocket_server_example.cpp index 6cf53aba5..6ae96fdf4 100644 --- a/code/sdk/zhihui/ai_old/websocket_server_example.cpp +++ b/code/sdk/zhihui/ai_old/websocket_server_example.cpp @@ -34,6 +34,19 @@ static ws_server_handle_t *g_asr_server = NULL; static ws_server_handle_t *g_tts_server = NULL; static ws_server_handle_t *g_chat_server = NULL; +/* 全局AI类型变量 */ +static uint8_t g_chat_ai_type = 0; // 默认AI类型 + +/** + * @brief 设置Chat AI类型 + * @param ai_type AI类型 (0=默认, 1=九天蓝, 2=火山, 3=百度, 4=月之暗面, 5=其他) + */ +void set_chat_ai_type(uint8_t ai_type) +{ + g_chat_ai_type = ai_type; + printf("Chat AI type set to: %d\n", ai_type); +} + static uint8_t asr_is_ready=0; tts_ready_status_t tts_is_ready = TTS_READY_NOT_SENT; @@ -420,18 +433,17 @@ bool chat_url_callback(ws_server_type_t type, char *url_buf, uint32_t url_size, get_dev_id(device_id); char *product_id = "1927646275585744898"; - // 根据AI类型选择不同的URL - uint8_t *ai_type = (uint8_t *)user_data; - if (ai_type && *ai_type == 1) { // AI_TYPE_JIU + // 根据全局AI类型选择不同的URL + if (g_chat_ai_type == 1) { // AI_TYPE_JIU snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?device_id=%s&product_id=%s&platform=chinamobiledevice&bot_type=jiutian-lan", device_id, product_id); - } else if (ai_type && *ai_type == 2) { // AI_TYPE_DOU + } else if (g_chat_ai_type == 2) { // AI_TYPE_DOU snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?platform=huoshan"); - } else if (ai_type && *ai_type == 3) { // AI_TYPE_WEN + } else if (g_chat_ai_type == 3) { // AI_TYPE_WEN snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?platform=baidu"); - } else if (ai_type && *ai_type == 4) { // AI_TYPE_KIMI + } else if (g_chat_ai_type == 4) { // AI_TYPE_KIMI snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?platform=moonshot"); - } else if (ai_type && *ai_type == 5) { // AI_TYPE_DE + } else if (g_chat_ai_type == 5) { // AI_TYPE_DE snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?platform=huoshan&model=ep-20250205103849-582m7"); } else { snprintf(url_buf, url_size, "ws://118.145.158.207:22080/chat/ws?platform=aliyun"); @@ -457,9 +469,8 @@ errcode_t init_all_websocket_servers(void) ws_server_register_url_callback(WS_SERVER_TYPE_ASR, asr_url_callback, NULL); ws_server_register_url_callback(WS_SERVER_TYPE_TTS, tts_url_callback, NULL); - // Chat服务器需要AI类型参数 - static uint8_t chat_ai_type = 0; // 默认类型 - ws_server_register_url_callback(WS_SERVER_TYPE_CHAT, chat_url_callback, &chat_ai_type); + // Chat服务器使用全局AI类型变量 + ws_server_register_url_callback(WS_SERVER_TYPE_CHAT, chat_url_callback, NULL); // 创建ASR服务器 ws_server_config_t asr_config = ws_server_get_default_config(WS_SERVER_TYPE_ASR); @@ -531,10 +542,13 @@ static void AIVoiceDataCallback_(const uint8_t* data, uint32_t size, void* userD /** * @brief 启动所有WebSocket服务器 */ -errcode_t start_all_websocket_servers(void) +errcode_t start_all_websocket_servers(uint8_t chat_ai_type) { errcode_t ret; + // 设置全局AI类型 + g_chat_ai_type = chat_ai_type; + // 启动ASR服务器 ret = ws_server_start(g_asr_server); if (ret != ERRCODE_SUCC) { diff --git a/code/sdk/zhihui/ai_old/websocket_server_manager.h b/code/sdk/zhihui/ai_old/websocket_server_manager.h index d16e8e162..e8ef40e33 100644 --- a/code/sdk/zhihui/ai_old/websocket_server_manager.h +++ b/code/sdk/zhihui/ai_old/websocket_server_manager.h @@ -232,10 +232,12 @@ bool ws_server_create_url(ws_server_handle_t *handle, char *url_buf, uint32_t url_size); -errcode_t start_all_websocket_servers(void); +errcode_t start_all_websocket_servers(uint8_t chat_ai_type); errcode_t init_all_websocket_servers(void); +void set_chat_ai_type(uint8_t ai_type); + void stop_all_websocket_servers(void); diff --git a/code/sdk/zhihui/utils/custom_cmd_service.c b/code/sdk/zhihui/utils/custom_cmd_service.c index ba5fe03a6..8cdedd31c 100644 --- a/code/sdk/zhihui/utils/custom_cmd_service.c +++ b/code/sdk/zhihui/utils/custom_cmd_service.c @@ -426,8 +426,14 @@ case CUSTOM_CMD_MSG_START_AI_ASR: case CUSTOM_CMD_MSG_START_ALL_WEBSOCKET_SERVERS: #ifdef SUPPORT_AI_SERVICE - start_all_websocket_servers(); - PRINT("All WebSocket servers started via custom cmd\n"); + { + uint8_t ai_type = 0; // 默认AI类型 + if (mail.data[0] != 0) { + ai_type = mail.data[0]; // 使用传入的AI类型 + } + start_all_websocket_servers(ai_type); + PRINT("All WebSocket servers started via custom cmd with AI type: %d\n", ai_type); + } #else PRINT("WebSocket service not supported\n"); #endif @@ -546,10 +552,11 @@ void uapi_stop_AI_asr(void) #ifdef SUPPORT_AI_SERVICE /** * @brief 启动所有WebSocket服务器 + * @param ai_type AI类型 (0=默认, 1=九天蓝, 2=火山, 3=百度, 4=月之暗面, 5=其他) */ -void uapi_start_all_websocket_servers(void) +void uapi_start_all_websocket_servers(uint8_t ai_type) { - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_START_ALL_WEBSOCKET_SERVERS, NULL, 0); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_START_ALL_WEBSOCKET_SERVERS, &ai_type, 1); } /** @@ -575,5 +582,14 @@ void uapi_destroy_all_websocket_servers(void) { do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_DESTROY_ALL_WEBSOCKET_SERVERS, NULL, 0); } + +/** + * @brief 设置Chat AI类型 + * @param ai_type AI类型 (0=默认, 1=九天蓝, 2=火山, 3=百度, 4=月之暗面, 5=其他) + */ +void uapi_set_chat_ai_type(uint8_t ai_type) +{ + set_chat_ai_type(ai_type); +} #endif #endif \ No newline at end of file diff --git a/code/sdk/zhihui/utils/custom_utils.h b/code/sdk/zhihui/utils/custom_utils.h index e74aa6065..bd3d6349e 100644 --- a/code/sdk/zhihui/utils/custom_utils.h +++ b/code/sdk/zhihui/utils/custom_utils.h @@ -277,7 +277,7 @@ void uapi_stop_AI_asr(void); #endif #ifdef SUPPORT_AI_SERVICE -void uapi_start_all_websocket_servers(void); +void uapi_start_all_websocket_servers(uint8_t ai_type); void uapi_init_all_websocket_servers(void); void uapi_stop_all_websocket_servers(void); void uapi_destroy_all_websocket_servers(void); -- 2.17.1