基于XXL-JOB与DeepSeek实现推送热点新闻和金融数据分析

更新时间:2025-04-23 07:37:58

本文介绍如何通过分布式任务调度XXL-JOB与大模型DeepSeek的深度结合,实现财经热点新闻的定时自动推送和金融数据分析。

背景介绍

随着 AI 大模型能力的不断提升,其在业务实践中的应用场景也日益丰富。许多业务场景,除了由人工主动发起的之外,还可以通过定时任务在后台自动运行,并结合大模型能力进行增强。以下是典型的应用场景:

  • 风险监控:定时监控系统关键指标,结合大模型的智能分析能力,识别潜在风险。

  • 数据分析:定时采集在线金融数据,由大模型进行智能分析,为投资者生出决策建议。

视频演示

MSE 任务调度XXL-JOB版基于AI任务实现每日推送热点新闻,请参见MSE XXL-JOB AI任务演示

前提条件

环境准备

搭建DeepSeek

大模型选择DeepSeek,出于以下考虑:

  • DeepSeek以推理能力出圈,适合做数据分析。并且DeepSeek的母公司幻方量化就是做量化交易的,我们相信DeepSeek在数据分析上有着显著的优势。

  • DeepSeek开源并且很轻量,可以很方便地部署。

您也可以选择阿里云最新开源的QwQ模型,推理能力比肩DeepSeek-R1,在做复杂数据分析上同样能力出众。以下图表展示了QwQ-32B 与其他领先模型在数学推理、编程能力和通用能力上的对比:

image

方案一:本地自建部署

本地部署DeepSeek、QwQ或者其他模型,步骤都是差不多的,下面以DeepSeek为例:

  1. 安装ollama:https://ollama.com/download

    image

  2. 安装DeepSeek R1模型:R1模型专注于复杂逻辑推理,更适合用于数据分析。

    image

    根据机器规格大小选择一个模型,比如我的电脑有16G内存,选择7b,就在命令行输入如下命令安装。

    image

    不同模型对应的硬件要求如下表:

    模型名称

    模型大小

    显存

    内存

    deepseek-r1:1.5b

    1.1GB

    4GB+

    8GB+

    deepseek-r1:7b

    4.7GB

    8GB+

    16GB+

    deepseek-r1:8b

    4.9GB

    10GB+

    18GB+

    deepseek-r1:14b

    9.0GB

    16GB+

    32GB+

    deepseek-r1:32b

    20GB

    24GB+

    64GB+

  3. 部署完成后,我们通过API进行测试(使用兼容OpenAIAPI,端口默认是11434),方便后续写代码。

    image

方案二:使用云产品

我们也可以直接使用云产品,以阿里云百炼为例,只需要开通即可使用,并且有海量的免费额度。使用云产品的话还有个好处,就是可以随时切换模型,体验不同模型的优劣。

image

搭建XXL-JOB

使用XXL-JOB有如下优势:

  • 可以定时发起AI任务请求。

  • 可以把prompt和返回格式放在任务参数上,动态修改。

  • 可以使用广播分片任务,把大任务拆分成多个小任务,加快AI任务运行速度。

  • 可以使用任务依赖编排,构建一个AI数据分析的流程。

方案一:本地自建部署

XXL-JOB 部署比较简单,详细的步骤可以参考官网,大致步骤如下:

  1. 准备一个数据库并初始化数据库表结构。

    image

  2. 把代码导入到IDE中,配置xxl-job-admin的配置文件。

    image

  3. 运行XxlJobAdminApplication这个类,然后在浏览器输入http://127.0.0.1:8080/xxl-job-admin 就可以登录了(默认用户名和密码是:admin/123456)。

    image

方案二:使用云产品

您可以使用托管的阿里云MSE任务调度XXL-JOB版,详情可参见创建XXL-JOB实例,并且可以免费试用

image

实现推送热点新闻

本案例基于MSE XXL-JOB/自建XXL-JOB阿里云百炼托管的DeepSeek R1为例介绍实现,Demo详情可参见xxljob-demo(SpringBoot)

步骤一:将应用接入任务调度平台XXL-JOB

  1. 登录阿里云容器服务控制台,创建一个ACK Serverless集群。需为当前VPC开启配置SNAT(VPC已配置过则可忽略),以便拉取Demo镜像。

    image

  2. 在容器服务控制台的集群列表页,单击目标集群,选择工作负载 > 无状态服务,单击使用YAML创建资源,参考如下YAML配置将应用接入MSE任务调度平台XXL-JOB。其中配置参数-Dxxl.job.admin.addresses-Dxxl.job.executor.appname-Dxxl.job.accessToken-Ddashscope.api.key-Dwebhook.url可参见配置启动参数

    应用部署YAML参考如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: xxljob-demo
      labels:
        app: xxljob-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: xxljob-demo
      template:
        metadata:
          labels:
            app: xxljob-demo
        spec:
          containers:
          - name: xxljob-executor
            image: registry.cn-hangzhou.aliyuncs.com/schedulerx/xxljob-demo:2.4.2
            ports:
            - containerPort: 9999
            env:
              - name: JAVA_OPTS
                value: >-
                  -Dxxl.job.admin.addresses=http://xxljob-xxxxx.schedulerx.mse.aliyuncs.com
                  -Dxxl.job.executor.appname=xxxxx
                  -Dxxl.job.accessToken=xxxxxxx
                  -Ddashscope.api.key=sk-xxx
                  -Dwebhook.url=https://oapi.dingtalk.com/robot/send?access_token=xx

步骤二:配置启动参数

  1. 获取启动参数配置。

    1. 登录MSE XXL-JOB控制台,并在顶部菜单栏选择地域。

    2. 单击进入目标实例,在左侧导航栏的应用管理页面。单击目标应用操作列下的接入配置

    image

    替换为目标实例接入配置后,一键复制参数项至YAML配置:

    -Dxxl.job.admin.addresses=http://xxljob-xxxxx.schedulerx.mse.aliyuncs.com
    -Dxxl.job.executor.appname=xxxxx
    -Dxxl.job.accessToken=xxxxxxx
  2. 登录阿里云百炼平台,单击右上角人像图标中的API-KEY进入管理界面,可以创建或复制一个API-KEY。

    image

    替换API-KEY后,复制参数项至YAML配置:

    -Ddashscope.api.key=sk-xxx
  3. 在钉群Webhook地址,可以在钉钉群设置中添加一个自定义机器人。

    image

    image

    替换access_token值后,复制参数项至YAML配置:

    -Dwebhook.url=https://oapi.dingtalk.com/robot/send?access_token=xx

步骤三:创建AI任务并运行

MSE XXL-JOB 控制台
自建XXL-JOB Admin
  1. 登录MSE XXL-JOB控制台,并在顶部菜单栏选择地域。单击目标实例,在左侧导航栏的任务管理页面,单击创建任务

  2. 在创建任务面板中配置JobHandler名称sinaNews任务参数配置prompt提示词信息如下,其他配置按默认保存即可。

    image

    任务参数prompt配置示例:

    你是一个新闻资讯助手,需要帮对用户提供的内容做下Unicode解码,并提取出最热门的5条新闻, 最后总结用户提供的内容。
    输出格式参考如下:
    
    今日热点的财经新闻(按热度排序):
    
    ---
    
    #### 1. [**title**](url)
    
    热度:99,999
    
    发布方:publisher
    
    ---
    
    #### **消息总结**
    
    分析是否存在与AI相关最新资讯。概要总结今日消息内容。
  3. 任务管理页面,单击创建的sinaNews任务名操作列下的运行一次,等待任务执行成功,钉群即可定时接收AI分析总结的资讯。

    image

  1. 在自建的XXL-JOB Admin控制台上创建任务,配置JobHandlersinaNews,任务参数可参见任务参数配置示例

    image

  2. 在任务管理页面,手动运行一次任务,收到钉钉通知如下。

    image

实现金融数据分析

基于实现推送热点新闻例子中,我们只拉取了新浪财经的新闻,如果想准实时拉取国内外金融新闻和数据,快速做出决策,一个单机任务的时效性肯定是不够的。我们可以使用MSE XXL-JOB的广播分片任务,将大任务拆分成小任务,不同的小任务去拉取不同的数据。再通过MSE XXL-JOB的任务编排能力组成一个流程,一步步去完成我们的任务。流程如下:

image

  1. MSE XXL-JOB上新建3个任务,并建立依赖关系,拉取金融数据 → 数据分析 → 生成报告。其中拉取金融数据任务的路由策略是广播分片。

  2. 拉取金融数据任务开始执行的时候,通过广播分片派发多个子任务给不同的执行器,以获取各大国内外财经新闻和金融数据,并将结果存储起来(比如数据库、Redis或者对象存储)。

  3. 在数据分析任务开始执行的时候,获取当前的金融数据,再调用DeepSeek进行分析,将结果存储起来。

  4. 在数据分析完成后,再通过报告生成任务,将分析完的数据生成一个报告或者报表,通过钉钉或者邮件推送给用户,提供投资建议。

  • 本页导读 (1)
  • 背景介绍
  • 视频演示
  • 前提条件
  • 环境准备
  • 搭建DeepSeek
  • 搭建XXL-JOB
  • 实现推送热点新闻
  • 步骤一:将应用接入任务调度平台XXL-JOB
  • 步骤二:配置启动参数
  • 步骤三:创建AI任务并运行
  • 实现金融数据分析
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等