概述
内容创作:比如通过你的名字给你作一首诗。比如给你生成吸引人的广告文案。
聊天机器人:比如客服答疑,比如英语口语陪练。
逻辑推理:比如辅助医生分析病例、生成诊断建议。比如帮你做一道数学题目。
风险监控:定时监控系统指标,由大模型进行智能分析,发现潜在的风险。
数据分析:定时采集在线金融数据,由大模型进行智能分析,给出投资者建议。
如何搭建系统
搭建Deepseek
Deepseek以推理能力出圈,适合做数据分析。并且Deepseek的母公司幻方量化就是做量化交易的,我们相信Deepseek在金融分析上有着显著的优势。 Deepseek开源并且很轻量,可以很方便部署起来。

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

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


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


搭建XXL-JOB
可以定时发起AI任务请求。
可以把prompt和返回格式放在任务参数上,动态修改。
可以使用广播分片任务,把大任务拆分成多个小任务,加快AI任务运行速度。
可以使用任务依赖编排,构建一个AI数据分析的流程。
方案一:本地部署
准备一个数据库并初始化数据库表结构

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

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


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

@Component
public class AIJob {
@Value("${dashscope.api.key}")
private String apiKey;
@XxlJob(value = "sinaNews")
public ReturnT
sinaNews() throws Exception {String url = "https://finance.sina.com.cn/topnews/";
String model = "deepseek-r1";
// prompt
String jobParam = XxlJobContext.getXxlJobContext().getJobParam();
ReturnT
rtn = ReturnT.SUCCESS; Document document = Jsoup.connect(url).get();
// 定位到“汇总榜”部分
Element summaryBlock = document.selectFirst("div.lbti:has(h2:containsOwn(汇总榜))");
if (summaryBlock != null) {
// 找到该块中的[removed]标签
Element scriptTag = summaryBlock.parent().selectFirst("script[src]");
if (scriptTag != null) {
// 提取src属性值
String srcValue = scriptTag.attr("src");
HttpResponse
httpResponse = Unirest.get(srcValue).asString(); String news = httpResponse.getBody();
Map
bodyMap = new HashMap<>(); bodyMap.put("model", model);
List
Map
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
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("未找到汇总榜的[removed]标签");
}
} else {
rtn.setCode(ReturnT.FAIL_CODE);
rtn.setMsg("未找到汇总榜部分");
}
return rtn;
}
private void sendMessage(OpenAIResponse message){
//TODO
}
}

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