华为云Flexus+DeepSeek征文|基于Dify构建求职简历美化助手
一、构建RSS实时热点新闻聚合助手前言
在数字信息爆炸的时代,我们每天被淹没在海量的媒体资讯洪流中,受限于有限的时间和精力,人们越来越需要聚焦两类核心信息:一是与个人兴趣深度契合
的垂直领域资讯,二是全社会共同关注的实时热点事件
。传统信息获取方式面临多重困境,用户往往需要手动切换多个平台(如微博、今日头条、Bilibili、36Kr等),在碎片化的信息流中反复筛选,消耗大量时间却只能获得有限的有效信息,而且这种模式存在三大痛点:各平台热点分散且格式不统一、人工检索难以保证实时性、平台算法推荐易形成信息茧房。构建了一个智能新闻枢纽
系统,实现真正的一站式热点聚合
很有意义!
Flexus X
实例以柔性算力
为核心突破,打破了传统云服务器固定 CPU/内存配比的限制,用户可根据 DeepSeek-V3 模型推理的实际负载(如高并发请求、长序列处理),动态定制 vCPU 与内存配比(最高支持 3:1 的 CPU 密集型配置)。这种资源灵活性大幅提升了算力利用率,避免为冗余资源付费,尤其适合大模型推理中波动性较强的流量场景。
二、构建RSS实时热点新闻聚合助手环境
2.1 基于FlexusX实例的Dify平台
华为云FlexusX实例
提供高性价比的云服务器,按需选择资源规格、支持自动扩展,减少资源闲置,优化成本投入,并且首创大模型QoS保障,智能全域调度,算力分配长稳态运行,一直加速一直快,用于搭建Dify-LLM应用开发平台。
Dify是一个能力丰富的开源AI应用开发平台
,为大型语言模型(LLM)应用的开发而设计。它巧妙地结合了后端即服务(Backend as Service)和LLMOps的理念,提供了一套易用的界面和API,加速了开发者构建可扩展的生成式AI应用的过程。
参考:华为云Flexus+DeepSeek征文 | 基于FlexusX单机一键部署社区版Dify-LLM应用开发平台教程
2.2 基于MaaS的模型API商用服务
MaaS预置服务的商用服务为企业用户提供高性能、高可用的推理API服务,支持按Token用量计费的模式。该服务适用于需要商用级稳定性、更高调用频次和专业支持的场景。
参考:华为云Flexus+DeepSeek征文 | 基于ModelArts Studio开通和使用DeepSeek-V3/R1商用服务教程
三、构建RSS实时热点新闻聚合助手实战
3.1 配置Dify环境
输入管理员的邮箱和密码,登录基于FlexusX部署好的Dify网站
将MaaS平台的模型服务接入Dify,这里我们选择的是DeepSeek V3商用服务
,需要记住调用说明中的接口信息
和 API Key 管理中API Key
,若没有可以重新创建即可
配置Dify模型供应商:设置 - 模型供应商 - 找到OpenAI-API-compatible
供应商并单击添加模型
,在添加 OpenAI-API-compatible对话框,配置相关参数,然后单击保存
参数 | 说明 |
---|---|
模型类型 | 选择LLM 。 |
模型名称 | 填入模型名称。 |
API Key | 填入创建的API Key。 |
API Endpoint URL | 填入获取的MaaS服务的基础API地址,需要去掉地址尾部的“/chat/completions”后填入 |
3.2 配置Dify工具
rookie_rss
一款多平台新闻聚合插件,基于开源项目 DailyHotApi,方便用户无代码的方式获取多平台热搜与热点新闻。
访问Dify - 工具,搜索 rookie_rss,然后找到并安装它
安装成功后,点击去授权 rookie_rss,默认每日热榜 URL是 https://api-hot.imsyy.top/
,点击保存即可
DailyHotApi 的手动部署请参考 DailyHotApi,然后替换此 URL 使用本地服务。
授权成功后,我们就可以将 rookie_rss节点添加到 Chatflow 或 Workflow 用于获取实时新闻
3.3 创建RSS实时热点新闻聚合助手
在 Dify - 工作室,创建空白应用,选择 Chatflow,输入应用名称和图标,点击创建
删除其他默认节点,在开始节点
中添加输入字段,用于选择新闻类型,可以是掘金、微博、今日头条等
tyep
(下拉选项):热点新闻类型
添加条件分支
节点,判断的条件是选择的新闻类型,如掘金、bilibili、ac_fun、微博、今日头条、36kr、虎嗅、hellogithub进行判断,从而变成 8 个分支,根据平台的不同通过RSS获取的参数也不一样
每个分支都添加添加工具节点,选择 rookie_rss
然后配置 rookie_rss
,需要填写 平台名称
和 返回结果数量
2个参数,平台名称就根据条件分支的内容即可,返回数量都填 5 即可
rookie_rss 插件返回的数据如下,这里使用的的掘金
平台
{
"text": "",
"files": [],
"json": [
{
"articles": [
{
"author": "奈德丽",
"hot_score": 6534,
"id": "7514275553726644235",
"links": {
"mobile": "https://juejin.cn/post/7514275553726644235",
"pc": "https://juejin.cn/post/7514275553726644235"
},
"metadata": {
"list_type": "文章榜",
"platform": "juejin",
"update_time": "2025-06-27T07:20:39.440Z"
},
"rank": 1,
"title": "同事用了个@vue:mounted,我去官网找了半天没找到"
},
{
"author": "CAD老兵",
"hot_score": 3105,
"id": "7519442421626765312",
"links": {
"mobile": "https://juejin.cn/post/7519442421626765312",
"pc": "https://juejin.cn/post/7519442421626765312"
},
"metadata": {
"list_type": "文章榜",
"platform": "juejin",
"update_time": "2025-06-27T07:20:39.440Z"
},
"rank": 2,
"title": "JavaScript 中的 Object.freeze() 及其和 TypeScript 中 readonly 的关系"
},
{
"author": "pany",
"hot_score": 2349,
"id": "7519074019619930147",
"links": {
"mobile": "https://juejin.cn/post/7519074019619930147",
"pc": "https://juejin.cn/post/7519074019619930147"
},
"metadata": {
"list_type": "文章榜",
"platform": "juejin",
"update_time": "2025-06-27T07:20:39.440Z"
},
"rank": 3,
"title": "V3 Admin Vite 5.0 焕新发行 🌈"
},
{
"author": "老周聊大模型",
"hot_score": 1998,
"id": "7519131837362389027",
"links": {
"mobile": "https://juejin.cn/post/7519131837362389027",
"pc": "https://juejin.cn/post/7519131837362389027"
},
"metadata": {
"list_type": "文章榜",
"platform": "juejin",
"update_time": "2025-06-27T07:20:39.440Z"
},
"rank": 4,
"title": "7天从入门到精通:Prompt Engineering超速通指南"
},
{
"author": "CAD老兵",
"hot_score": 1971,
"id": "7519502099870957568",
"links": {
"mobile": "https://juejin.cn/post/7519502099870957568",
"pc": "https://juejin.cn/post/7519502099870957568"
},
"metadata": {
"list_type": "文章榜",
"platform": "juejin",
"update_time": "2025-06-27T07:20:39.440Z"
},
"rank": 5,
"title": "JIT 编译器是什么?JavaScript 为啥能“跑得像风一样快”?"
}
],
"code": 200,
"pagination": {
"returned": 5,
"total": 5
},
"status": "success"
}
]
}
再接入代码执行
节点,用于处理 rookie_rss
数据返回,输入参数为 rookie_rss 填入的 json 格式数据,Python 代码参考如下:
import json
from datetime import datetime, timezone, timedelta
def main(arg1: str) -> dict:
try:
# 如果已经是 dict 或 list,直接用,不再 loads
if isinstance(arg1, (dict, list)):
parsed_data = arg1
else:
parsed_data = json.loads(arg1)
# 后续逻辑保持不变
if isinstance(parsed_data, dict) and "arg1" in parsed_data:
data = parsed_data["arg1"]
else:
data = parsed_data
articles = []
if isinstance(data, list):
for item in data:
articles.extend(item.get("articles", []))
elif isinstance(data, dict):
articles = data.get("articles", [])
table = []
# 添加表头
table.append(["标题", "热门评分", "新闻链接-手机端", "新闻链接-PC端", "更新时间"])
for item in articles:
title = item.get('title', '')
hot_score = item.get('hot_score', '')
mobile_link = item.get('links', {}).get('mobile', '')
pc_link = item.get('links', {}).get('pc', '')
update_time_raw = item.get('metadata', {}).get('update_time', '')
update_time = ''
if update_time_raw:
try:
# 先尝试按 ISO8601 带毫秒Z格式解析
dt_utc = datetime.strptime(update_time_raw, "%Y-%m-%dT%H:%M:%S.%fZ")
dt_utc = dt_utc.replace(tzinfo=timezone.utc)
# 转换为上海时间(UTC+8)
shanghai_tz = timezone(timedelta(hours=8))
dt_shanghai = dt_utc.astimezone(shanghai_tz)
update_time = dt_shanghai.strftime("%Y-%m-%d %H:%M:%S")
except Exception:
try:
# 不带毫秒的ISO8601格式
dt_utc = datetime.strptime(update_time_raw, "%Y-%m-%dT%H:%M:%SZ")
dt_utc = dt_utc.replace(tzinfo=timezone.utc)
shanghai_tz = timezone(timedelta(hours=8))
dt_shanghai = dt_utc.astimezone(shanghai_tz)
update_time = dt_shanghai.strftime("%Y-%m-%d %H:%M:%S")
except Exception:
try:
# 如果是时间戳(秒级或毫秒级)
ts = int(update_time_raw)
if len(str(update_time_raw)) == 13:
ts = ts / 1000
dt = datetime.fromtimestamp(ts, tz=timezone.utc)
dt_shanghai = dt.astimezone(timezone(timedelta(hours=8)))
update_time = dt_shanghai.strftime("%Y-%m-%d %H:%M:%S")
except Exception:
# 直接使用原始字符串
update_time = str(update_time_raw)
table.append([title, hot_score, mobile_link, pc_link, update_time])
return {
"result": str(table).replace("'", '"')
}
except Exception as e:
return {
"result": [["错误", f"{type(e).__name__}: {e}"]]
}
再将 8 个分支汇总到 变量聚合器
节点,变量赋值为 8 个分支的输出变量
在接入LLM节点,命名为数组转markdown
,模型
选择为由 MaaS 提供的 DeepSeek V3
模型,填入系统提示词,参考如下
请将输出的表格{{#变量聚合器.output#}}转换成markdown表格输出,只输出markdown表格即可,不需要其他内容
并添加获取当前时间
节点,格式为 %Y-%m-%d %H:%M:%S
,时区为 亚洲/上海
最后接入直接回复
节点,用于展示给用户的最终输出结果,构造的回复格式参考如下:
{{#开始.type#}}热榜新闻 {{#获取当前时间.text#}}
{{#数组转markdown.text#}}
编排工作流后点击右上角的运行
进行测试,新闻类型选择微博
,输入开始分析,点击发送
查看完整流程,开始 - 条件分支 - 微博 - 代码执行 - 变量聚合器 - 并行数组转markdown - 并行获取当前时间
最后输出微博热榜新闻,内容参考如下:
微博热榜新闻 2025-06-27 16:09:40
标题 | 热门评分 | 新闻链接-手机端 | 新闻链接-PC端 | 更新时间 |
---|---|---|---|---|
蔡澜去世 | 9710219 | 链接 | 链接 | 2025-06-27 16:09:37 |
举报前公婆近亿资产涉贪已有调查结果 | 1135849 | 链接 | 链接 | 2025-06-27 16:09:37 |
2025新增本科专业怎么选 | 868653 | 链接 | 链接 | 2025-06-27 16:09:37 |
小米YU7首发评测 | 837209 | 链接 | 链接 | 2025-06-27 16:09:37 |
蔡澜遗体已火化 | 781306 | 链接 | 链接 | 2025-06-27 16:09:37 |
我这里后面又添加了一个发送群消息
节点,将直接回复的内容再转发到微信群中,目前这个应用还有很多可以优化的部分,不如重复的内容太多,可以提取 条件分支,合并到2个节点即可,rookie_rss 和 代码执行,只有输入参数不一样,也就是新闻类型不一样,其他都是一样的流程。还有可以将8个平台的新闻一次性全部输出,这里没有做到,这里使用的并行获取导致变量聚合器只有一个值,需要优化下。
测试完成就可以发布更新到探索
页面了,发布后选择运行就可以获得一个在线运行的工作流的网页!
3.4 使用RSS实时热点新闻聚合助手
在探索 - RSS实时热点新闻聚合助手中开启新对话
这次选择新闻类型为 ·36kr`,点击开始对话,并在对话框输入开始,点击发送
按照工作流执行流程执行,最后输出 36kr热榜新闻
36kr热榜新闻 2025-06-27 16:22:12
标题 | 热门评分 | 新闻链接-手机端 | 新闻链接-PC端 | 更新时间 |
---|---|---|---|---|
奥迪躺回舒适区 | 2 | https://m.36kr.com/p/3352988352076162 | https://www.36kr.com/p/3352988352076162 | 2025-06-27 16:21:34 |
连比尔·盖茨都沉迷的扫雷和纸牌,藏着微软一段30年的「摸鱼」史 | None | https://m.36kr.com/p/3352823090131592 | https://www.36kr.com/p/3352823090131592 | 2025-06-27 16:21:34 |
8点1氪|小米YU7售价25.35万起,3分钟大定破20万辆;北约秘书长喻称特朗普为“爸爸”引争议;宾利回应“联名槟榔礼盒”争议 | 26 | https://m.36kr.com/p/3353972776088192 | https://www.36kr.com/p/3353972776088192 | 2025-06-27 16:21:34 |
你不能一边嫌弃内卷,一边又批判labubu割韭菜 | 24 | https://m.36kr.com/p/3353021929419649 | https://www.36kr.com/p/3353021929419649 | 2025-06-27 16:21:34 |
瞄准大众“追高”需求,「阿基孚」开发口服助长的“IGF-1增敏剂”|项目报道 | 5 | https://m.36kr.com/p/3352612520243844 | https://www.36kr.com/p/3352612520243844 | 2025-06-27 16:21:34 |
四、总结
通过Dify Chatflow 构建了一个智能新闻枢纽系统,不仅实现了多平台热点信息的统一捕获,更利用LLM能力对信息进行深度结构化处理,系统核心价值在于将传统人找信息
模式转变为信息适人
模式。Dify通过其强大的工作流编排能力(Chatflow)和插件生态系统,让开发者无需编写复杂代码即可构建智能信息处理流水线。特别是其最新支持的 rookie_rss 插件,能够无缝连接8大主流内容平台(掘金、Bilibili、微博、今日头条、36Kr、虎嗅、AcFun、HelloGitHub
),实现真正的一站式热点聚合,这种基于RSS的工作流具有显著优势,时效性从小时级提升至分钟级,数据合规性得到保障。
华为云通过 Flexus X
的弹性底座 与 MaaS 的模型服务化能力
,为 DeepSeek-V3 提供了 “资源按需匹配 – 模型开箱即用 – 成本精细可控” 的全链路优化。这一组合特别适合需快速落地 AI 应用的中小企业与开发者,在保证工业级性能的同时,真正实现了大模型技术的普惠化落地。