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 数字人监听
| API | 说明 | 起始版本 |
|---|---|---|
| addAIListener | 注册 AI 数字人相关监听器 | v10.3.0 |
| removeAIListener | 移除 AI 数字人相关监听器 | v10.3.0 |
| 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 会返回对应的回调。
-
建议在初始化后调用该接口。
-
全局只需注册一次。
参数说明
Java/**
* 添加 AI 监听
* @param listener
*/
void addAIListener(V2NIMAIListener listener);
Objective-C//AI 消息的响应的回调
- (void)onProxyAIModelCall:(V2NIMAIModelCallResult *)data;
//AI 透传接口的流式响应的回调
- (void)onProxyAIModelStreamCall:(V2NIMAIModelStreamCallResult *)data;
/**
* 添加数字人监听器
*
* @param listener 消息监听回调
*/
- (void)addAIListener:(id<V2NIMAIListener>)listener;
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 数字人相关监听器。 |
示例代码
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);
Objective-C[NIMSDK.sharedSDK.v2AIService addAIListener:self];
C++auto& aiService = v2::V2NIMClient::get().getAIService();
aiService.addAIListener(aiListener);
返回参数
无。
removeAIListener
接口描述
移除 AI 数字人监听器。
参数说明
Java/**
* 移除 AI 监听
* @param listener
*/
void removeAIListener(V2NIMAIListener listener);
Objective-C/**
* 删除数字人监听器
*
* @param listener 消息监听回调
*/
- (void)removeAIListener:(id<V2NIMAIListener>)listener;
C++virtual void removeAIListener(V2NIMAIListener listener) = 0;
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
listener |
V2NIMAIListener |
是 | AI 数字人相关监听器。 |
示例代码
JavaNIMClient.getService(V2NIMAIService.class).removeAIListener(listener);
Objective-C[NIMSDK.sharedSDK.v2AIService removeAIListener:self];
C++auto& aiService = v2::V2NIMClient::get().getAIService();
aiService.removeAIListener(aiListener);
返回参数
无。
on("EventName")
接口描述
注册添加 AI 数字人的监听器。注册成功后,当聊天会话中添加了 AI 数字人后,SDK 会返回对应的回调。
-
建议在初始化后调用该接口。
-
全局只需注册一次。
-
该方法为同步。
参数说明
TypeScript/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 onProxyAIModelCall:AI 透传接口的响应的回调。onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
TypeScript```TypeScript
/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 proxyAIModelCall:AI 透传接口的响应的回调。proxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
TypeScript/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 onProxyAIModelCall:AI 透传接口的响应的回调。onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
示例代码
TypeScriptnim.V2NIMAIService.on('onProxyAIModelCall', function() {
// ... do something
})
nim.V2NIMAIService.on('onProxyAIModelStreamCall', function() {
// ... do something
})
TypeScriptv2.aIListener.on("proxyAIModelCall", function (userStatusList: Array<V2NIMUserStatus>) {})
v2.aIListener.on("proxyAIModelStreamCall", function (aiStreamStatus: Array<V2NIMAIModelStreamCallStatus>) {})
TypeScriptnim.aiService.on('onProxyAIModelCall', function() {
// ... do something
})
nim.aiService.on('onProxyAIModelStreamCall', function() {
// ... do something
})
返回参数
无。
off("EventName")
接口描述
移除 AI 数字人监听器。
参数说明
TypeScript/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 onProxyAIModelCall:AI 透传接口的响应的回调。onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
TypeScript/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 proxyAIModelCall:AI 透传接口的响应的回调。proxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
TypeScript/**
* 继承自 eventEmitter3 的监听事件方法
*/
interface V2NIMAIService extends EventEmitter3<V2NIMAIListener>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
eventName |
V2NIMAIListener |
是 | 回调事件 onProxyAIModelCall:AI 透传接口的响应的回调。onProxyAIModelStreamCall:AI 透传接口的流式响应的回调。 |
示例代码
TypeScriptnim.V2NIMAIService.off('onProxyAIModelCall', function() {
// ... do something
})
nim.V2NIMAIService.off('onProxyAIModelStreamCall', function() {
// ... do something
})
TypeScriptv2.aIListener.off("proxyAIModelCall", function () {
// ... do something
})
v2.aIListener.off("proxyAIModelStreamCall", function () {
// ... do something
})
TypeScriptnim.aiService.off('onProxyAIModelCall')
nim.aiService.off('onProxyAIModelStreamCall')
返回参数
无。
getAIUserList
接口描述
批量查询 AI 数字人列表。返回全量的开发者账号下的相关的数字人用户。
参数说明
Java/**
* 数字人拉取接口
* @param success 成功回调
* @param failure 失败回调
*/
void getAIUserList(V2NIMSuccessCallback<List<V2NIMAIUser>> success, V2NIMFailureCallback failure);
Objective-C/**
* 数字人拉取接口
* 返回全量的本 Appkey 相关的数字人用户
*
* @param success 请求成功回调
* @param failure 请求失败回调
*/
- (void)getAIUserList:(nullable V2NIMGetAlUserListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
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;
TypeScript/**
* ESM 模式时,需要动态引入 V2NIMAIService 后使用:
* NIM.registerService(V2NIMAIService, 'V2NIMAIService')
*
* 数字人拉取接口
*
* 注: 返回全量的本 Appkey 相关的数字人用户
*
* @returns 数字人用户列表
*/
getAIUserList(): Promise<V2NIMAIUser[]>
TypeScript/**
* ESM 模式时,需要动态引入 V2NIMAIService 后使用:
* NIM.registerService(V2NIMAIService, 'V2NIMAIService')
*
* 数字人拉取接口
*
* 注: 返回全量的本 Appkey 相关的数字人用户
*
* @returns 数字人用户列表
*/
getAIUserList(): Promise<V2NIMAIUser[]>
TypeScript /**
* 数字人拉取接口
*
* 注: 返回全量的本 Appkey 相关的数字人用户
*
* @returns 数字人用户列表
*/
getAIUserList(): Promise<V2NIMAIUser[]>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
success |
V2NIMSuccessCallback |
是 | 获取 AI 数字人成功回调,返回 V2NIMAIUser AI 数字人列表。 |
failure |
V2NIMFailureCallback |
是 | 获取 AI 数字人失败回调,返回 错误码。 |
示例代码
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
}
});
Objective-C[NIMSDK.sharedSDK.v2AIService getAIUserList:^(NSArray<V2NIMAIUser *> * _Nullable result) {
// 成功回调
} failure:^(V2NIMError * _Nonnull error) {
// 失败回调
}];
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) {
// 失败回调
});
TypeScriptconst aiUsers = await nim.V2NIMAIService.getAIUserList()
TypeScriptconst aiUsers = await v2.aIService.getAIUserList()
TypeScriptconst aiUsers = await nim.aiService.getAIUserList()
返回参数
无返回值。
Promise<V2NIMAIUser[]>:查询到的 AI 数字人列表。
相关回调
- 请求成功,返回
V2NIMSuccessCallback回调,包含V2NIMAIUserAI 数字人列表。 - 请求失败,返回
V2NIMFailureCallback回调,包含 AI 数字人相关错误码。
无。
proxyAIModelCall
接口描述
向 LLM(Large Language Models)发起模型调用请求。数字人发送消息调用 sendMessage。
JSON{ "msg": "xxxx", "type": 0 }
- 发送前请确保 AI 数字人已被添加。详情请参考 开通和添加 AI 数字人。
- 本接口为异步接口。
参数说明
Java/**
* AI 数字人请求代理接口
* @param params 请求参数
* @param success 成功回调
* @param failure 失败回调
*/
void proxyAIModelCall(V2NIMProxyAIModelCallParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
Objective-C/**
* AI 数字人请求代理接口
*
* @param params 接口入参
* @param success 请求成功回调
* @param failure 请求失败回调
*/
- (void)proxyAIModelCall:(V2NIMProxyAIModelCallParams *)params
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
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;
TypeScript/**
* ESM 模式时,需要动态引入 V2NIMAIService 后使用:
* NIM.registerService(V2NIMAIService, 'V2NIMAIService')
*
* AI 数字人请求代理接口
*
* @param params 接口入参
*/
proxyAIModelCall(params: V2NIMProxyAIModelCallParams): Promise<void>
TypeScript/**
* ESM 模式时,需要动态引入 V2NIMAIService 后使用:
* NIM.registerService(V2NIMAIService, 'V2NIMAIService')
*
* AI 数字人请求代理接口
*
* @param params 接口入参
*/
proxyAIModelCall(params): Promise<void>
TypeScriptproxyAIModelCall(params: V2NIMProxyAIModelCallParams): Promise<void>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
params |
V2NIMProxyAIModelCallParams |
是 | AI 数字人更新参数,包括输出方式、用户昵称、头像、签名、邮箱、性别、生日、手机号以及扩展信息。 |
success |
V2NIMSuccessCallback |
是 | 更新 AI 数字人成功回调。 |
failure |
V2NIMFailureCallback |
是 | 更新 AI 数字人失败回调,返回 错误码。 |
示例代码
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
}
});
Objective-CV2NIMProxyAIModelCallParams *params = [[V2NIMProxyAIModelCallParams alloc] init];
params.accountId = @"accid";
params.requestId = @"requestId"
//...
[NIMSDK.sharedSDK.v2AIService proxyAIModelCall:params success:^{
// 成功回调
} failure:^(V2NIMError * _Nonnull error) {
// 失败回调
}];
C++auto& aiService = v2::V2NIMClient::get().getAIService();
V2NIMProxyAIModelCallParams proxyAIModelCallParams;
aiService.proxyAIModelCall(
proxyAIModelCallParams,
[=]() {
// 成功回调
},
[=](v2::V2NIMError error) {
// 失败回调
});
TypeScriptawait nim.V2NIMAIService.proxyAIModelCall({
"accountId": "YOUR_AI_ACCOUNT_ID",
"requestId": "YOUR_REQUEST_ID",
"content": {
"msg": "YOUR_CONTENT_MSG",
"type": 0
}
})
TypeScriptawait v2.aIService.proxyAIModelCall({
"accountId": "YOUR_AI_ACCOUNT_ID",
"requestId": "YOUR_REQUEST_ID",
"content": {
"msg": "YOUR_CONTENT_MSG",
"type": 0
}
})
TypeScriptawait nim.aiService.proxyAIModelCall({
"accountId": "YOUR_AI_ACCOUNT_ID",
"requestId": "YOUR_REQUEST_ID",
"content": {
"msg": "YOUR_CONTENT_MSG",
"type": 0
}
})
返回参数
无返回值。
Promise<void>
相关回调
- 请求成功,返回
V2NIMSuccessCallback回调,包含V2NIMAIListenerAI 数字人列表。 - 请求失败,返回
V2NIMFailureCallback回调,包含 AI 数字人相关错误码。
调用成功,返回 onProxyAIModelCall 回调或 onProxyAIModelStreamCall 回调。
调用成功,返回 proxyAIModelCall 回调或 proxyAIModelStreamCall 回调。
stopAIModelStreamCall
接口描述
停止 AI 流式输出请求。
本接口为异步接口。
参数说明
Java/**
* 停止流式输出接口
* @param params 请求参数
* @param success 成功回调
* @param failure 失败回调
*/
void stopAIModelStreamCall(V2NIMAIModelStreamCallStopParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
Objective-C/**
* 停止流式输出
*
* @param params 接口入参
* @param completion 完成后的回调
*/
- (void)stopAIModelStreamCall:(V2NIMAIModelStreamCallStopParams *)params
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
C++virtual void stopAIModelStreamCall(const V2NIMAIModelStreamCallStopParams& params,
V2NIMSuccessCallback<void> success,
V2NIMFailureCallback failure) = 0;
TypeScriptstopAIModelStreamCall(params: V2NIMAIModelStreamCallStopParams): Promise<void>
TypeScriptstopAIModelStreamCall(params): Promise<void>
TypeScriptstopAIModelStreamCall(params): Promise<void>
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
params |
V2NIMAIModelStreamCallStopParams |
是 | 停止流式输出配置参数,包括停止输出的 AI 数字人账号 ID。 |
success |
V2NIMSuccessCallback |
是 | 停止流式输出成功回调。 |
failure |
V2NIMFailureCallback |
是 | 停止流式输出失败回调,返回 错误码。 |
示例代码
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
}
});
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
}];
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
});
TypeScriptawait nim.V2NIMAIService.stopAIModelStreamCall({
accountId: 'AI user account ID',
requestId: 'Request ID'
})
TypeScriptconst message = v2.aiService.stopAIModelStreamCall({
accountId: 'AI user account ID',
requestId: 'Request ID'
})
TypeScriptconst params: V2NIMAIModelStreamCallStopParams = {
accountId: this.stopAccountId,
requestId: this.stopRequestId
}
const aiService = nim.aiService! // Demo启用 ai 模块,aiService不为空
const res = await aiService.stopAIModelStreamCall(params)
返回参数
无返回值。
Promise<void>
相关回调
- 请求成功,返回
V2NIMSuccessCallback回调。 - 请求失败,返回
V2NIMFailureCallback回调,包含 AI 数字人相关错误码。
无。





