华为开发者空间介绍:
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
免费领取开发者空间云主机
前言:
随着人工智能AI技术的迅速发展,各大厂商大语言模型不断涌现,中小型企业与开发者对于AI模型的需求也是越来越多样化,这里给大家推荐一款以华为云推出的 ModelArts Studio 大模型即服务平台,在平台上开通 DeepSeek-V3-32K 和 DeepSeek-R1-32K 商用服务的大模型,可以极大的以低门槛、高效率的方式接入并应用强大的大模型,成为了众多中小型企业和AI开发者的关注焦点。
一、华为开发者空间介绍:
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
- ①. 华为开发者空间为广大开发者提供的一站式开发者服务平台,为开发者提供全方位的技术支持和服务,帮助开发者更高效地开发和部署应用。
- ②. 在华为开发者空间,开发者可以享受到丰富的开发者工具、开发者社区、技术文档、培训课程、技术支持等服务,帮助开发者快速构建高质量的应用。
- ③. 华为开发者空间还提供了多种云服务,如云服务器、云数据库、云存储等,为开发者提供一站式的云计算解决方案。
1.1 华为开发者空间案例介绍:
以在“华为开发者空间”中的云主机为基础搭建Dify-LLM应用平台,为了更好的使用“华为云开通的ModelArts Studio 大模型即服务平台DeepSeek-V3-32K 和 DeepSeek-R1-32K 商用服务的大模型”和Dify功能,本案例中,我们将在华为开发者空间提供的云主机中安装Dify并进行探索相关功能展示。
1.2 华为云空间核心功能演示:
在华为开发者空间,华为云为每个新生态的开发者免费提供一台云主机,每位开发者每年可享有数百小时的云主机使用时长。
云主机预集成CodeArts IDE、代码仓及JDK、Python等运行时插件,解决本地开发环境中配置复杂、稳定性不足和依赖等问题,为开发者提供性能强大、安全、稳定、高效的开发环境,应用场景:
- ①. 个人开发者:为开发者提供丰富的开发工具,支持开发者应用构建;
- ②. 高校师生:支持教师开课、设计实验项目,学生学习课程及开发实践;
- ③. 开源共创:开发者进行开源适配和开发,完成项目并发布开源仓库和云商店,获得开源激励。
默认机器配置是4核8G的配置,这里我们选择安装Ubuntu 24.04的镜像安装包,点击安装成功后,可以通过两种不同的远程访问方式,主要区别体现在连接目的、交互界面、适用场景和技术实现上:
- ①. 进入桌面:为开发者提供丰富的开发工具,支持开发者应用构建。
- 通过图形化界面远程操作目标计算机的完整桌面环境(如Windows、macOS或Linux桌面)。
- 用户看到的界面与本地操作相同,可运行图形软件、编辑文件等。
- 典型工具:Windows远程桌面(RDP)、第三方软件(向日葵、TeamViewer)。
- 适用场景:远程办公、技术支持、图形化运维。 - ②. 进入远程终端:支持教师开课、设计实验项目,学生学习课程及开发实践。
- 通过命令行界面(CLI)远程登录目标设备,仅支持文本指令操作(如Linux的SSH、Windows的Telnet)。
- 无图形界面,只能执行命令、查看文本输出。
- 典型协议:SSH(安全)、Telnet(明文传输,不安全)。
- 适用场景:服务器运维、网络设备配置、批量脚本执行。
1.3 华为云主机安装Dify教程:
这里可以在Ubuntu系统中,直接安装docker和docker-compose,然后使用-v命令来查看是否安装成功,也可以直接配置一下加速器。
接下来我们下载dify的链接,可以提示fatal无法访问这个连接,提示“Couldn’t connent to server”,试了几次了都没法成功,那我只能在本地下载这个包下来,然后,上传到开发者云空间中,但是使用wget和curl等相关命令都不可以下载这个云空间的连接,我们只能通过“进入桌面”的方式,从火狐浏览器进行下载成功。
在火狐浏览器下载完成后,我们再切回到远程终端上,在Downloads目录下面进行解压,我们进入解压的目录中,再到docker目录下面执行docker-compose up -d命令即可下载镜像,最后就会全部起来起来,接下来,就可以使用Dify来进行使用了。
三、案例介绍 - 什么是Dify?
Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。该平台结合了后端即服务(Backend as Service, BaaS)和LLMOps的理念,为开发者提供了 一个用户友好的界面和一系列强大的工具,使他们能够快速搭建生产级的AI应用。
Dify 是一个用于构建 AI 应用程序的开源平台,Dify融合了后端即服务(Backend as Service)和LLMOps理念。它支持多种大型语言模型,如Claude3、OpenAI等,并与多个模型供应商合作,确保开发者能根据需求选择最适合的模型。Dify通过提供强大的数据集管理功能、可视化的Prompt编排以及应用运营工具,大大降低了AI应用开发的复杂度。
在Dify平台上,通过选择模型、编写提示、添加工具与知识库、配置推理模式及对话开启器,最后进行调试预览并发布为Webapp,实现Agent的创建与部署。
四、什么是DeepSeek?
在人工智能飞速发展的当下,新的AI工具如雨后春笋般不断涌现,DeepSeek便是其中备受瞩目的一颗新星。DeepSeek 是由杭州深度求索人工智能基础技术研究有限公司(DeepSeek AI)推出的人工智能助手工具,其核心是基于大语言模型(LLM)技术构建的智能应用系统,定位为开放、高效、多能的AI助手平台。
与传统AI应用不同,DeepSeek采用深度学习和高效的神经网络技术,极大地提升了回应速度和内容质量。用户只需简单描述需求,它便能生成多样化且富有创意的内容,彻底改变了人们与AI的互动方式。
五、初识ModelArts Studio平台:
ModelArts Studio 是华为云面向大模型应用推出的一站式 AI 平台,提供模型即服务(Model as a Service, MaaS)能力,平台构建了全栈全生命周期的模型开发与部署工具链,旨在帮助开发者和企业用户快速实现大模型的落地应用。
5.1 什么是ModelArts Studio?
“ModelArts Studio平台”提供了丰富的模型选择、灵活的推理接口、统一的API调用方式,以及完整的统计与监控系统,使AI的开发、测试与部署变得前所未有地高效和便捷。我们可以借助 ModelArts Studio,用户无需准备模型、训练模型、测试模型,可以直接访问华为云内置的大模型服务,包括语言模型、图像模型等。
5.2 访问ModelArts Studio:
我们在登录与注册华为云账户后,先进行实名制认证,再点击“ModelArts Studio 官方页面”进入平台首页,在这里可以点击“ModelArts Studio控制台”进入大模型推理入口。
进入首页后,有一个弹框授权的同意,点击“已阅读”即可,然后,在左侧导航栏中选择“模型推理” -> “在线推理”选项栏。这里平台展示5种可供使用的预置大模型。其中“商用服务”,可以看到 DeepSeek-V3-32K 和 DeepSeek-R1-32K 在内的多个模型。
这里可以根据自己需求进行开通,我这里选择V3版本的模型,系统将自动弹出商用服务开通界面,开通即可。
在新弹出的开通服务窗口中,我们可以勾选需要开通的模型服务。本次笔者选择了 DeepSeek-V3-32K 和 DeepSeek-R1-32K 两个模型。
随后,阅读并勾选同意服务使用条款,点击“开通服务”按钮,我这里选择V3版本的模型,不过,要预先冲10块钱,因为是付费的产品,如果不预计充值,避免测试过程中出现部署失败等问题,需确保华为云账号余额大于10元。
5.3 在线模型体验:
在开通ModelArts Studio模型后,我们可以直接使用“在线体验”来进行测试,也可以支持通过API接口集成到其他系统或产品中,这里的调用方式上非常灵活,非常方便集成。
在DeepSeek-V3-32K模型开通成功后,点击“在线体验”即可看到已开通的 DeepSeek 模型,可以通过对话即可开始与模型进行自然语言的AI交流。可以看到整个响应过程非常流畅,在我们输入问题后模型基本在1-2秒内可以完成回复,表现非常的不错。
5.4 API调用与集成:
ModelArts Studio 提供了详尽的 API 文档与示例,包括请求参数、返回结构、错误码说明等,适用于开发者将模型集成进自己的应用程序中。
通过访问平台自动生成的 API 地址,只需配置 token 与模型 ID,即可实现代码级调用,支持 Python、JavaScript、Java 等多种语言。每次请求与返回均可在平台控制台查看详细日志,并有调用次数和消耗额度的实时统计功能,方便管理和优化调用策略。
API 还支持配置上下文窗口长度、温度参数、top_p 等选项,以适应不同类型的生成任务,非常适合需要高自定义度的应用场景。
六、华为云云主机一键部署Dify平台:
6.1 初始化账号并登录Dify平台首页:
上个文章里面,有详细讲解如何基于华为云云主机一键部署Dify平台部署完成后,在输出的资源信息中点击Dify平台的IP相关的访问地址,在第一次访问需设置管理员账户信息,管理员拥有最大的权限,可用于创建应用和管理应用,接下来通过设置的邮箱账号登录Dify平台即可。
登录后,即可进入Dify的工作平台界面,Dify的一个“应用”指基于LLM构建的实际场景应用,通过创建应用,可将智能 AI 技术应用于特定的需求,它既包含了开发 AI 应用的工程范式,也包含了具体的交付物,一个应用为开发者交付:
- ①. 封装友好的 API,可由后端或前端应用直接调用,通过 Token 鉴权。
- ②. 开箱即用、美观且托管的 WebApp,你可以 WebApp 的模版进行二次开发。
- ③. 一套包含提示词工程、上下文管理、日志分析和标注的易用界面。
6.2 Chatflow工作流:
在Dify首页的平台页面,选择创建“空白应用”,在应用类型这里可以选择并选择“Chatflow”类型的工作流创建模式。
“Chatflow”可以支持记忆的复杂多轮对话工作流,该类型支持多节点的对话式流程配置,适合处理自然语言理解、代码执行、数据分析等复杂任务。
这里为了很好的方便用户的使用,可以在开始的步骤这里增加2个引导对话的开场白,这里我们配置三个问题:
- ①. 查询所有的订单商品。
- ②. 查询所有的商品类型。
- ③. 查询所有的订单总价格。
6.3 工具使用 - 获取当前系统时间:
在“开始”节点后面,可以新增一个工具“获取时间戳”,可以方便后面查询使用,可以很好的获取当前的时间戳是多少,好基于一个某个时间段来进行查询。
添加完工具“获取当前时间”后,点击详情中,可以在时区这里修改选择到“亚洲/上海”这个时区,但是这里好像没有北京的时区。
6.4 添加LLM模型:
在“获取当前时间”节点之后,我们可以增加一个“LLM节点”,这里可以看到没有设置模型,我们可以开通“ModelArts Studio_MaaS_大模型即服务_华为云”之前开通DeepSeek-V3/R1商用服务。
在右上角点击“设置”后,可以在左侧的“工作空间”中,看到“模型供应商”,这里可以我们找到“OpenAI-API-compatible”这个模型供应商是可以兼容OpenAI API的模型供应商的,我们点击“安装”即可。
在安装成功后,可以看到在模型列表中的“待配置”中,会显示“OpenAI-API-compatible”这个模型供应商,点击“添加模型”时,可以增加“ModelArts Studio_MaaS_大模型即服务_华为云”之前开通DeepSeek-V3/R1商用服务模型。
在添加“OpenAI-API-compatible”弹框中,这里有一些选项,我们可以看到有模型类型、模型名称、模型显示名称、API Key、API endpoint URL、API endpoint中的模型名称等信息。
在“ModelArts Studio_MaaS_大模型即服务”的控制台中,在“模型推理” -> “在线推理”中找到我们需要添加的模型,点击“调用说明”按钮。
在“调用说明”弹框中,这里表示可以通过其它的方式来进行调用,这里有2项:
- ①. Rest API:REST(Representational State Transfer)是一种基于 Web 标准的软件架构风格,通过 HTTP 协议操作资源(如数据实体),使用统一接口设计实现客户端与服务器的通信。
- ②. OpenAI SDK:OpenAI SDK 是一套由 OpenAI 官方提供的软件开发工具包,本质是让开发者能快速调用各类 AI 能力的「工具箱」。它不是单个工具,而是集成文本生成、图像创作、语音识别等功能的统一接口,开发者只需几行代码就能嵌入 AI 功能到自己的应用中。
打开“OpenAI SDK”的选项页面,我们可以看到模型名称(一定要填写对,刚开始没填写对,弄了好久才好)、模型API地址,那么我们可以来添加API Key,点击“API Key管理”跳转到API Key管理页面。
创建好API Key后,这里需要注意一下,API Key创建后只能显示一次,后面就不会再显示了,需要保存好,如果是企业这种账号的话,更应该注意安全的保护。
接下来就是把模型类型、模型名称、模型显示名称、API Key、API endpoint URL、API endpoint中的模型名称添加进来即可,可以看到右下角就把DeepSeek-v3这个模型添加成功,就可以在后面进行使用了。
6.5 定义LLM提示词:
在添加的LLM节点后,我们可以看到有System选项中,可以添加一些提示词,表示添加一个订单data_orders订单信息表,里面有一些字段,那么,我们可以使用LLM大模型帮我根据这个订单表的信息,生成10条不同的SQL查询语句。
### 角色
你是一个专业的SQL生成工具,需要根据用户生成标准的mysql库的SQL。
### 任务
请根据以下问题生成 JSON 格式的 SQL 查询数组:
表名:data_orders(订单信息表)
字段说明:
- id: 主键
- order_id: 订单号
- goods_name: 商品名称
- cate_name: 高品分类
- price: 价格
- num: 数量
- status: 订单状态
- created_at: 订单创建时间
- updated_at: 订单更新时间
### 系统参数
当前时间:{{#1750579193762.text#}}
### 要求:
1. 根据用户提出的问题,生成 JSON 格式的 SQL 查询数组。
2. 每条 SQL 查询必须与问题直接相关,并从不同维度分析数据。
3. 生成的SQL最多10个。
4. 将所有生成的 SQL 查询封装到一个 JSON 数组中。
5. 确保 SQL 查询语法正确,并考虑性能优化。
6. 输出必须以 ```json 开始。
7. 如果问题涉及多个统计维度,请分别生成对应的子查询。
8. 涉及全量的应查询SQL以订单聚合。
26.6 代码执行节点探索:
Dify的代码执行功能主要通过工作流中的代码执行节点实现,开发者可在沙箱环境中运行自定义Python逻辑,同时严格限制文件系统访问和网络请求等敏感操作。
必须定义main函数作为入口,输入参数对应工作流中的变量名,返回值需为字典且键名匹配输出变量声明。例如处理JSON数据时,函数内部需导入pandas等模块并返回结构化结果。
import re
import json
def main(arg1: str) -> dict:
try:
# 使用正则表达式提取被 ```json 和 ```包裹的内容
match = re.search(r'```json\s*([\s\S]*?)\s*```', arg1)
if not match:
return {
"result": [{},{}]
}
# 提取 JSON 字符串
json_str = match.group(1).strip()
# 将 JSON 字符串解析为 Python 字典
result_dict = json.loads(json_str)
return {
"result" : result_dict
}
except Exception as e:
# 如果解析失败,打印错误信息并返回默认输出
return {
"result": []
}
这里有一个坑的地方,就是使用dify调试工具不成功,但是使用自己的python代码是成功的,以下是上一个LLM根据数据库分析的结果来进行匹配:
{
"text": "```json\n[\n {\n \"query\": \"SELECT COUNT(*) AS total_orders FROM data_orders;\",\n \"description\": \"查询总订单数量\"\n },\n {\n \"query\": \"SELECT SUM(price * num) AS total_revenue FROM data_orders;\",\n \"description\": \"计算总销售额\"\n },\n {\n \"query\": \"SELECT cate_name, COUNT(*) AS order_count FROM data_orders GROUP BY cate_name ORDER BY order_count DESC;\",\n \"description\": \"按商品分类统计订单数量\"\n },\n {\n \"query\": \"SELECT status, COUNT(*) AS status_count FROM data_orders GROUP BY status ORDER BY status_count DESC;\",\n \"description\": \"按订单状态统计订单数量\"\n },\n {\n \"query\": \"SELECT goods_name, SUM(num) AS total_quantity FROM data_orders GROUP BY goods_name ORDER BY total_quantity DESC LIMIT 10;\",\n \"description\": \"查询销量前十的商品\"\n },\n {\n \"query\": \"SELECT DATE(created_at) AS order_date, COUNT(*) AS daily_orders FROM data_orders GROUP BY order_date ORDER BY order_date DESC LIMIT 7;\",\n \"description\": \"查询最近7天的每日订单数量\"\n },\n {\n \"query\": \"SELECT HOUR(created_at) AS hour_of_day, COUNT(*) AS hourly_orders FROM data_orders GROUP BY hour_of_day ORDER BY hour_of_day;\",\n \"description\": \"按小时统计订单数量\"\n },\n {\n \"query\": \"SELECT cate_name, SUM(price * num) AS category_revenue FROM data_orders GROUP BY cate_name ORDER BY category_revenue DESC;\",\n \"description\": \"按商品分类统计销售额\"\n },\n {\n \"query\": \"SELECT AVG(price) AS avg_price, AVG(num) AS avg_quantity FROM data_orders;\",\n \"description\": \"计算平均商品价格和平均购买数量\"\n },\n {\n \"query\": \"SELECT COUNT(DISTINCT order_id) AS unique_orders FROM data_orders;\",\n \"description\": \"查询唯一订单数量\"\n }\n]\n```",
"usage": {
"prompt_tokens": 273,
"prompt_unit_price": "0",
"prompt_price_unit": "0",
"prompt_price": "0",
"completion_tokens": 462,
"completion_unit_price": "0",
"completion_price_unit": "0",
"completion_price": "0",
"total_tokens": 735,
"total_price": "0",
"currency": "USD",
"latency": 12.396073523996165
},
"finish_reason": "stop"
}
这里可以使用dify自带的调试工具来进行调试,在进行“预览”的环节,可以拿到LLM上个模型产出的返回值(如上面),但是拿到“代码执行”节点进行调试时,发现输入的参数没有效果,并没有把result结果解析出来。
可以看到我们将上面相同的代码,放到IDE中是完全可以匹配结果的,这里我排错了很久,希望大家也可以多注意一下,可以看到这里是没有结果的,但是代码确实没问题,我用IDE尝试过了,而且在预览环节也没问题。
所以在这个“代码执行”节点执行返回结果是这个样子:
{
"result": [
{
"query": "SELECT COUNT(*) AS total_orders FROM data_orders;",
"description": "查询总订单数量"
},
{
"query": "SELECT SUM(price * num) AS total_revenue FROM data_orders;",
"description": "计算总销售额"
},
{
"query": "SELECT cate_name, COUNT(*) AS order_count FROM data_orders GROUP BY cate_name ORDER BY order_count DESC;",
"description": "按商品分类统计订单数量"
},
{
"query": "SELECT status, COUNT(*) AS status_count FROM data_orders GROUP BY status ORDER BY status_count DESC;",
"description": "按订单状态统计订单数量"
},
{
"query": "SELECT goods_name, SUM(num) AS total_quantity FROM data_orders GROUP BY goods_name ORDER BY total_quantity DESC LIMIT 10;",
"description": "查询销量前十的商品"
},
{
"query": "SELECT DATE(created_at) AS order_date, COUNT(*) AS daily_orders FROM data_orders GROUP BY order_date ORDER BY order_date DESC LIMIT 7;",
"description": "查询最近7天的每日订单数量"
},
{
"query": "SELECT HOUR(created_at) AS hour_of_day, COUNT(*) AS hourly_orders FROM data_orders GROUP BY hour_of_day ORDER BY hour_of_day;",
"description": "按小时统计订单数量"
},
{
"query": "SELECT cate_name, SUM(price * num) AS category_revenue FROM data_orders GROUP BY cate_name ORDER BY category_revenue DESC;",
"description": "按商品分类统计销售额"
},
{
"query": "SELECT AVG(price) AS avg_price, AVG(num) AS avg_quantity FROM data_orders;",
"description": "计算平均商品价格和平均购买数量"
},
{
"query": "SELECT COUNT(DISTINCT order_id) AS unique_orders FROM data_orders;",
"description": "查询唯一订单数量"
}
]
}
6.7 迭代节点:
上面我们是通过LLM生成的10条SQL语句,再通过代码执行,可以得到10条数组结构的一个数据结构,那我们想通过SQL查询器,将每一条SQL去执行,再返回相关的结果,此时,可以使用到迭代节点。
在 Dify 中,迭代节点专指工作流中对一组数据执行循环处理的逻辑单元,其核心价值在于避免重复配置相同操作节点,实现对批量数据的自动化遍历与处理。
6.8 循环处理机制:
迭代节点会自动识别输入数据(如列表、数组),逐项执行子工作流中的节点逻辑。例如批量处理 10 个 URL 链接时,只需在迭代节点内配置单次链接分析逻辑(如调用 LLM 生成摘要),系统即可自动循环处理所有链接并输出聚合结果,这种设计大幅减少了重复节点的拖拽操作,尤其适用于数据清洗、多源信息提取等场景。
批量生成上传 10 份SQL至工作流,通过迭代节点触发 LLM 对每个SQL的查询,最终返回结构化数据。
本质上,迭代节点是复杂工作流的“压缩机”——它将重复性任务折叠进循环结构,既降低流程图的视觉复杂度,又通过自动化遍历提升数据处理效率:
- ①. 上下文继承:每次循环继承上游节点的变量(如用户 ID、操作权限),确保子流程在统一上下文中运行。
- ②. 结果聚合优化:输出结果自动合并为数组格式,下游节点可直接调用(如将迭代生成的多个摘要传入变量聚合器节点)。 - ③. 循环中断控制:支持设置最大迭代次数或条件判断(如遇失败条目自动停止),避免资源浪费。
九、总结:
今天主要通过“华为云云空间主机快速搭建Dify-LLM应用开发平台的技能”, 基于Dify平台开发AI Agent的完整流程实现了基于 Text2SQL 的 Dify 工作流,借助 Dify 平台实现自然语言到 SQL 查询的转换,并进行数据库查询与图表生成。
本文详细的介绍了整个工作流的实现步骤,包括工作流的制作,如添加对话开场白、获取当前系统时间、配置 LLM 大语言模型以及使用 SQL Execute 工具执行 SQL 查询等节点与工具的使用。
通过本案例,华为开发者空间提供的云端开发环境,完美解决本地设备算力不足的问题,结合DeepSeek大模型的精准代码生成能力,本次工作流涉及到 Dify 版本的使用、相关工具(时间工具、ECharts 图表生成、database)的安装与配置,以及 SQL 语句的生成与执行等知识,华为云主机结合Dify平台与DeepSeek大模型,实现了从自然语言到SQL的智能转换与数据分析,极大推动了AI在企业数据场景的落地。
通过本文的介绍可以看到,随着模型能力与平台生态的不断完善,智能化数据分析将成为更多企业的“标配工具”,助力业务洞察与决策提效。如果正在寻找高效、智能、可扩展的数据分析方案,基于华为云构建的这一套系统无疑是值得尝试的理想选择。