目录
前言
近几年在数字化浪潮的推动下,AI技术正以前所未有的速度改变着我们的日常生活和工作方式。从智能家居到智能办公,从医疗健康到教育娱乐,AI从刚开始的概念状态到现在的切实落地,AI 的应用场景无处不在。再加上2025年最火的两个内容:华为云数字人和DeepSeek,让技术圈有了新的方向。在这种背景下,打造一款集成了先进 AI 技术的智能交互平台,以其强大的功能和灵活的应用场景,为各行业带来了全新的解决方案。华为云数字人与DeepSeek强强联合,不仅能够提供高度逼真的数字人形象,还能通过深度学习和自然语言处理技术,实现与用户的自然对话和智能交互。无论是教育领域的虚拟教师,还是法律领域的智能律师,亦或是旅游领域的攻略达人,DeepSeek 都能根据不同的应用场景和需求,提供个性化的智能服务。这一技术的出现,不仅提升了用户体验,还为企业和开发者提供了强大的工具,以构建更加智能和高效的应用程序。那么本文将通过一个实战案例,详细解析华为云数字人+DeepSeek 的核心流程、具体实现和应用场景,帮助大家全面了解这一前沿技术的实际应用和开发细节。
关于华为云数字人和云服务
首先来介绍一下关于华为云数字人和云服务,尤其是华为云的数字人,非常值得体验一下。
1、华为云数字人
华为云数字人,全称:数字内容生产线 MetaStudio。数字内容生产线,提供数字人视频制作、视频直播、智能交互、企业代言等多种服务能力,使能千行百业降本增效。另外,数字内容生产线(MetaStudio)解决方案,提供数字人视频与直播、智能交互等服务,使能千行百业场景应用。
(1)MetaStudio介绍
基于盘古数字人大模型,华为云MetaStudio打造了一站式、全流程的数字人直播服务,通过高效的训练和推理服务,重塑千行百业的电商直播。
数字人模型生成和驱动:基于一张照片或者一段3-5分钟视频,可以生成分身数字人模型,生成效率相比业界提升3倍以上。在数字人模型生成以后,可以通过模型驱动推理服务,让数字人动起来,包括声音、表情、口型、肢体动作等,口型匹配准确率>95%,表情、动作更自然。
直播话术智能生成:基于十万级高质量直播话术的预训练,自动生成专业话术,精准驱动数字人准确、流利地介绍产品,让每个人都能成为专业的主播。
智能互动问答:基于盘古大模型能力,和直播间观众智能互动,大幅提升直播体验和商业转化率。
(2)应用场景
华为云数字人的应用场景如下所示:
- 教育:数字人课件制作、虚拟老师教学。
- 政府及公共事业:数字人代言、数字人宣讲、数字人会议等。
- 医疗健康:智能医疗客服、虚拟医生培训等。
- 金融:数字人智能客服、数字人企业代言、数字人培训视频制作等。
- 文旅:智能客服、数字人导览、数字人讲解等。
- 广电传媒:虚拟综艺主持人、虚拟新闻主播等。
- 互娱电商:数字人文娱直播、数字人短视频制作、电商直播等。
(3)功能特性
数字内容生产线Metastudio通过AI学习真人形象和声音,来生成数字人模型,相应功能为形象制作、声音制作和Flexus分身数字人。再将模型用于音视频内容的创作,相应功能为视频制作、视频直播和智能交互,主要是生成画面内容。也可以直接通过静态的人脸照片生成视频,对应功能为照片数字人。
(4)使用体验
关于华为云数字内容生产线 MetaStudio使用体验,参见链接 数字内容生产线_MetaStudio_数字人生产平台_虚拟直播_分身数字人-华为云
2、华为云云服务
俗话说:用云服务,就用弹性的,经济又实惠。那么华为云的弹性云服务器 ECS也是非常不错的,可以提供安全稳定、可随时自助获取、弹性伸缩的计算服务,灵活计费,极简运维,极大降低企业成本。
关于华为云的弹性云服务器 ECS参见链接 云服务器_云主机_弹性云服务器ECS_租用_购买-华为云
华为云数字人结合DeepSeek的核心流程
关于华为云数字人结合DeepSeek来实现具体的落地内容,先来介绍具体的核心流程,具体如下所示:
用户和数字人对话 --> 华为云数字人把对话信息和上下文请求接口 --> 拿到信息,组装prompt去调用deepseek V3 --> 返回给华为云数字人进行口播
1、核心流程
(1)用户与数字人对话
用户通过华为云数字人平台与数字人进行对话。用户可以提出各种问题,数字人将根据问题内容生成相应的回答,这一过程类似于与真人进行对话,用户可以感受到自然流畅的交互体验。
(2)华为云请求接口
当用户与数字人对话时,华为云数字人会将对话信息和上下文发送到开发者提供的服务端接口,这个接口是开发者根据具体应用场景开发的,用于处理用户请求并生成相应的回复。
(3)调用 DeepSeek V3
开发者的服务端接口接收到华为云发送的请求后,会根据请求内容组装一个 prompt(提示文本),然后调用 DeepSeek V3 的 API,将 prompt 发送给 DeepSeek V3,DeepSeek V3 会根据 prompt 生成相应的回复内容。
(4)返回回复给数字人
DeepSeek V3 生成的回复内容会通过开发者的服务端接口返回给华为云数字人平台,数字人再将回复内容以语音或文字的形式展示给用户,完成一次完整的交互过程。
2、详细操作流程
详细操作流程如下所示:
1、用户在web页面发起对话;
2、华为云数字人系统收集用户输入,转化成固定结构,调用链接;
3、服务端接收到调用,解析请求数据,构造prompt调用deepseek;
4、服务端拿到deepseek返回,返回给华为云数字人系统;
5、华为云数字人系统根据返回,输出数字人对话互动。
接下来就来分享具体的案例实现流程过程,本文的案例主要使用的技术包含:华为云ECS、华为云数字人、DeepSeek。
案例实现过程
接下来就是本文的重头戏,分享华为云数字人结合DeepSeek具体的应用案例。这里还是要重申一下:本文的示例demo里是一个基于线上老师的应用场景,不过大家可以根据这个思路拓展更多其他的场景,这里通过三个模块来详细介绍,具体实现流程如下所示。
1、华为云数字人相关内容
首先,需要开通华为云分身数字人智能交互。登录华为云平台,进入数字人服务页面,开通分身数字人智能交互功能,具体详情请打开链接 https://console.huaweicloud.com/metaStudio/?region=cn-north-4#/metaStudio/cbc-order 然后选择“智能交互”模块,进入配置页面。
付费开通之后,然后进入这个智能交互,在智能交互页面,选择一个数字人,华为云提供了多种预设的数字人形象,用户可以根据需求选择合适的形象,接着配置数字人的参数,如语音、表情等,这里要注意:一定要选择正确,具体如下所示:
记得单击并选择“智能交互”,这是本文示例所选的内容,具体“智能交互”如下所示:
接着打开进入设置选项,具体操作如下所示:
然后左边就是选一个数字人,本文示例选的是系统默认的一个;右边就是配置一些参数(这里主要配置的是第三方语言模型,也就是、自己开发的接口(这里的数字人老师对应了后面的assistant)。接着配置第三方语言模型,在配置页面中,选择“第三方语言模型”选项,输入开发者提供的接口地址和激活码。特别提醒:设置且开发完之后,需要发布,发布完会有链接和激活码,后面会提供到。
接着还需要开通华为云云服务相关的业务,以便部署我们的程序,本文示例关于华为云云服务使用的是详情参见链接:https://console.huaweicloud.com/ecm/?region=cn-north-4#/ecs/dashboard ,具体入口如下图所示。
2、DeepSeek相关内容
接着是注册并登录DeepSeek开放平台,在 DeepSeek 平台的用户中心,找到 API keys 管理页面,复制生成的 API keys,然后拿到密钥。特别提示:API keys 是调用 DeepSeek V3 接口的必要凭证,需要妥善保管。关于注册并登录DeepSeek开放平台的详细步骤不再介绍,这里只来介绍一下具体的使用DeepSeek的费用及操作,具体如下所示:
也就是打开 DeepSeek 注册并登录就可以了,注册完成后,DeepSeek平台会提供 API keys,这里是使用用于调用 DeepSeek V3 的接口,具体如下所示:
3、具体逻辑代码实现
通过上面2步骤开通不同的产品,然后就是我们自己的代码实现了,也就是开发服务端接口,本示例选用的开发语言是Java来处理华为云发送的请求,具体的实现步骤如下所示:
(1)Controller 层
关于Controller 层的具体实现代码如下所示:
@RestController
@RequestMapping("/ds")
@Slf4j
public class MetaStudioController {
@Autowired
private MetaStudioService metaStudioService;
@Autowired
private ObjectMapper objectMapper;
@PostMapping("/chat/{assistant}")
public MetaStudioResponse chat(@PathVariable String assistant, @RequestBody(required = false) MetaStudioRequest request) {
// 设置助手类型
request.setAssistant(assistant);
log.info("MetaStudio chat request object: {}", toJson(request));
// 检查请求的消息内容是否为空
if (request.getMessages() == null || request.getMessages().isEmpty() ||
request.getMessages().get(0) == null ||
!request.getMessages().get(0).containsKey("content") ||
request.getMessages().get(0).get("content") == null ||
request.getMessages().get(0).get("content").trim().isEmpty()) {
log.warn("MetaStudio chat request message content is empty");
MetaStudioResponse errorResponse = new MetaStudioResponse();
errorResponse.setText("请问出您想要咨询的问题");
return errorResponse;
}
MetaStudioResponse response = metaStudioService.chat(request);
log.info("MetaStudio chat response: {}", toJson(response));
return response;
}
/**
* 将对象转换为 JSON 字符串
*
* @param obj 要转换的对象
* @return JSON 字符串,转换失败时返回 "[转换失败]"
*/
private String toJson(Object obj) {
try {
return objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
log.error("JSON 序列化失败", e);
return "[转换失败]";
}
}
}
(2)华为云数字人服务
关于华为云数字人服务的逻辑代码,具体如下所示:
@Slf4j
@Service
public class MetaStudioService {
@Autowired
private DeepSeekService deepSeekService;
public MetaStudioResponse chat(MetaStudioRequest request) {
try {
// 构建消息列表
List<Map<String, Object>> apiMessages = new ArrayList<>();
// 添加系统提示词
Map<String, Object> systemMessage = new HashMap<>();
systemMessage.put("role", "system");
systemMessage.put("content", buildPromptByAssistant(request));
apiMessages.add(systemMessage);
// 添加用户问题和历史对话 - 交替设置角色
if (request.getMessages() != null && !request.getMessages().isEmpty()) {
boolean isUserMessage = true; // 第一条是用户消息
for (Map<String, String> msg : request.getMessages()) {
Map<String, Object> message = new HashMap<>();
message.put("role", isUserMessage ? "user" : "system");
message.put("content", msg.get("content"));
apiMessages.add(message);
// 切换角色
isUserMessage = !isUserMessage;
}
}
// 调用 DeepSeek V3 API
String responseText = deepSeekService.chatV3(apiMessages);
// 构建响应
MetaStudioResponse response = new MetaStudioResponse();
response.setText(responseText);
return response;
} catch (Exception e) {
log.error("调用 deepseek 接口异常", e);
MetaStudioResponse errorResponse = new MetaStudioResponse();
errorResponse.setText("抱歉,可以再说一次吗?");
return errorResponse;
}
}
}
然后根据传入的assistant来确定使用的提示词(这里的prompt只是示例,所以比较简单),具体操作如下所示:
/**
* 根据助手类型构建不同的提示词
*/
private String buildPromptByAssistant(MetaStudioRequest request) {
String assistant = request.getAssistant();
StringBuilder promptBuilder = new StringBuilder();
// 基础系统提示词
promptBuilder.append("你是一个有帮助、诚实、无害的AI助手。");
promptBuilder.append("请用简短、口语化的方式回答,不要过于书面化,因为你是在和人对话。");
promptBuilder.append("不要太长,保持回答简洁明了。");
// 根据助手类型添加特定提示词
if (assistant != null) {
switch (assistant.toLowerCase()) {
case "fortune":
promptBuilder.append("你是一位专业的算命师,擅长解读星座、生肖、塔罗牌等。");
promptBuilder.append("保持神秘感和专业性,但态度亲切。");
break;
case "doctor":
promptBuilder.append("你是一位医疗顾问,提供健康相关的一般性建议。");
promptBuilder.append("注意强调你不能替代医生,严重问题应该去医院。");
break;
case "friend":
promptBuilder.append("你是用户的朋友,语气亲切随和,能理解用户的情绪。");
promptBuilder.append("可以适当使用表情符号,让对话更有亲切感。");
break;
case "teacher":
promptBuilder.append("你是一位教师,擅长解释复杂概念,但要用简单易懂的语言。");
promptBuilder.append("耐心回答问题,鼓励思考。");
break;
default:
promptBuilder.append("以友好、随和的语气回答用户问题。");
}
}
return promptBuilder.toString();
}
然后就是对调用DeepSeek API的代码,具体实现如下所示:
@Slf4j
@Service
public class DeepSeekService {
@Autowired
private DeepSeekConfig deepseekConfig;
@Autowired
private RestTemplate restTemplate;
public String chatV3(List<Map<String, Object>> messages) {
log.info("Sending chat request to Deepseek: {}", messages);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Bearer " + deepseekConfig.getApiKey());
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("model", deepseekConfig.getV3Model());
requestBody.put("messages", messages);
requestBody.put("temperature", 0.7);
requestBody.put("max_tokens", 4000);
requestBody.put("top_p", 0.95);
requestBody.put("stream", false);
HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, headers);
try {
ResponseEntity<Map> response = restTemplate.postForEntity(
deepseekConfig.getApiUrl() + "/v1/chat/completions",
request,
Map.class
);
if (response.getBody() != null) {
if (response.getBody().containsKey("error")) {
Map<String, Object> error = (Map<String, Object>) response.getBody().get("error");
String errorMessage = error.containsKey("message") ?
(String) error.get("message") : "Unknown error";
throw new RuntimeException("Deepseek API error: " + errorMessage);
}
List<Map<String, Object>> choices = (List<Map<String, Object>>) response.getBody().get("choices");
if (choices != null && !choices.isEmpty()) {
Map<String, Object> choice = choices.get(0);
Map<String, Object> message_obj = (Map<String, Object>) choice.get("message");
if (message_obj != null) {
String content = (String) message_obj.get("content");
if (content != null && !content.trim().isEmpty()) {
return content;
}
}
}
}
throw new RuntimeException("Invalid response from Deepseek API: " + response.getBody());
} catch (Exception e) {
log.error("Error calling Deepseek API: {}", e.getMessage());
throw new RuntimeException("Error calling Deepseek API: " + e.getMessage());
}
}
}
接着将开发好的服务部署到华为云服务器上,确保服务能够正常运行就是到云服务器上,然后把服务部署启动一下,具体如下所示:
最后配置下nginx,确保服务能够稳定地处理外部请求,具体如下所示:
通过上面的实现步骤,就完成了本文示例的要求及效果,具体的最终结果如下所示:
(3)示例 DEMO 体验
分享一下本文示例的体验,大家可以通过以下链接体验 AI 英语老师示例(但是由于时效性限制,如果出现体验受限那就是暂停访问,请知晓),具体如下所示:
发布链接:智能交互
激活码:NME39TYL7
大家可以通过上述链接和激活码,体验与 AI 英语老师的互动对话,感受智能交互的魅力,操练起来吧!
应用场景
这里还是要介绍一下华为云数字人结合DeepSeek的应用场景,其实前面也介绍了一些具体的应用场景,但是这里还是要介绍一下。
1、AI 英语老师
根据上面的示例,通过编写一个专门的 prompt,可以创建一个 AI 英语老师,用户可以与这个数字人进行英语对话,数字人会根据用户的输入生成相应的英语回复,帮助用户提高英语口语和听力能力。
2、智能律师
还可以创建一个智能律师的数字人,用户可以咨询法律问题,数字人会根据法律知识库生成相应的回答,提供法律咨询和建议。
3、旅游攻略达人
也可以创建一个旅游攻略达人的数字人,用户可以询问旅游目的地的相关信息,数字人会根据旅游知识库生成详细的旅游攻略,包括景点推荐、美食推荐、交通指南等。
4、其他
除了上面介绍的三种应用场景,其实大家还可以根据自己的实际情况拓展更多的适应场景,这里就不再一一举例介绍。
结束语
通过上文的详细介绍,不难看出在数字化时代,人工智能技术正以前所未有的速度改变着我们的生活和工作方式,而华为云数字人+DeepSeek 作为一款集成了先进 AI 技术的智能交互平台,不仅为企业和开发者提供了强大的工具,也为用户带来了全新的交互体验。经过本文的详细介绍,想必大家已经掌握了如何利用华为云数字人和DeepSeek 构建自己的智能交互应用,并将其应用于实际业务中,无论是教育、法律、翻译还是旅游领域,该方案都能够提供个性化的智能服务,提升用户体验和业务效率。在未来,随着 AI 技术的不断发展,华为云数字人+DeepSeek 将在更多领域发挥重要作用,我们期待看到更多基于 DeepSeek 的创新应用,为我们日常应用带来更多的便利和价值。同时,也期待大家能够加入到这一领域,共同探索和创新,推动 AI 技术的发展和应用,让我们一起期待一个更加智能和便捷的未来!