Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
event
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
陈世强
event
Commits
cefb3b6b
提交
cefb3b6b
authored
8月 18, 2025
作者:
925993793@qq.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
定制专题逻辑优化、总结摘要抽取接口
上级
88773e55
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
89 行增加
和
14 行删除
+89
-14
ExternalController.java
...om/zzsn/event/external/controller/ExternalController.java
+89
-14
没有找到文件。
src/main/java/com/zzsn/event/external/controller/ExternalController.java
浏览文件 @
cefb3b6b
...
@@ -2,8 +2,10 @@ package com.zzsn.event.external.controller;
...
@@ -2,8 +2,10 @@ package com.zzsn.event.external.controller;
import
cn.hutool.poi.excel.ExcelReader
;
import
cn.hutool.poi.excel.ExcelReader
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.zzsn.event.constant.Result
;
import
com.zzsn.event.constant.Result
;
...
@@ -14,11 +16,17 @@ import com.zzsn.event.external.vo.SubjectInfoVO;
...
@@ -14,11 +16,17 @@ import com.zzsn.event.external.vo.SubjectInfoVO;
import
com.zzsn.event.external.vo.SubjectVO
;
import
com.zzsn.event.external.vo.SubjectVO
;
import
com.zzsn.event.llm.LlmService
;
import
com.zzsn.event.llm.LlmService
;
import
com.zzsn.event.service.CommonService
;
import
com.zzsn.event.service.CommonService
;
import
com.zzsn.event.service.InformationService
;
import
com.zzsn.event.service.SubjectService
;
import
com.zzsn.event.service.SubjectSimpleService
;
import
com.zzsn.event.service.SubjectSimpleService
;
import
com.zzsn.event.util.HttpUtil
;
import
com.zzsn.event.util.HttpUtil
;
import
com.zzsn.event.util.RedisUtil
;
import
com.zzsn.event.vo.InfoDataSearchCondition
;
import
com.zzsn.event.vo.SubjectDetailVO
;
import
com.zzsn.event.vo.SubjectDetailVO
;
import
com.zzsn.event.vo.SubjectSimpleVO
;
import
com.zzsn.event.vo.SubjectSimpleVO
;
import
com.zzsn.event.vo.es.DisplayInfo
;
import
com.zzsn.event.xxljob.service.IXxlJobInfoService
;
import
com.zzsn.event.xxljob.service.IXxlJobInfoService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -55,6 +63,12 @@ public class ExternalController {
...
@@ -55,6 +63,12 @@ public class ExternalController {
private
CommonService
commonService
;
private
CommonService
commonService
;
@Autowired
@Autowired
private
LlmService
llmService
;
private
LlmService
llmService
;
@Autowired
private
InformationService
informationService
;
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
SubjectService
subjectService
;
@Value
(
"${caiji.keywordCrawler.url:}"
)
@Value
(
"${caiji.keywordCrawler.url:}"
)
private
String
keywordCrawlerUrl
;
private
String
keywordCrawlerUrl
;
...
@@ -104,21 +118,19 @@ public class ExternalController {
...
@@ -104,21 +118,19 @@ public class ExternalController {
*/
*/
@GetMapping
(
"/crawlerWordRecommend"
)
@GetMapping
(
"/crawlerWordRecommend"
)
public
Result
<?>
crawlerWordRecommend
(
@RequestParam
String
remark
)
{
public
Result
<?>
crawlerWordRecommend
(
@RequestParam
String
remark
)
{
String
prompt
=
"你是一个专业信息采集助手,根据用户提供的专题描述,精准提取核心实体和主题,生成符合以下规则的关键词表达式:\n"
+
String
prompt
=
"你是一个专业信息采集助手,根据用户专题描述生成关键词表达式:\n"
+
"1. 用 `+` 表示 **与** 关系(必须同时出现)\n"
+
"1. 用 + 表示与关系(必须同现),| 表示或关系(任一出现),用()分组\n"
+
"2. 用 `|` 表示 **或** 关系(任一出现即可)\n"
+
"2. 执行三步操作:\n"
+
"3. +两端的关键词组用 `()` 框选\n"
+
" (1) 提取核心实体(如企业/产品名)\n"
+
"4. 关键词必须直接来自描述或合理扩展的同义/关联词\n"
+
" (2) 将抽象词拆解为3-5个具体场景词(如\"动向\"→\"上升|下降|波动|结构调整\")\n"
+
"5. 输出仅含表达式,无额外解释\n"
+
" (3) 扩展同义词/行业关联词\n"
+
"6.+号使用不超过2个\n"
+
"3. 排除时间词,+号不超过2个,单组|内词不超过5个\n"
+
"7.不要把时间提取进表达式\n"
+
"4. 输出仅含表达式\n"
+
"8.输入输出为日语时,检查拼写是否有误,不要包含特殊字符,输出书面表达\n"
+
"\n"
+
"\n"
+
"\n"
+
"示例: \n"
+
"### 示例\n"
+
"描述:苹果新款iPhone发布引发市场反响\n"
+
"专题描述:\"星动纪元、云深处科技分别完成近5亿元融资,用于人形机器人研发与量产\" \n"
+
"输出:(苹果|iPhone)+(発売|価格|予約状況|市場シェア|消費者反応)"
;
"输出:(星动纪元|云深处科技)+(融资|量产)"
;
String
crawlerWord
=
llmService
.
model
(
"qwen"
,
"qwen-max-latest"
,
prompt
,
remark
);
String
crawlerWord
=
llmService
.
crawlerWord
(
"qwen-max-latest"
,
prompt
,
remark
);
return
Result
.
OK
(
crawlerWord
);
return
Result
.
OK
(
crawlerWord
);
}
}
...
@@ -269,4 +281,67 @@ public class ExternalController {
...
@@ -269,4 +281,67 @@ public class ExternalController {
}
}
return
Result
.
OK
();
return
Result
.
OK
();
}
}
/**
* 汇总摘要
*
* @param subjectId 专题id
* @author lkg
* @date 2025/8/16
*/
@GetMapping
(
"/gatherSummary"
)
public
Result
<?>
gatherSummary
(
@RequestParam
String
subjectId
)
{
InfoDataSearchCondition
searchCondition
=
new
InfoDataSearchCondition
();
searchCondition
.
setSubjectId
(
subjectId
);
searchCondition
.
setCategory
(
2
);
searchCondition
.
setColumn
(
"score"
);
searchCondition
.
setPageSize
(
20
);
IPage
<
DisplayInfo
>
pageList
=
informationService
.
subjectPageList
(
searchCondition
);
List
<
DisplayInfo
>
records
=
pageList
.
getRecords
();
if
(
CollectionUtils
.
isNotEmpty
(
records
))
{
JSONObject
params
=
new
JSONObject
();
List
<
JSONObject
>
summaryList
=
new
ArrayList
<>();
records
.
forEach
(
record
->
{
JSONObject
summary
=
new
JSONObject
();
summary
.
put
(
"summary"
,
record
.
getSummary
());
summaryList
.
add
(
summary
);
});
Subject
subject
=
subjectService
.
getById
(
subjectId
);
params
.
put
(
"subject"
,
subject
.
getSubjectName
());
params
.
put
(
"summaryList"
,
summaryList
);
System
.
out
.
println
(
JSON
.
toJSONString
(
params
));
String
prompt
=
"将用户上传的多篇资讯摘要文本和主题整合为一段连贯、精炼的综合摘要(约500字)。要求:\n"
+
"1)提炼核心主题与高度共识的关键发现;\n"
+
"2)客观指出存在的分歧点及其原因;\n"
+
"3)简述观点或技术的演进趋势;\n"
+
"4)语言需严谨中性,直接输出整合后的段落,无需分节或小标题。\n"
+
"5)识别输入的摘要语种,生成的摘要和输入一样。如果输入的语种有多个,采用资讯最多的那个语言\n"
+
"使用示例:\n"
+
"输入:\n"
+
"[主题] 机器学习可解释性\n"
+
"[摘要1] 提出梯度解释法...验证准确率提升15%\n"
+
"[摘要2] 对比LIME与SHAP...指出计算效率缺陷\n"
+
"[摘要3] 医疗领域应用研究...模型透明度不足影响临床采纳\n"
+
"输出(示例段落):\n"
+
"多篇关于机器学习可解释性(XAI)的研究聚焦于提升复杂模型透明度。核心共识在于有效解释技术(如梯度解释法、LIME、SHAP)能增强用户信任并提升决策准确率。然而,在方法实用性上存在分歧,部分研究指出主流技术存在显著计算效率缺陷,尤其在资源受限场景;同时,医疗领域应用突显透明度不足是阻碍临床采纳的关键瓶颈。研究趋势显示从开发基础解释方法(如早期梯度法)转向评估实际场景效能及效率优化。当前主要知识缺口在于缺乏统一标准评估解释的可靠性与临床相关性,亟需开发兼顾高效性和领域适配性的XAI解决方案。"
;
String
model
=
llmService
.
model
(
"qwen"
,
"qwen-max-latest"
,
prompt
,
JSONObject
.
toJSONString
(
params
));
redisUtil
.
set
(
"GATHER_SUMMARY::"
+
subjectId
,
model
);
return
Result
.
OK
(
model
);
}
else
{
return
Result
.
FAIL
(
"没有资讯信息"
);
}
}
/**
* 获取汇总摘要
*
* @param subjectId 专题id
* @author lkg
* @date 2025/8/16
*/
@GetMapping
(
"/getGatherSummary"
)
public
Result
<?>
getGatherSummary
(
@RequestParam
String
subjectId
)
{
return
Result
.
OK
(
redisUtil
.
get
(
"GATHER_SUMMARY::"
+
subjectId
));
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论