华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手

发布于:2025-06-13 ⋅ 阅读:(22) ⋅ 点赞:(0)

引言



一、ModelArts Studio平台介绍

华为云ModelArts Studio简介

华为云ModelArts Studio是基于ModelArts构建的一站式大模型即服务平台(MaaS),深度整合昇腾算力资源与全链路开发工具,为开发者提供从数据准备、模型训练微调、提示词工程到应用部署的全流程解决方案。平台不仅预置主流开源大模型,还具备海量数据智能预处理、自动化标注、分布式训练及模型自动生成能力,全面覆盖AI模型全生命周期管理。无论是深耕算法的工程师、AI领域初学者,还是寻求智能化转型的企业,都能依托ModelArts Studio的高效开发能力,快速实现AI应用的高质量落地与规模化部署。

  • 华为云ModelArts Studio平台地址:https://www.huaweicloud.com/product/modelarts/studio.html

在这里插入图片描述

ModelArts Studio主要特点

  • 模型全、免配置、免调优、性能优
    业界 SOTA 大模型覆盖度高达 99%,内置最优超参配置,结合昇腾算子优化与显存管理,显著提升训练与推理性能。

  • 开箱即用,一站式模型开发服务
    提供模型调优、压缩、部署、评测等全栈工具,功能覆盖大模型全生命周期,用户无需搭建即可直接使用。

  • 资源一站式按需开通,建设周期短
    计算资源可分钟级获取,支持按需计费、弹性扩缩容,并具备断点续训与故障快速恢复能力。

  • 多服务组合竞争力,一站式应用能力集成
    支持 MCP Server、LangChain、RAG、Agent、Guard、九问等组件即插即用,灵活构建复杂 AI 应用场景。

  • 兼容性强,适配主流框架与自定义需求
    全面支持 TensorFlow、PyTorch、MindSpore 等主流 AI 框架,同时支持用户自研算法框架接入。

二、安装AingDesk应用

AingDesk应用介绍

🌟 AingDesk 简介

AingDesk 是一款简单易用、功能丰富的 AI 助手工具,支持知识库管理、模型 API 接入、联网搜索、智能体创建、在线分享等能力,适用于个人开发者与企业用户快速构建本地化 AI 应用。

🔍 核心功能与特点

功能 描述
一键部署本地AI模型及主流模型API 支持本地私有模型和主流平台模型的快速接入与部署。
本地知识库管理 可上传文档建立专属知识库,实现个性化问答与检索。
智能体创建 提供灵活配置界面,轻松打造具备特定角色和行为的AI智能体。
在线分享功能 支持将对话场景一键分享给他人使用,便于协作与展示。
联网搜索支持 实时接入互联网信息,提升回答的时效性与准确性。
服务器端部署支持 支持私有化部署,保障数据安全与系统稳定性。
单次多模型同时对话(即将上线) 即将支持多个AI模型在同一对话中协同工作,提升对比分析能力。

下载地址

  • AingDesk下载地址:https://github.com/aingdesk/AingDesk/releases/tag/v1.2.4

在这里插入图片描述

安装AingDesk工具

下载AingDesk安装包后,在本地Windows上直接安装即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、开通DeepSeek-R1-0528商用服务

访问ModelArts Studio控制台

我们登录华为云官网后,在ModelArts Studio介绍页中(官网地址:https://www.huaweicloud.com/product/modelarts/studio.html),我们点击“ModelArts Studio控制台”后,即可进入ModelArts Studio控制台页面。

在这里插入图片描述

在这里插入图片描述

DeepSeek-R1-0528 介绍

DeepSeek-R1-0528 是 DeepSeek 最新推出的大语言模型版本,专为提升复杂代码生成数学推理能力而设计。该模型在训练数据和算法架构上进行了深度优化,显著提升了以下方面的能力:

  • 逻辑推理准确性
  • 程序生成效率
  • 数学问题求解能力

适用于如自动化编程、科研辅助、金融建模、数据分析等对精度与性能要求极高的高端应用场景,是开发者与研究人员的理想选择。


☁️ 华为云 ModelArts Studio(MaaS 平台)正式接入 DeepSeek-R1-0528

华为云 ModelArts Studio 是一站式 AI 开发平台,现已全面接入 DeepSeek-R1-0528,进一步丰富了其 MaaS(Model as a Service)服务能力

基于 昇腾云的强大算力底座,用户可实现:

一键部署调用
低成本灵活扩展
高效应对复杂AI任务

此次合作不仅显著增强了平台在代码生成数学推理方面的表现,也大幅降低了使用门槛与成本,助力开发者与企业快速构建智能化应用,推动 AI 技术落地。


📌 立即体验 DeepSeek-R1-0528,开启智能开发新篇章!

开通DeepSeek-R1-0528服务

在ModelArts Studio控制台首页的左侧菜单栏中,我们选择模型推理——在线推理,选择商务服务DeepSeek-R1-0528,点击“开通服务”。

在这里插入图片描述

备注:

服务类型 描述 注意事项
免费服务 适合用于体验模型,受严格的速率限制。 平台可能会不定时调整其适用模型、免费额度、有效期等内容。
- 单个模型提供200万token推理额度。 额度消耗完后可选择开通商用级别的推理API服务或部署为付费服务使用。
商用服务 提供商用级别的推理API服务。 开通后可获取付费API服务(仅限贵阳一)。
- 用户可以前往费用中心查看模型服务的优惠折扣发放和使用情况。 可以前往“我的服务”部署为个人服务后付费使用。

点击“开通服务”后,我们勾选同意协议,确认“立即开通”。

在这里插入图片描述

生成API Key

进入API Key管理页面。可以选择“创建API Key”,注意保存此API Key,建议保存在本地以便后续使用。

在这里插入图片描述

复制及保存OpenAI SDK信息

我们可以查看DeepSeek-R1-0528的使用说明,只需要点击“调用说明”选项。

在这里插入图片描述

调用说明如下所示,我们将DeepSeek-R1-0528服务的OpenAI SDK相关文件复制,保存在本地文本文件或本地笔记中。

在这里插入图片描述

四、AingDesk配置工作

添加模型供应商

在AingDesk的左下角中,我们点击【第三方模型API】,进入模型配置页面。

在这里插入图片描述

在第三方API配置界面中,点击【添加模型服务商】,进行其添加界面。

在这里插入图片描述

可参考以下配置填写:

  • 供应商名称:华为云
  • 接口地址:https://api.modelarts-maas.com/v1
  • 密钥: 填写API Key

在这里插入图片描述

在刚才的自定义的模型服务商华为云中,可以看到已经自动为我们拉取华为云ModelArts Studio提供的模型名称列表,包括deepseek-r1-250528等。

在这里插入图片描述

模型选择

在AingDesk对话设置中,在上方的模型选择中,我们直接选择刚才添加的模型deepseek-r1-250528

在这里插入图片描述

对话测试

在第一轮对话测试中,当我们询问对方的身份时,DeepSeek-R1-250528 模型给出了非常准确的回答。

在这里插入图片描述

在第二轮对话测试中,我们询问了《简·爱》的主要内容,AingDesk AI聊天助手给出了完整且准确的回答,充分展现了其出色的语义理解和知识整合能力。这也体现了华为云ModelArts Studio上部署的DeepSeek-R1-250528模型在实际应用中的强大性能与商用价值。

在这里插入图片描述

在第三轮对话中,我们向 AingDesk 提出请求:“请为我们生成一个漂亮美观的生日祝福 HTML 静态网页。”AingDesk 快速生成了一个界面美观、结构清晰且具有良好可读性的 HTML 静态网页,整体质量表现非常出色。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>温馨生日祝福</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #ff9a9e 0%, #fad0c4 100%);
            height: 100vh;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
            color: #5a3e36;
        }
        
        .container {
            background: rgba(255, 255, 255, 0.85);
            border-radius: 20px;
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2);
            padding: 40px;
            max-width: 800px;
            width: 90%;
            text-align: center;
            position: relative;
            overflow: hidden;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.3);
            z-index: 10;
        }
        
        .birthday-title {
            font-size: 3.5rem;
            margin-bottom: 20px;
            color: #e74c3c;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
            letter-spacing: 2px;
            animation: pulse 2s infinite;
        }
        
        .message {
            font-size: 1.25rem;
            line-height: 1.8;
            margin-bottom: 30px;
            color: #5a3e36;
        }
        
        .cake-container {
            position: relative;
            height: 200px;
            margin: 30px 0;
        }
        
        .cake {
            position: absolute;
            bottom: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 200px;
            height: 100px;
            background: linear-gradient(to right, #e6b980 0%, #eacda3 100%);
            border-radius: 10px 10px 0 0;
            z-index: 5;
        }
        
        .cake:before {
            content: '';
            position: absolute;
            top: -10px;
            left: 0;
            width: 100%;
            height: 20px;
            background: linear-gradient(to right, #f8b500 0%, #fceabb 100%);
            border-radius: 10px 10px 0 0;
        }
        
        .candle {
            position: absolute;
            bottom: 100px;
            width: 10px;
            height: 40px;
            background: #fff;
            z-index: 10;
            border-radius: 5px 5px 0 0;
        }
        
        .candle:nth-child(1) { left: 45%; }
        .candle:nth-child(2) { left: 50%; }
        .candle:nth-child(3) { left: 55%; }
        
        .flame {
            position: absolute;
            top: -15px;
            left: 50%;
            transform: translateX(-50%);
            width: 12px;
            height: 20px;
            background: #ffde7d;
            border-radius: 50% 50% 20% 20%;
            box-shadow: 0 0 15px #ffde7d, 0 0 30px #ff9a3c;
            animation: flicker 1.5s infinite alternate;
        }
        
        .wishes {
            font-style: italic;
            font-size: 1.4rem;
            margin-top: 30px;
            color: #e74c3c;
            font-weight: 600;
        }
        
        .balloon {
            position: absolute;
            width: 60px;
            height: 70px;
            border-radius: 50%;
            bottom: -100px;
            z-index: 1;
        }
        
        .balloon:before {
            content: '';
            position: absolute;
            bottom: -20px;
            left: 50%;
            transform: translateX(-50%);
            width: 2px;
            height: 30px;
            background: rgba(255, 255, 255, 0.6);
        }
        
        .balloon:nth-child(1) { 
            left: 10%; 
            background: radial-gradient(circle at 30% 30%, #ff9a9e, #e74c3c);
            animation: float 15s linear infinite;
            animation-delay: 0s;
        }
        .balloon:nth-child(2) { 
            left: 20%; 
            background: radial-gradient(circle at 30% 30%, #a6c1ee, #3498db);
            animation: float 18s linear infinite;
            animation-delay: 2s;
        }
        .balloon:nth-child(3) { 
            left: 30%; 
            background: radial-gradient(circle at 30% 30%, #c2e59c, #64b3f4);
            animation: float 14s linear infinite;
            animation-delay: 1s;
        }
        .balloon:nth-child(4) { 
            left: 70%; 
            background: radial-gradient(circle at 30% 30%, #ffecd2, #fcb69f);
            animation: float 16s linear infinite;
            animation-delay: 4s;
        }
        .balloon:nth-child(5) { 
            left: 80%; 
            background: radial-gradient(circle at 30% 30%, #d4fc79, #96e6a1);
            animation: float 17s linear infinite;
            animation-delay: 3s;
        }
        .balloon:nth-child(6) { 
            left: 90%; 
            background: radial-gradient(circle at 30% 30%, #fbc2eb, #a6c1ee);
            animation: float 12s linear infinite;
            animation-delay: 5s;
        }
        
        .confetti {
            position: absolute;
            width: 10px;
            height: 10px;
            background: #f1c40f;
            border-radius: 50%;
            top: -20px;
            animation: confetti-fall 5s linear infinite;
        }
        
        .btn {
            background: linear-gradient(to right, #ff9a9e, #fad0c4);
            border: none;
            padding: 15px 40px;
            font-size: 1.2rem;
            border-radius: 50px;
            cursor: pointer;
            color: white;
            font-weight: 600;
            margin-top: 20px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
            transition: all 0.3s ease;
            z-index: 20;
            position: relative;
        }
        
        .btn:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
        }
        
        .signature {
            margin-top: 30px;
            font-size: 1.1rem;
            color: #7f8c8d;
            font-style: italic;
        }
        
        @keyframes float {
            0% { 
                transform: translateY(0) rotate(0deg);
                bottom: -100px;
            }
            100% { 
                transform: translateY(-120vh) rotate(360deg); 
                bottom: 100vh;
            }
        }
        
        @keyframes flicker {
            0%, 100% { 
                height: 20px; 
                box-shadow: 0 0 15px #ffde7d, 0 0 30px #ff9a3c;
            }
            50% { 
                height: 24px; 
                box-shadow: 0 0 20px #ffde7d, 0 0 40px #ff6b6b;
            }
        }
        
        @keyframes pulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.05); }
            100% { transform: scale(1); }
        }
        
        @keyframes confetti-fall {
            0% { 
                transform: translateY(0) rotate(0deg); 
                opacity: 1;
            }
            100% { 
                transform: translateY(100vh) rotate(720deg); 
                opacity: 0;
            }
        }
        
        @media (max-width: 768px) {
            .birthday-title {
                font-size: 2.5rem;
            }
            .message {
                font-size: 1.1rem;
            }
            .cake-container {
                height: 150px;
            }
            .cake {
                width: 150px;
            }
        }
    </style>
</head>
<body>
    <!-- 气球装饰 -->
    <div class="balloon"></div>
    <div class="balloon"></div>
    <div class="balloon"></div>
    <div class="balloon"></div>
    <div class="balloon"></div>
    <div class="balloon"></div>
    
    <!-- 主要内容容器 -->
    <div class="container">
        <h1 class="birthday-title"><i class="fas fa-birthday-cake"></i> 生日快乐! <i class="fas fa-birthday-cake"></i></h1>
        
        <p class="message">
            在这特别的日子里,愿所有的快乐、所有的幸福、所有的温馨、所有的好运都围绕在你的身边!
            愿你的每一天都如今天般灿烂美好,愿你的梦想都能实现,愿你的生活充满欢笑和惊喜。
        </p>
        
        <div class="cake-container">
            <div class="cake">
                <div class="candle">
                    <div class="flame"></div>
                </div>
                <div class="candle">
                    <div class="flame"></div>
                </div>
                <div class="candle">
                    <div class="flame"></div>
                </div>
            </div>
        </div>
        
        <p class="wishes">
            <i class="fas fa-heart"></i> 愿你拥有一个难忘的生日! <i class="fas fa-heart"></i>
        </p>
        
        <button class="btn" id="confettiBtn">
            <i class="fas fa-gift"></i> 释放庆祝彩花
        </button>
        
        <p class="signature">—— 来自所有关心你的人</p>
    </div>
    
    <script>
        // 创建彩花效果
        document.getElementById('confettiBtn').addEventListener('click', function() {
            const colors = ['#f1c40f', '#e74c3c', '#3498db', '#2ecc71', '#9b59b6', '#1abc9c'];
            const container = document.querySelector('.container');
            
            for (let i = 0; i < 100; i++) {
                const confetti = document.createElement('div');
                confetti.className = 'confetti';
                confetti.style.left = Math.random() * 100 + '%';
                confetti.style.animationDelay = Math.random() * 5 + 's';
                confetti.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
                confetti.style.width = Math.random() * 15 + 5 + 'px';
                confetti.style.height = confetti.style.width;
                
                container.appendChild(confetti);
                
                // 移除彩花元素以优化性能
                setTimeout(() => {
                    confetti.remove();
                }, 5000);
            }
            
            // 添加按钮效果
            this.innerHTML = '<i class="fas fa-gift"></i> 彩花飞舞中...';
            this.disabled = true;
            
            setTimeout(() => {
                this.innerHTML = '<i class="fas fa-gift"></i> 再次释放彩花';
                this.disabled = false;
            }, 2000);
        });
        
        // 添加更多彩花背景效果
        setInterval(() => {
            const confetti = document.createElement('div');
            confetti.className = 'confetti';
            confetti.style.left = Math.random() * 100 + '%';
            confetti.style.animationDuration = Math.random() * 3 + 5 + 's';
            confetti.style.backgroundColor = ['#f1c40f', '#e74c3c', '#3498db', '#2ecc71', '#9b59b6', '#1abc9c'][Math.floor(Math.random() * 6)];
            confetti.style.width = Math.random() * 10 + 5 + 'px';
            confetti.style.height = confetti.style.width;
            document.body.appendChild(confetti);
            
            // 移除彩花元素以优化性能
            setTimeout(() => {
                confetti.remove();
            }, 6000);
        }, 200);
    </script>
</body>
</html>



在这里插入图片描述

在这里插入图片描述

五、使用体验

在基于华为云 ModelArts Studio 平台部署并使用 AingDesk AI 聊天助手 的过程中,我深刻感受到其强大的集成能力与出色的交互体验。整个部署流程简洁高效,平台提供了完善的模型管理、API 配置和在线调试功能,即使是初次接触AI开发的用户也能快速上手。借助 DeepSeek 提供的高质量语言模型 DeepSeek-R1-250528,AingDesk 展现出了极高的对话理解能力和多轮交互稳定性,在知识问答、代码生成、网页设计等多个场景下都表现优异。无论是本地测试还是对外服务,系统响应迅速,输出内容准确且富有逻辑性,真正实现了“开箱即用”的智能助手体验。通过此次实践,我对华为云 ModelArts Studio 在 AI 工程化落地方面的强大支撑能力有了更深入的认识,也为 AingDesk 在未来更多应用场景中的拓展充满信心。

六、实践总结


🎯 总结:强强联合,让 AI 开发更简单高效!

在本次基于 华为云 ModelArts Studio 打造 AingDesk AI 聊天助手 的实践中,我们深刻感受到华为云在 AI 领域的强大支撑能力。从模型部署到接口调用,再到服务上线,整个流程高效流畅,真正实现了“开箱即用”的智能开发体验。结合 Flexus 弹性云服务器DeepSeek 高质量大模型,AI 应用落地从未如此轻松。

ModelArts Studio:一站式 AI 工程化平台典范

华为云 ModelArts Studio 凭借其一站式的开发体验、可视化的操作界面与强大的资源调度能力,成为我们构建 AI 助手的理想选择。无论是本地模型部署、API 接口封装,还是多模型协同测试,ModelArts Studio 都展现了卓越的稳定性与灵活性,极大降低了 AI 开发门槛。

  • ✅ 模型一键部署
  • 🔧 接口快速调试
  • 📊 服务实时监控
  • 🌐 多环境灵活切换

🌟 华为云 + DeepSeek = AI 未来的最佳拍档

通过本次项目,我们不仅验证了 AingDesk AI 聊天助手 在问答、代码生成、网页设计等多个场景下的实用价值,也更加坚定了对 华为云平台DeepSeek 模型能力的信心。两者强强联合,为企业和个人开发者提供了从想法到落地的完整解决方案。

🚀 如果你也想打造属于自己的 AI 应用,不妨从 华为云 ModelArts Studio 开始,开启你的智能开发之旅!