AI 数字人

更新时间: 2025/08/04 13:48:46

网易云信即时通讯 SDK(NetEase IM SDK,以下简称 NIM SDK)提供 AI 数字人。数字人既可以是虚拟的 AI 对话伙伴、高效的协同工作助手、也可定制贴合业务所需更高安全性的本地大模型。

本文介绍 AI 数字人相关的 API。更多详情,请参考《集成开发》AI 数字人

支持平台

本文内容适用的开发平台或框架如下表所示:

Android iOS macOS/Windows Web/uni-app/小程序 Node.js/Electron HarmonyOS
✔️️ ✔️️ ✔️️ ✔️️ ✔️️ ✔️️

API 概览

AI 数字人监听

Android/iOS/macOS/Windows
API 说明 起始版本
addAIListener 注册 AI 数字人相关监听器 v10.3.0
removeAIListener 移除 AI 数字人相关监听器 v10.3.0
Web/uni-app/小程序/Node.js/Electron/HarmonyOS
API 说明 起始版本
on("EventName") 注册 AI 数字人相关监听 v10.3.0(对应 HarmonyOS v10.6.0)
off("EventName") 取消注册 AI 数字人相关监听 v10.3.0(对应 HarmonyOS v10.6.0)

AI 数字人操作

API 说明 起始版本
getAIUserList 根据用户账号 ID 列表获取 AI 数字人 v10.3.0(对应 HarmonyOS v10.6.0)
proxyAIModelCall AI 数字人向 LLM 发起查询请求 v10.3.0(对应 HarmonyOS v10.6.0)
sendMessage AI 数字人发送消息 v10.2.0(对应 HarmonyOS v10.6.0)
stopAIModelStreamCall 停止 AI 流式输出请求 v10.8.30

接口类

V2NIMAIService 类提供 AI 数字人相关接口,包括查询数字人、LLM 模型请求、添加 AI 数字人监听、移除 AI 数字人监听。

addAIListener

接口描述

注册添加 AI 数字人的监听器。注册成功后,当聊天会话中添加了 AI 数字人后,SDK 会返回对应的回调。

  • 建议在初始化后调用该接口。

  • 全局只需注册一次。

参数说明

Android
Java/**
 * 添加 AI 监听
 * @param listener
 */
void addAIListener(V2NIMAIListener listener);
iOS
Objective-C//AI 消息的响应的回调
- (void)onProxyAIModelCall:(V2NIMAIModelCallResult *)data;
//AI 透传接口的流式响应的回调
- (void)onProxyAIModelStreamCall:(V2NIMAIModelStreamCallResult *)data;
/**
 * 添加数字人监听器
 *
 * @param listener 消息监听回调
 */
- (void)addAIListener:(id<V2NIMAIListener>)listener;
macOS/Windows
C++// AI 回调
struct V2NIMAIListener {
    nstd::function<void(const V2NIMAIModelCallResult& response)> onProxyAIModelCall;
    nstd::function<void(const V2NIMAIModelStreamCallResult& response)> onProxyAIModelStreamCall;
};
// 添加数字人监听器
virtual void addAIListener(V2NIMAIListener listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMAIListener AI 数字人相关监听器。

示例代码

Android
JavaV2NIMAIListener listener = new V2NIMAIListener() {
    /**
     * AI 消息的响应的回调
     *
     * @param result 本次响应的结构体
     */
    @Override
    public void onProxyAIModelCall(V2NIMAIModelCallResult result) {
        // do something
    }
    /**
     * AI 透传接口的流式响应的回调
     *
     * @param result 本次响应的结构体
     */
    @Override
    public void onProxyAIModelStreamCall(V2NIMAIModelStreamCallResult result) {
        // do something
    }
};

NIMClient.getService(V2NIMAIService.class).addAIListener(listener);
iOS
Objective-C[NIMSDK.sharedSDK.v2AIService addAIListener:self];
macOS/Windows
C++auto& aiService = v2::V2NIMClient::get().getAIService();
aiService.addAIListener(aiListener);

返回参数

无。

removeAIListener

接口描述

移除 AI 数字人监听器。

参数说明

Android
Java/**
 * 移除 AI 监听
 * @param listener
 */
void removeAIListener(V2NIMAIListener listener);
iOS
Objective-C/**
 * 删除数字人监听器
 *
 * @param listener 消息监听回调
 */
- (void)removeAIListener:(id<V2NIMAIListener>)listener;
macOS/Windows
C++virtual void removeAIListener(V2NIMAIListener listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMAIListener AI 数字人相关监听器。

示例代码

Android
JavaNIMClient.getService(V2NIMAIService.class).removeAIListener(listener);
iOS
Objective-C[NIMSDK.sharedSDK.v2AIService removeAIListener:self];
macOS/Windows
C++auto& aiService = v2::V2NIMClient::get().getAIService();
aiService.removeAIListener(aiListener);

返回参数

无。

on("EventName")

接口描述

注册添加 AI 数字人的监听器。注册成功后,当聊天会话中添加了 AI 数字人后,SDK 会返回对应的回调。

  • 建议在初始化后调用该接口。

  • 全局只需注册一次。

  • 该方法为同步。

参数说明

Web/uni-app/小程序
TypeScript/**
 * 继承自 eventEmitter3 的监听事件方法
 */
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
参数名称 类型 是否必填 说明
eventName V2NIMAIListener 回调事件
  • onProxyAIModelCall:AI 透传接口的响应的回调。
  • onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • Node.js/Electron
    TypeScript```TypeScript
    /**
     * 继承自 eventEmitter3 的监听事件方法
     */
    interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
    
    参数名称 类型 是否必填 说明
    eventName V2NIMAIListener 回调事件
  • proxyAIModelCall:AI 透传接口的响应的回调。
  • proxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • HarmonyOS
    TypeScript/**
     * 继承自 eventEmitter3 的监听事件方法
     */
    interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
    
    参数名称 类型 是否必填 说明
    eventName V2NIMAIListener 回调事件
  • onProxyAIModelCall:AI 透传接口的响应的回调。
  • onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • 示例代码

    Web/uni-app/小程序
    TypeScriptnim.V2NIMAIService.on('onProxyAIModelCall', function() {
        // ... do something
    })
    nim.V2NIMAIService.on('onProxyAIModelStreamCall', function() {
        // ... do something
    })
    
    Node.js/Electron
    TypeScriptv2.aIListener.on("proxyAIModelCall", function (userStatusList: Array<V2NIMUserStatus>) {})
    v2.aIListener.on("proxyAIModelStreamCall", function (aiStreamStatus: Array<V2NIMAIModelStreamCallStatus>) {})
    
    HarmonyOS
    TypeScriptnim.aiService.on('onProxyAIModelCall', function() {
        // ... do something
    })
    nim.aiService.on('onProxyAIModelStreamCall', function() {
        // ... do something
    })
    

    返回参数

    无。

    off("EventName")

    接口描述

    移除 AI 数字人监听器。

    参数说明

    Web/uni-app/小程序
    TypeScript/**
     * 继承自 eventEmitter3 的监听事件方法
     */
    interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
    
    参数名称 类型 是否必填 说明
    eventName V2NIMAIListener 回调事件
  • onProxyAIModelCall:AI 透传接口的响应的回调。
  • onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • Node.js/Electron
    TypeScript/**
     * 继承自 eventEmitter3 的监听事件方法
     */
    interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
    
    参数名称 类型 是否必填 说明
    eventName V2NIMAIListener 回调事件
  • proxyAIModelCall:AI 透传接口的响应的回调。
  • proxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • HarmonyOS
    TypeScript/**
     * 继承自 eventEmitter3 的监听事件方法
     */
    interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
    
    参数名称 类型 是否必填 说明
    eventName V2NIMAIListener 回调事件
  • onProxyAIModelCall:AI 透传接口的响应的回调。
  • onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。
  • 示例代码

    Web/uni-app/小程序
    TypeScriptnim.V2NIMAIService.off('onProxyAIModelCall', function() {
        // ... do something
    })
    nim.V2NIMAIService.off('onProxyAIModelStreamCall', function() {
        // ... do something
    })
    
    Node.js/Electron
    TypeScriptv2.aIListener.off("proxyAIModelCall", function () {
        // ... do something
    })
    v2.aIListener.off("proxyAIModelStreamCall", function () {
        // ... do something
    })
    
    HarmonyOS
    TypeScriptnim.aiService.off('onProxyAIModelCall')
    nim.aiService.off('onProxyAIModelStreamCall')
    

    返回参数

    无。

    getAIUserList

    接口描述

    批量查询 AI 数字人列表。返回全量的开发者账号下的相关的数字人用户。

    参数说明

    Android
    Java/**
     * 数字人拉取接口
     * @param success 成功回调
     * @param failure 失败回调
     */
    void getAIUserList(V2NIMSuccessCallback<List<V2NIMAIUser>> success, V2NIMFailureCallback failure);
    
    iOS
    Objective-C/**
     * 数字人拉取接口
     * 返回全量的本 Appkey 相关的数字人用户
     *
     * @param success 请求成功回调
     * @param failure 请求失败回调
     */
    - (void)getAIUserList:(nullable V2NIMGetAlUserListSuccess)success
                  failure:(nullable V2NIMFailureCallback)failure;
    
    macOS/Windows
    C++    /// @brief 获取 AI 数字人列表
        /// @param success 成功回调
        /// @param failure 失败回调
        /// @return void
        /// @par 示例代码
        /// @code
        /// aiService.getAIUserList(
        ///     [](nstd::vector<nstd::shared_ptr<V2NIMAIUser>> result) {
        ///         // get AI users success
        ///     },
        ///     [](V2NIMError error) {
        ///         // get AI users failed, handle error
        ///     });
        /// @endcode
        virtual void getAIUserList(V2NIMSuccessCallback<nstd::vector<nstd::shared_ptr<V2NIMAIUser>>> success, V2NIMFailureCallback failure) = 0;
    
    Web/uni-app/小程序
    TypeScript/**
     * ESM 模式时,需要动态引入 V2NIMAIService 后使用:
     * NIM.registerService(V2NIMAIService, 'V2NIMAIService')
     *
     * 数字人拉取接口
     *
     * 注: 返回全量的本 Appkey 相关的数字人用户
     *
     * @returns 数字人用户列表
     */
    getAIUserList(): Promise<V2NIMAIUser[]>
    
    Node.js/Electron
    TypeScript/**
     * ESM 模式时,需要动态引入 V2NIMAIService 后使用:
     * NIM.registerService(V2NIMAIService, 'V2NIMAIService')
     *
     * 数字人拉取接口
     *
     * 注: 返回全量的本 Appkey 相关的数字人用户
     *
     * @returns 数字人用户列表
     */
    getAIUserList(): Promise<V2NIMAIUser[]>
    
    HarmonyOS
    TypeScript  /**
     * 数字人拉取接口
     *
     * 注: 返回全量的本 Appkey 相关的数字人用户
     *
     * @returns 数字人用户列表
     */
    getAIUserList(): Promise<V2NIMAIUser[]>
    
    参数名称 类型 是否必填 说明
    success V2NIMSuccessCallback 获取 AI 数字人成功回调,返回 V2NIMAIUser AI 数字人列表。
    failure V2NIMFailureCallback 获取 AI 数字人失败回调,返回 错误码

    示例代码

    Android
    JavaNIMClient.getService(V2NIMAIService.class).getAIUserList(new V2NIMSuccessCallback<List<V2NIMAIUser>>() {
        @Override
        public void onSuccess(List<V2NIMAIUser> users) {
            // success
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // failure
        }
    });
    
    iOS
    Objective-C[NIMSDK.sharedSDK.v2AIService getAIUserList:^(NSArray<V2NIMAIUser *> * _Nullable result) {
               // 成功回调
            } failure:^(V2NIMError * _Nonnull error) {
                // 失败回调
            }];
    
    macOS/Windows
    C++auto& AIService = v2::V2NIMClient::get().getAIService();
    AIService.getAIUserList(
        [=](nstd::vector<nstd::shared_ptr<V2NIMAIUser>> result) {
            // 成功回调                                      auto detailString = xpack::json::encode(result);
        },
        [=](v2::V2NIMError error) {
            // 失败回调
        });
    
    Web/uni-app/小程序
    TypeScriptconst aiUsers = await nim.V2NIMAIService.getAIUserList()
    
    Node.js/Electron
    TypeScriptconst aiUsers = await v2.aIService.getAIUserList()
    
    HarmonyOS
    TypeScriptconst aiUsers = await nim.aiService.getAIUserList()
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMAIUser[]>:查询到的 AI 数字人列表。

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMAIUser AI 数字人列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含 AI 数字人相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    proxyAIModelCall

    接口描述

    向 LLM(Large Language Models)发起模型调用请求。数字人发送消息调用 sendMessage

    JSON{ "msg": "xxxx", "type": 0 }
    

    参数说明

    Android
    Java/**
     * AI 数字人请求代理接口
     * @param params 请求参数
     * @param success 成功回调
     * @param failure 失败回调
     */
    void proxyAIModelCall(V2NIMProxyAIModelCallParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    iOS
    Objective-C/**
     * AI 数字人请求代理接口
     *
     * @param params   接口入参
     * @param success 请求成功回调
     * @param failure 请求失败回调
     */
    
    - (void)proxyAIModelCall:(V2NIMProxyAIModelCallParams *)params
                     success:(nullable V2NIMSuccessCallback)success
                     failure:(nullable V2NIMFailureCallback)failure;
    
    macOS/Windows
    C++    /// @brief AI 数字人请求代理接口
        /// @param params 接口入参
        /// @param success 成功回调
        /// @param failure 失败回调
        /// @return void
        /// @par 示例代码
        /// @code
        /// V2NIMProxyAIModelCallParams params;
        /// aiService.proxyAIModelCall(
        ///     params,
        ///     []() {
        ///         // update success
        ///     },
        ///     [](V2NIMError error) {
        ///         // update failed, handle error
        ///     });
        /// @endcode
        virtual void proxyAIModelCall(V2NIMProxyAIModelCallParams params, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    Web/uni-app/小程序
    TypeScript/**
     * ESM 模式时,需要动态引入 V2NIMAIService 后使用:
     * NIM.registerService(V2NIMAIService, 'V2NIMAIService')
     *
     * AI 数字人请求代理接口
     *
     * @param params 接口入参
     */
    proxyAIModelCall(params: V2NIMProxyAIModelCallParams): Promise<void>
    
    Node.js/Electron
    TypeScript/**
     * ESM 模式时,需要动态引入 V2NIMAIService 后使用:
     * NIM.registerService(V2NIMAIService, 'V2NIMAIService')
     *
     * AI 数字人请求代理接口
     *
     * @param params 接口入参
     */
    proxyAIModelCall(params): Promise<void>
    
    HarmonyOS
    TypeScriptproxyAIModelCall(params: V2NIMProxyAIModelCallParams): Promise<void>
    
    参数名称 类型 是否必填 说明
    params V2NIMProxyAIModelCallParams AI 数字人更新参数,包括输出方式、用户昵称、头像、签名、邮箱、性别、生日、手机号以及扩展信息。
    success V2NIMSuccessCallback 更新 AI 数字人成功回调。
    failure V2NIMFailureCallback 更新 AI 数字人失败回调,返回 错误码

    示例代码

    Android
    JavaV2NIMProxyAIModelCallParams params = new V2NIMProxyAIModelCallParams.Builder()
        .accountId("accountId")
        .requestId("requestId")
        .content(new V2NIMAIModelCallContent("msg",0))
        .build();
    NIMClient.getService(V2NIMAIService.class).proxyAIModelCall(params, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            // success
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // failure
        }
    });
    
    iOS
    Objective-CV2NIMProxyAIModelCallParams *params = [[V2NIMProxyAIModelCallParams alloc] init];
        params.accountId = @"accid";
        params.requestId = @"requestId"
        //...
        [NIMSDK.sharedSDK.v2AIService proxyAIModelCall:params success:^{
            // 成功回调
        } failure:^(V2NIMError * _Nonnull error) {
            // 失败回调
        }];
    
    macOS/Windows
    C++auto& aiService = v2::V2NIMClient::get().getAIService();
    V2NIMProxyAIModelCallParams proxyAIModelCallParams;
    aiService.proxyAIModelCall(
        proxyAIModelCallParams,
        [=]() {
            // 成功回调
        },
        [=](v2::V2NIMError error) {
            // 失败回调
        });
    
    Web/uni-app/小程序
    TypeScriptawait nim.V2NIMAIService.proxyAIModelCall({
      "accountId": "YOUR_AI_ACCOUNT_ID",
      "requestId": "YOUR_REQUEST_ID",
      "content": {
        "msg": "YOUR_CONTENT_MSG",
        "type": 0
      }
    })
    
    Node.js/Electron
    TypeScriptawait v2.aIService.proxyAIModelCall({
      "accountId": "YOUR_AI_ACCOUNT_ID",
      "requestId": "YOUR_REQUEST_ID",
      "content": {
        "msg": "YOUR_CONTENT_MSG",
        "type": 0
      }
    })
    
    HarmonyOS
    TypeScriptawait nim.aiService.proxyAIModelCall({
      "accountId": "YOUR_AI_ACCOUNT_ID",
      "requestId": "YOUR_REQUEST_ID",
      "content": {
        "msg": "YOUR_CONTENT_MSG",
        "type": 0
      }
    })
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMAIListener AI 数字人列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含 AI 数字人相关错误码。
    Web/uni-app/小程序/HarmonyOS

    调用成功,返回 onProxyAIModelCall 回调或 onProxyAIModelStreamCall 回调。

    Node.js/Electron

    调用成功,返回 proxyAIModelCall 回调或 proxyAIModelStreamCall 回调。

    stopAIModelStreamCall

    接口描述

    停止 AI 流式输出请求。

    本接口为异步接口。

    参数说明

    Android
    Java/**
    * 停止流式输出接口
    * @param params 请求参数
    * @param success 成功回调
    * @param failure 失败回调
    */
    void stopAIModelStreamCall(V2NIMAIModelStreamCallStopParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    iOS
    Objective-C/**
     * 停止流式输出
     *
     *  @param params   接口入参
     *  @param completion  完成后的回调
     */
    - (void)stopAIModelStreamCall:(V2NIMAIModelStreamCallStopParams *)params
                                success:(nullable V2NIMSuccessCallback)success
                                failure:(nullable V2NIMFailureCallback)failure;
    
    macOS/Windows
    C++virtual void stopAIModelStreamCall(const V2NIMAIModelStreamCallStopParams& params,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    Web/uni-app/小程序
    TypeScriptstopAIModelStreamCall(params: V2NIMAIModelStreamCallStopParams): Promise<void>
    
    Node.js/Electron
    TypeScriptstopAIModelStreamCall(params): Promise<void>
    
    HarmonyOS
    TypeScriptstopAIModelStreamCall(params): Promise<void>
    
    参数名称 类型 是否必填 说明
    params V2NIMAIModelStreamCallStopParams 停止流式输出配置参数,包括停止输出的 AI 数字人账号 ID。
    success V2NIMSuccessCallback 停止流式输出成功回调。
    failure V2NIMFailureCallback 停止流式输出失败回调,返回 错误码

    示例代码

    Android
    JavaV2NIMAIModelStreamCallStopParams params = new V2NIMAIModelStreamCallStopParams();
    // AI 账号 ID
    params.setAccountId(aiAccountId);
    // 请求ID,和 proxyAIModelCall 中一致
    params.setRequestId(requestId);
    
    NIMSDK.sharedSDK().getV2AIService().stopAIModelStreamCall(params,
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void result) {
                // Stop AI success
            }
            
            @Override
            public void onFailed(int code) {
                // Stop AI failed
            }
            
            @Override
            public void onException(Throwable exception) {
                // Exception occurred
            }
        });
    
    iOS
    Objective-CV2NIMAIModelStreamCallStopParams *params = [[V2NIMAIModelStreamCallStopParams alloc] init];
    // AI 账号
    params.accountId = aiAccountId;
    // 请求 ID,和 proxyAIModelCall:completion:中一致
    params.requestId = requestId;
    [[NIMSDK sharedSDK].v2AIService stopAIModelStreamCall:params
                                                success:^{
       // Stop AI success
    } failure:^(V2NIMError * _Nonnull error) {
       // Stop AI failed
    }];
    
    macOS/Windows
    C++V2NIMAIModelStreamCallStopParams params;
    params.accountId = "account_id";
    params.requestId = "request_id";
    aiService.stopAIModelStreamCall(
        params,
        []() {
            // stop AI model stream call success
        },
        [](V2NIMError error) {
            // stop AI model stream call failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScriptawait nim.V2NIMAIService.stopAIModelStreamCall({
      accountId: 'AI user account ID',
      requestId: 'Request ID'
    })
    
    Node.js/Electron
    TypeScriptconst message = v2.aiService.stopAIModelStreamCall({
       accountId: 'AI user account ID',
       requestId: 'Request ID'
    })
    
    HarmonyOS
    TypeScriptconst params: V2NIMAIModelStreamCallStopParams = {
      accountId: this.stopAccountId,
      requestId: this.stopRequestId
    }
    const aiService = nim.aiService! // Demo启用 ai 模块,aiService不为空
    const res = await aiService.stopAIModelStreamCall(params)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含 AI 数字人相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • AI 数字人监听
    • AI 数字人操作
    • 接口类
    • addAIListener
    • removeAIListener
    • on("EventName")
    • off("EventName")
    • getAIUserList
    • proxyAIModelCall
    • stopAIModelStreamCall