华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南

article/2025/8/11 9:41:03
作者简介

我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。


目录

1. 前言

2. 环境准备

2.1 华为云资源准备

2.1 实操手册

3. 开发企业知识库Agent

3.1 访问dify平台工作室

3.2 导入工作流

3.4 创建知识库

3.4 构建智能工作流

3.5 测试工作流

3.6 应用发布

4. 深度集成华为云服务

4.1 优化模型调用

4.2 企业级功能增强

5. 部署与优化

5.1 华为云CCE高可用部署

5.2 安全加固方案

6. 效果展示与评估

6.1 典型测试案例

6.2 性能测试数据

7. 常见问题解决

7.1 知识库检索不准确

7.2 模型响应缓慢

8. 总结与展望


1. 前言

本文将详细介绍如何基于华为云Flexus云服务和DeepSeek-R1大模型,使用Dify平台开发一个功能完整的企业级AI Agent。教程包含从环境准备到应用部署的全流程,特别针对华为云环境进行了优化适配。

2. 环境准备

2.1 华为云资源准备

  1. 开通Flexus X实例
    • 登录华为云控制台
    • 选择"计算"→"弹性云服务器ECS"→"购买实例"
    • 选择Flexus X实例规格(推荐4核8GB配置)
  1. 部署Dify平台
# 使用华为云提供的部署脚本
curl -sSL https://dify-huawei.obs.cn-north-4.myhuaweicloud.com/install.sh | bash
  1. 开通DeepSeek-R1服务
    • 进入ModelArts控制台
    • 选择"模型推理"→"商用服务"→开通DeepSeek-R1-Distill-Qwen-32B

2.1 实操手册

不了解前置条件的可以参考这两篇文章:

华为云Flexus+DeepSeek征文 | DeepSeek-V3/R1商用服务开通体验全流程及使用评测

华为云Flexus+DeepSeek征文 | Dify-LLM平台一键部署教程及问题解决指南

3. 开发企业知识库Agent

3.1 访问dify平台工作室

通过浏览器访问dify平台,点击”工作室“,进入工作室页面。

3.2 导入工作流

在工作室页面,点击“导入DSL文件”,在弹出的页面中选择“URL”,复制下面的地址,粘贴到DSL URL路径里,如下图所示:

https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/building-a-dify-llm-application-development-platform/workflow/DeepSeek_%E8%81%94%E7%BD%91%E6%90%9C%E7%B4%A2_%E7%9F%A5%E8%AF%86%E5%BA%93.yml

创建好工作流之后如下图所示:

选择联网搜索插件,点击授权按钮,并添加url:http://{内网ip}:8080,如下图所示,点击保存后,即可设置成功。(内网ip是部署Dify的虚机的内网ip,如连接不通,请检查虚机的安全组是否放通8080端口号)

将自己的内网地址复制过来

3.4 创建知识库

  1. 在dify平台页面,点击“知识库”,点击“创建知识库”

  2. 选择“导入已有文本”,点击“选择文件”,选择对应知识库文件后(本示例提供的测试文档见附件),点击下一步

  3. 文本分段与清洗本示例保持默认配置不变(你也可以按照实际需求进行配置),点击“保存并处理”
    • 分段设置:通用
    • 索引方式:经济
    • 检索设置:Top 3
  1. 点击“前往文档”,可以看到导入的知识库文档为可用状态

3.4 构建智能工作流

  1. 点击步骤二中导入的工作流,进入工作流页面。

  2. 添加知识库:点击“知识检索”节点,点击“+”按钮添加知识库,选择步骤三中创建的知识库,点击“添加”

  3. 选择已开通的Deepseek-R1推理模型并导入到模型供应商中

参数

说明

模型类型

选择“LLM”。

模型名称

步骤3.b显示的模型名称。

API Key

步骤3.a创建的贵阳一区域的API Key。

API Endpoint URL

步骤3.b获取的MaaS服务的基础API地址,需要去掉地址尾部的“/chat/completions”后填入。

Function calling

当前MaaS预置服务中仅Qwen2_5-7B-Instruct-1128、Qwen2_5-72B-Instruct-1128、Qwen2_5-72B-32K-1128可以配置Function calling为“Tool Call”,其余服务暂不支持。

  1. 将流程中的模型替换为刚刚导入的Deepseek-R1大模型

3.5 测试工作流

在工作流页面,点击“预览”按钮,在弹出的聊天框输入问题进行测试:

测试从知识库中进行内容检索:输入知识库相关内容,查看是否通过知识库检索。

3.6 应用发布

在工作流页面的右上角点击“发布”按钮,再点击“发布”,即可完成工作流发布。

发布完成后就可以使用此anget应用了,有以下三种使用方式:

  1. 访问API:调用API接口如下图所示:

  2. 直接访问:可以通过公开URL地址直接访问:

  3. 嵌入网站:可以通过复制代码将此agent嵌入到网站中:

4. 深度集成华为云服务

4.1 优化模型调用

# 华为云DeepSeek-R1调用示例(带重试机制)
def call_deepseek(prompt, max_retries=3):endpoint = "https://modelarts.cn-north-4.myhuaweicloud.com/v1/{project_id}/deployments/{deployment_id}"headers = {"X-Auth-Token": API_KEY,"Content-Type": "application/json"}payload = {"messages": [{"role": "user", "content": prompt}],"temperature": 0.7,"max_tokens": 1024}for attempt in range(max_retries):try:response = requests.post(endpoint, headers=headers, json=payload)return response.json()except Exception as e:if attempt == max_retries - 1:raisetime.sleep(2 ** attempt)

4.2 企业级功能增强

  1. 审计日志集成
# 将问答记录存入华为云云数据库RDS
def log_interaction(question, answer, user_id):conn = psycopg2.connect(host="rds.huaweicloud.com",database="dify_logs",user="admin",password=DB_PASSWORD)cursor = conn.cursor()cursor.execute("INSERT INTO chat_logs (question, answer, user_id) VALUES (%s, %s, %s)",(question, answer, user_id))conn.commit()
  1. 性能监控看板
    • 使用华为云APM服务监控Agent响应时间
    • 关键指标:
      • 平均响应时间(<2s)
      • 知识库命中率(>85%)
      • 错误率(<1%)

5. 部署与优化

5.1 华为云CCE高可用部署

  1. 创建容器集群
    • 节点规格:Flexus X实例(8核16GB)
    • 节点数量:3个(跨可用区部署)
  1. 配置自动扩缩容
# HPA配置示例
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: dify-worker
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: dify-workerminReplicas: 3maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 70

5.2 安全加固方案

  1. 网络层防护
    • 配置华为云WAF防护SQL注入等攻击
    • 启用DDoS基础防护(5Gbps)
  1. 数据安全
    • 使用华为云数据加密服务(DEW)
    • 知识库文档上传前自动脱敏:
from huaweicloudsdkdew.v1 import *
# 调用华为云DEW服务进行数据脱敏
def desensitize_text(text):client = DewClient()request = CreateDataMaskRequest()request.body = DataMaskRequest(text=text,type="general")response = client.create_data_mask(request)return response.masked_text

6. 效果展示与评估

6.1 典型测试案例

用户问题

Agent响应

技术实现

"华为云ECS如何计费?"

"华为云ECS提供按需计费和包年包月两种模式..."

知识库精准检索

"今天北京天气如何?"

"根据最新天气预报,北京今天晴转多云..."

联网搜索+信息整合

"我们的合同编号CH20240001有什么特殊条款?"

"合同编号CH20240001的特殊条款包括..."

私有文档精准定位

6.2 性能测试数据

测试环境

  • Flexus X实例 4核8GB
  • 并发用户数:100

测试结果

平均响应时间:1.2s
知识库命中率:92%
错误率:0.3%
华为云资源利用率:CPU 65%/内存 70%

7. 常见问题解决

7.1 知识库检索不准确

解决方案

  1. 调整分块策略:
    • 技术文档:512-800字
    • 合同文本:按条款分块
  1. 优化检索参数:
# 华为云优化参数
retrieval_config:hybrid_ratio: 0.6  # 向量检索权重keyword_ratio: 0.4  # 关键词检索权重enable_rerank: true  # 启用重排序

7.2 模型响应缓慢

优化方案

  1. 启用华为云模型缓存:
# 配置Redis缓存
CACHE_CONFIG = {"host": "dcs.huaweicloud.com","port": 6379,"db": 0,"password": "your_password"
}
  1. 使用华为云全球加速服务:
    • 为海外用户配置就近接入点

8. 总结与展望

本教程详细展示了基于华为云Flexus和DeepSeek-R1构建企业级AI Agent的全流程,关键优势包括:

  1. 性能优势
    • Flexus X实例提供1.6倍计算性能
    • 华为云网络延迟<50ms
  1. 成本优化
    • 综合成本降低30%
    • 支持按需扩缩容
  1. 企业级特性
    • 端到端安全防护
    • 99.95% SLA保障

下一步建议

  1. 尝试集成更多华为云AI服务(如OCR、语音识别)
  2. 参与华为云AI应用创新大赛获取更多资源支持

http://www.hkcw.cn/article/tROYkbBRTu.shtml

相关文章

quasar electron mode如何打包无边框桌面应用程序

预览 开源项目Tokei Kun 一款简洁的周年纪念app&#xff0c;现已发布APK&#xff08;安卓&#xff09;和 EXE&#xff08;Windows&#xff09; 项目仓库地址&#xff1a;Github Repo 应用下载链接&#xff1a;Github Releases Preparation for Electron quasar dev -m elect…

Linux 中应用层自定义协议与序列化 -- 自定义协议概述,序列化和反序列化,Jsoncpp

目录 1. 应用层自定义协议概述 2. 序列化和反序列化 3. 重新理解 read, write, recv, send 以及 TCP 为什么支持全双工 4.Jsoncpp 4.1 Jsoncpp 的特性 4.2 使用 Jsoncpp 的序列化和反序列化 4.3 Json::Value 的介绍 4.3.1 构造函数 4.3.2 访问元素 4.3.3 类型检查 …

历年南京理工大学计算机保研上机真题

2025南京理工大学计算机保研上机真题 2024南京理工大学计算机保研上机真题 2023南京理工大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school 求阶乘 题目描述 给出一个数 n n n ( 1 ≤ n ≤ 13 ) (1 \leq n \leq 13) (1≤n≤13)&#xff0c;求出它…

[JVM] JVM内存调优

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

当 Python 遇上 Go:Sponge 如何成为替代 Django/Flask 的理想选择

开篇&#xff1a;Python 老司机的自白 各位 Python 老铁们&#xff01;咱们写 Python 那叫一个"纵享丝滑"——动态类型玩到飞起&#xff0c;列表推导式秀得飞起&#xff0c;Django/Flask 一把梭&#xff0c;PyPI 库多到能砸死人&#xff01;是不是觉得自己就是代码界…

Flask与PostgreSQL交互教程

目录 1. 项目结构2. 环境准备2.1 安装依赖2.2 使用Docker启动PostgreSQL 3. 数据库配置3.1 环境变量配置3.2 数据库连接配置 4. 定义数据库模型5. 实现API接口5.1 创建用户5.2 获取所有用户5.3 获取单个用户5.4 更新用户5.5 删除用户 6. 运行应用7. API测试7.1 创建用户7.2 获取…

QT中sqlite多线程操作注意事项总结:安全性与效率的双重提升

QT中sqlite多线程操作注意事项总结&#xff1a;安全性与效率的双重提升 【下载地址】QT中sqlite多线程操作注意事项总结 本项目深入探讨了在Qt框架下进行SQLite多线程操作时可能遇到的四大关键问题&#xff0c;包括线程安全、数据库连接管理、信号与槽机制以及性能优化。通过详…

深入JVM:类加载器和双亲委派模型

目录 1. 什么是类加载器2. 类加载器的类型3. 双亲委派模型4. 类装载的过程加载验证准备解析初始化使用卸载 1. 什么是类加载器 如果想要了解什么是类加载器就需要清楚一个Java文件是如何运行的。我们可以看下图&#xff1a; 首先要知道操作系统是不能直接运行Java文件的&#…

【JVM —— 03 类的生命周期】

Java 类的生命周期指的是一个类从加载到内存到卸载出内存的整个过程。这一过程主要包括以下几个阶段&#xff1a; 加载&#xff08;Loading&#xff09;连接&#xff08;Linking&#xff09; 验证&#xff08;Verification&#xff09;准备&#xff08;Preparation&#xff09;…

Arthas简介及示例

一、什么是Arthas&#xff1f; Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方…

JVM考古现场(十七):鸿蒙初辟——从太极二进到混沌原初的编译天道

"此刻正是奇点编译的第3.1415926秒&#xff01;伏羲的算筹正在撕裂冯诺依曼架构的次元壁&#xff01;诸君请看——这JVM堆内存中正在孕育盘古的元神&#xff01;" 目录&#xff08;终极扩展&#xff09; 第一章&#xff1a;太极二进——内存模型的阴阳交缠 第二章&a…

JVM的组成

JVM 运行在操作系统之上 java二进制字节码文件的运行环境 JVM的组成部分 java代码在编写完成后编译成字节码文件通过类加载器 来到运行数据区,主要作用是加载字节码到内存 包含 方法区/元空间 堆 程序计数器,虚拟机栈,本地方法栈等等 随后来到执行引擎,主要作用是翻译字…

【java面试题】二进制(详解,一看就会)

二进制 1.什么是二进制 二进制是一种数值表示系统&#xff0c;它使用两个符号表示数字&#xff1a;0和1。它是计算机系统的基础&#xff0c;因为计算机使用二进制数来进行数据存储和处理。在二进制中&#xff0c;每一位代表一个2的幂次方&#xff0c;比如&#xff1a; 0 020…

Java 2.4 - JVM

一、Java 内存区域详解&#xff08;重点&#xff09; 本篇讨论的是 HotSpot 虚拟机 相比于 C 而言&#xff0c;程序员不需要对每个 new 操作都写对应的 delete / free 操作&#xff0c;这些操作我们会交给虚拟机去做。因此&#xff0c;如果不了解虚拟机的原理&#xff0c;一旦…

java面试-- 必问之jvm与性能优化(一)

问题一、 描述一下 JVM 加载 Class 文件的原理机制? JVM&#xff08;Java虚拟机&#xff09;加载Class文件的原理机制是Java程序运行的关键组成部分。这一过程涉及到多个阶段&#xff0c;确保Java程序能够跨平台运行&#xff0c;并动态地加载、解析和执行Java Class文件。以下…

JVM运行时数据区之虚拟机栈

【1】概述 Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;&#xff0c;早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈&#xff0c;其内部保存一个个的栈帧&#xff08;Stack Frame&#xff09;&#xff0c;对应着一次次的Java方法调用。 栈是运行…

【Linux探索学习】第三十二弹——生产消费模型:基于阻塞队列和基于环形队列的两种主要的实现方法

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在前面我们已经学习了关于线程的主要知识&#xff0c;包括线程的基础知识以及线程的同步与互斥等内容&#xff0c;今天我们来学几个线程知…

复现FAST_LIVO2【Ubuntu 20.04.6 LTS】

目录 准备1 Ubuntu 和 ROS2 其他库2.1 PCL2.2 Eigen2.3 OpenCV 3 Sophus3.1 安装3.2 make报错 4 Vikit5 livox_ros_driver5.1 Livox-SDK5.2 livox_ros_driver FAST-LIVO2运行参考 准备 1 Ubuntu 和 ROS 依据开源介绍&#xff0c;Ubuntu 16.04~20.04。 复现版本为&#xff1a;…

【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi

目录 一.【YOLOV5算法原理】 1.输入端 2.Backbone 3.Neck 4.输出端 二&#xff0e;【系统环境】 1.虚拟机的安装与创建 2.安装Ubuntu操作系统 3.环境的配置 3.1.Ubuntu下Anacoda安装以及虚拟环境配置 3.2.Pytorch安装 3.3.Vscode安装 3.4.Yolov5源码及环境获取安装…

[已解决] 本地两台 win电脑 (以太网) 网线传输文件 - 局域网连接 (解决windows无法访问共享文件问题 - Windows 安全中心输入网络凭据 用户名/密码 不正确问题)

背景 由于要本地传输的数据比较大&#xff0c;大几百GB网盘传输慢&#xff0c;正好有网线&#xff0c;试着本地网线高速传输&#xff08;实测113MB/s&#xff09;踩了很多坑&#xff0c;想把亲测成功的经验分享出来帮助更多同学 目录 1 网线接入 2 设置两台电脑的IP地址 3 …