ai增加模型选择参数
authorhcj <1224667075@qq.com>
Fri, 10 Oct 2025 10:23:02 +0000 (18:23 +0800)
committerhcj <1224667075@qq.com>
Fri, 10 Oct 2025 10:23:02 +0000 (18:23 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp
code/sdk/zhihui/ai_old/ai_old_at_cmd.cpp
code/sdk/zhihui/ai_old/websocket_server_example.cpp
code/sdk/zhihui/ai_old/websocket_server_manager.h
code/sdk/zhihui/utils/custom_cmd_service.c
code/sdk/zhihui/utils/custom_utils.h

index b236bb1..1f7d2a8 100644 (file)
@@ -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
index b236bb1..1f7d2a8 100644 (file)
@@ -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
index 566b6dd..3e40cfd 100644 (file)
@@ -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;
 }
index 6cf53ab..6ae96fd 100644 (file)
@@ -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) {
index d16e8e1..e8ef40e 100644 (file)
@@ -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);
index ba5fe03..8cdedd3 100644 (file)
@@ -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
index e74aa60..bd3d634 100644 (file)
@@ -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);