img

本篇文章将介绍如何搭建一套基于 XXL-JOB + Deepseek 的定时数据分析系统,帮你做一个智能的金融理财助手。

一、概述

AI 大模型火了几年了,不知不觉中,已经普及到千家万户中,常见的应用场景有:

  • 内容创作:比如通过你的名字给你作一首诗。比如给你生成吸引人的广告文案。
  • 聊天机器人:比如客服答疑,比如英语口语陪练。
  • 逻辑推理:比如辅助医生分析病例、生成诊断建议。比如帮你做一道数学题目。

大部分的交互方式,都是通过自然语言和大模型进行对话,由人主动发起,如下:

图片

也有许多的业务场景,不是由人主动发起的,通过定时任务在后台不停运行,也可以结合大模型做增强,场景如下:

  • 风险监控:定时监控系统指标,由大模型进行智能分析,发现潜在的风险。
  • 数据分析:定时采集在线金融数据,由大模型进行智能分析,给出投资者建议。

本篇文章将介绍如何搭建一套基于 XXL-JOB + Deepseek 的定时数据分析系统,帮你做一个智能的金融理财助手。XXL-JOB[1] 是一个国内流行的开源分布式任务调度平台,简单易用,并且功能丰富。支持单机任务、分布式任务的定时调度,可以做到秒级别调度。有多种路由策略、堵塞处理策略可供选择。提供任务的报警监控、手动运维、监控大盘等能力。

二、如何搭建系统

1、搭建Deepseek

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

  • Deepseek以推理能力出圈,适合做数据分析。并且Deepseek的母公司幻方量化就是做量化交易的,我们相信Deepseek在金融分析上有着显著的优势。
  • Deepseek开源并且很轻量,可以很方便部署起来。

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

图片

方案一:本地部署

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

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

图片

  1. 安装Deepseek r1模型:r1模型专注于复杂逻辑推理,更适合做金融数据分析

图片

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

图片

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

模型名称模型大小显存内存
deepseek-r1:1.5b1.1GB4GB+8GB+
deepseek-r1:7b4.7GB8GB+16GB+
deepseek-r1:8b4.9GB10GB+18GB+
deepseek-r1:14b9.0GB16GB+32GB+
deepseek-r1:32b20GB24GB+64GB+
  1. 部署完成后,我们通过api进行测试(使用兼容openai的api,端口默认是11434),方便后续写代码。

图片

方案二:使用云产品

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

图片

2、 搭建XXL-JOB

使用XXL-JOB有如下好处:

  • 可以定时发起AI任务请求。
  • 可以把prompt和返回格式放在任务参数上,动态修改。
  • 可以使用广播分片任务,把大任务拆分成多个小任务,加快AI任务运行速度。
  • 可以使用任务依赖编排,构建一个AI数据分析的流程。

方案一:本地部署

XXL-JOB 部署很简单,详细的步骤可以参考官网[3],大概步骤如下:

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

图片

  1. 把代码导入到IDEA中,配置xxl-job-admin的配置文件

图片

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

图片

方案二:使用云产品

我们也可以使用托管XXL-JOB的云产品,比如阿里云MSE产品任务调度XXL-JOB版[4],一键部署。

图片

定时推送财经新闻

接下来先以定时推送财经新闻这个demo来热热身,流程图如下

图片

  1. XXLJOB-Admin 通过定时调度或者手动触发,配置好对应任务的prompt信息,运行某个任务执行。
  2. 先去互联网拉取财经新闻,可以简单的做一下过滤。
  3. 把网页内容丢给Deepseek,让他提炼最热门的N个新闻。

下面以使用阿里云百炼托管的deepseek-r1为例,获取新浪财经的热点新闻,通过XXL-JOB配置prompt如下:

图片

实现代码参考如下(该demo也集成在了云产品快速体验示例[5]中):

@Component
public class AIJob {    
   @Value("${dashscope.api.key}")    
   private String apiKey;    
   @XxlJob(value = "sinaNews")    
   public ReturnT<String> sinaNews() throws Exception {    
       String url = "https://finance.sina.com.cn/topnews/";        
       String model = "deepseek-r1";        
       // prompt       
       String jobParam = XxlJobContext.getXxlJobContext().getJobParam();                
       ReturnT<String> rtn = ReturnT.SUCCESS;        
       Document document = Jsoup.connect(url).get();        
       // 定位到“汇总榜”部分       
       Element summaryBlock = document.selectFirst("div.lbti:has(h2:containsOwn(汇总榜))");        
       if (summaryBlock != null) {    
               // 找到该块中的<script>标签            
               Element scriptTag = summaryBlock.parent().selectFirst("script[src]");            
               if (scriptTag != null) {    
                           // 提取src属性值        
String srcValue = scriptTag.attr("src");        
HttpResponse<String> httpResponse = Unirest.get(srcValue).asString();        
String news = httpResponse.getBody();        
Map<String, Object> bodyMap = new HashMap<>();        
bodyMap.put("model", model);        
List<Map<String, String>> messagesList = new ArrayList<>();        
Map<String, String> message = new HashMap<>();        
message.put("role", "system");        
message.put("content", jobParam);        
messagesList.add(message);        
message = new HashMap<>();        
message.put("role", "user");        
message.put("content", "这是今天的财经新闻,帮我按规则解析:" + news );        
messagesList.add(message);        
bodyMap.put("messages", messagesList);        
String bodyJson = new Gson().toJson(bodyMap);        
Unirest.setTimeouts(120000, 120000); //加大timeout,防止超时退出        HttpResponse<JsonNode> jsonHttpResponse =            Unirest.post("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions")                
.header("Authorization", "Bearer " + apiKey)                
.header("Content-Type", "application/json")                
.body(bodyJson)                
.asJson();        
OpenAIResponse openAIResponse =          
  new Gson().fromJson(jsonHttpResponse.getBody().getObject().toString(), OpenAIResponse.class);        
  rtn.setContent(openAIResponse.getChoices().get(0).getMessage().getContent());        
  XxlJobHelper.log(openAIResponse.getChoices().get(0).getMessage().getContent());               
       //TODO 通过钉钉发送分析总结        
       sendMessage(openAIResponse);          
         } else {      
                   rtn.setCode(ReturnT.FAIL_CODE);                
                   rtn.setMsg("未找到汇总榜的<script>标签");        
    }       
    } else {      
          rtn.setCode(ReturnT.FAIL_CODE);            
          rtn.setMsg("未找到汇总榜部分");     
          }       
           return rtn;   
 }  
  private void sendMessage(OpenAIResponse message){    
      //TODO  
      }
    }

手动运行一次任务,收到钉钉通知如下:

图片

3、 定时做金融数据分析

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

图片

  1. 在XXL-JOB上新建3个任务,并建立依赖关系,拉取金融数据->数据分析->生成报告。其中拉取金融数据任务的路由策略是广播分片。
  2. 拉取金融数据任务开始执行的时候,通过广播分片派发多个子任务给不同的执行器,去获取各大国内外财经新闻和金融数据,把结果存储起来(比如数据库、Redis或者对象存储)。
  3. 数据分析任务开始执行的时候,去获取当前的金融数据,再调用Deepseek进行分析,将结果存储起来。
  4. 数据分析完,再通过报告生成任务,将分析完的数据生成一个报告或者报表,通过钉钉或者邮件推送给用户,进行投资建议。

总结

通过上面的示例,你是不是觉得在Deepseek的加持下,做金融分析变得如此简单,自己也可以做一个量化交易系统,实现财富自由?实际上真正的量化交易系统是非常复杂的,除了上面示例中的数据收集、数据清洗、数据分析步骤,还有策略回测、风险监控等模块,也可以使用这套架构实现智能化。

除了在金融领域做数据分析,其他任何领域有数据分析的需求,都可以基于这套架构做智能化,我相信 XXL-JOB + Deepseek 一定是你做数据分析的一大利器。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

img

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

img

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐