Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
sl-ai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhouwei
sl-ai
Commits
c0d6a3b6
Commit
c0d6a3b6
authored
Apr 15, 2025
by
zhouwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增自然灾害打标签接口
parent
dffaa3db
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
411 additions
and
12 deletions
+411
-12
AIController.java
...java/com/nanyan/securitylink/controller/AIController.java
+10
-6
AIInputDTO.java
src/main/java/com/nanyan/securitylink/dto/AIInputDTO.java
+2
-1
AIRequestDTO.java
src/main/java/com/nanyan/securitylink/dto/AIRequestDTO.java
+2
-2
AIService.java
src/main/java/com/nanyan/securitylink/service/AIService.java
+5
-3
AIServiceImpl.java
...a/com/nanyan/securitylink/service/impl/AIServiceImpl.java
+392
-0
No files found.
src/main/java/com/nanyan/securitylink/controller/AIController.java
View file @
c0d6a3b6
package
com
.
nanyan
.
securitylink
.
controller
;
import
com.nanyan.securitylink.dto.
Translate
DTO
;
import
com.nanyan.securitylink.dto.
AIRequest
DTO
;
import
com.nanyan.securitylink.service.AIService
;
import
com.nanyan.securitylink.vo.AIResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -14,11 +14,15 @@ public class AIController {
@Autowired
AIService
aiService
;
@PostMapping
(
"/translate"
)
public
Response
<
AIResponse
>
translate
(
@RequestBody
TranslateDTO
translate
DTO
)
{
return
Response
.
SUCCESS
(
aiService
.
translate
(
translate
DTO
));
public
Response
<
AIResponse
>
translate
(
@RequestBody
AIRequestDTO
AIRequest
DTO
)
{
return
Response
.
SUCCESS
(
aiService
.
translate
(
AIRequest
DTO
));
}
@PostMapping
(
"/tag"
)
public
Response
<
AIResponse
>
newsTag
(
@RequestBody
TranslateDTO
translateDTO
)
{
return
Response
.
SUCCESS
(
aiService
.
newsTags
(
translateDTO
));
@PostMapping
(
"/news/tag"
)
public
Response
<
AIResponse
>
newsTag
(
@RequestBody
AIRequestDTO
AIRequestDTO
)
{
return
Response
.
SUCCESS
(
aiService
.
newsTags
(
AIRequestDTO
));
}
@PostMapping
(
"/natural/disaster/tag"
)
public
Response
<
AIResponse
>
naturalDisasterTag
(
@RequestBody
AIRequestDTO
AIRequestDTO
)
{
return
Response
.
SUCCESS
(
aiService
.
naturalDisasterTag
(
AIRequestDTO
));
}
}
src/main/java/com/nanyan/securitylink/dto/
Translate
InputDTO.java
→
src/main/java/com/nanyan/securitylink/dto/
AI
InputDTO.java
View file @
c0d6a3b6
...
...
@@ -3,8 +3,9 @@ package com.nanyan.securitylink.dto;
import
lombok.Data
;
@Data
public
class
Translate
InputDTO
{
public
class
AI
InputDTO
{
String
record_json
;
String
msg_info
;
String
warn_info
;
String
language
;
}
src/main/java/com/nanyan/securitylink/dto/
Translate
DTO.java
→
src/main/java/com/nanyan/securitylink/dto/
AIRequest
DTO.java
View file @
c0d6a3b6
...
...
@@ -3,8 +3,8 @@ package com.nanyan.securitylink.dto;
import
lombok.Data
;
@Data
public
class
Translate
DTO
{
Translate
InputDTO
inputs
;
public
class
AIRequest
DTO
{
AI
InputDTO
inputs
;
String
response_mode
;
String
user
;
}
src/main/java/com/nanyan/securitylink/service/AIService.java
View file @
c0d6a3b6
package
com
.
nanyan
.
securitylink
.
service
;
import
com.nanyan.securitylink.dto.
Translate
DTO
;
import
com.nanyan.securitylink.dto.
AIRequest
DTO
;
import
com.nanyan.securitylink.vo.AIResponse
;
public
interface
AIService
{
AIResponse
translate
(
TranslateDTO
translateDTO
);
AIResponse
newsTags
(
TranslateDTO
translateDTO
);
AIResponse
translate
(
AIRequestDTO
AIRequestDTO
);
AIResponse
newsTags
(
AIRequestDTO
AIRequestDTO
);
AIResponse
naturalDisasterTag
(
AIRequestDTO
aiRequestDTO
);
}
src/main/java/com/nanyan/securitylink/service/impl/
DeepSeek
AIServiceImpl.java
→
src/main/java/com/nanyan/securitylink/service/impl/AIServiceImpl.java
View file @
c0d6a3b6
...
...
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.nanyan.securitylink.common.MsgCode
;
import
com.nanyan.securitylink.config.AppConfig
;
import
com.nanyan.securitylink.dto.
Translate
DTO
;
import
com.nanyan.securitylink.dto.
AIRequest
DTO
;
import
com.nanyan.securitylink.entity.*
;
import
com.nanyan.securitylink.execption.BaseException
;
import
com.nanyan.securitylink.service.AIService
;
...
...
@@ -31,51 +31,84 @@ import java.util.Map;
@Slf4j
@Service
public
class
DeepSeek
AIServiceImpl
implements
AIService
{
public
class
AIServiceImpl
implements
AIService
{
@Autowired
AppConfig
appConfig
;
@Autowired
RestTemplate
restTemplate
;
private
static
final
Map
<
String
,
String
>
LABEL_MAP
=
new
HashMap
<>();
private
static
final
Map
<
String
,
String
>
NEWS_LABEL_MAP
=
new
HashMap
<>();
private
static
final
Map
<
String
,
String
>
NATURAL_DISASTER_LABEL_MAP
=
new
HashMap
<>();
static
{
LABEL_MAP
.
put
(
"枪击"
,
"TagShooting"
);
LABEL_MAP
.
put
(
"抢劫"
,
"TagRobbery"
);
LABEL_MAP
.
put
(
"爆炸"
,
"TagExplosion"
);
LABEL_MAP
.
put
(
"恐怖袭击"
,
"TagTerroristAttack"
);
LABEL_MAP
.
put
(
"纵火"
,
"TagArson"
);
LABEL_MAP
.
put
(
"大规模伤亡事件"
,
"TagMassCasualtyIncident"
);
LABEL_MAP
.
put
(
"人质事件"
,
"TagHostageSituation"
);
LABEL_MAP
.
put
(
"毒气泄漏"
,
"TagToxicGasLeak"
);
LABEL_MAP
.
put
(
"生物危害"
,
"TagBiologicalHazard"
);
LABEL_MAP
.
put
(
"交通意外"
,
"TagTrafficAccident"
);
LABEL_MAP
.
put
(
"建筑物倒塌"
,
"TagBuildingCollapse"
);
LABEL_MAP
.
put
(
"食品安全"
,
"TagFoodSafety"
);
LABEL_MAP
.
put
(
"社会冲突"
,
"TagSocialConflict"
);
LABEL_MAP
.
put
(
"群体性事件"
,
"TagMassGatheringIncident"
);
LABEL_MAP
.
put
(
"环境污染"
,
"TagEnvironmentalPollution"
);
LABEL_MAP
.
put
(
"重大事故"
,
"TagMajorAccident"
);
LABEL_MAP
.
put
(
"抗议示威"
,
"TagProtestDemonstration"
);
LABEL_MAP
.
put
(
"集体维权"
,
"TagCollectiveAdvocacy"
);
LABEL_MAP
.
put
(
"活动失控骚乱"
,
"TagUncontrolledEventRiot"
);
LABEL_MAP
.
put
(
"地域冲突"
,
"TagTerritorialConflict"
);
LABEL_MAP
.
put
(
"性别冲突"
,
"TagGenderConflict"
);
LABEL_MAP
.
put
(
"宗教冲突"
,
"TagReligiousConflict"
);
LABEL_MAP
.
put
(
"民族冲突"
,
"TagEthnicConflict"
);
LABEL_MAP
.
put
(
"阶级冲突"
,
"TagClassConflict"
);
LABEL_MAP
.
put
(
"食物中毒"
,
"TagFoodPoisoning"
);
LABEL_MAP
.
put
(
"公共卫生事件"
,
"PublicHealthEmergency"
);
LABEL_MAP
.
put
(
"环境污染"
,
"TagEnvironmentalPollution"
);
LABEL_MAP
.
put
(
"活动失控骚乱"
,
"TagUncontrolledEventRiot"
);
LABEL_MAP
.
put
(
"抗议示威"
,
"TagProtestDemonstration"
);
LABEL_MAP
.
put
(
"工业事故"
,
"IndustriaAccident"
);
LABEL_MAP
.
put
(
"核事故"
,
"NuclearAccident"
);
LABEL_MAP
.
put
(
"性别冲突"
,
"TagGenderConflict"
);
LABEL_MAP
.
put
(
"矿难"
,
"MiningAccident"
);
LABEL_MAP
.
put
(
"游行抗议"
,
"Protest"
);
LABEL_MAP
.
put
(
"水坝溃坝"
,
"DamBurst"
);
LABEL_MAP
.
put
(
"油轮泄漏"
,
"OilSpill"
);
LABEL_MAP
.
put
(
"火灾"
,
"Fire"
);
NEWS_LABEL_MAP
.
put
(
"枪击"
,
"TagShooting"
);
NEWS_LABEL_MAP
.
put
(
"抢劫"
,
"TagRobbery"
);
NEWS_LABEL_MAP
.
put
(
"爆炸"
,
"TagExplosion"
);
NEWS_LABEL_MAP
.
put
(
"恐怖袭击"
,
"TagTerroristAttack"
);
NEWS_LABEL_MAP
.
put
(
"纵火"
,
"TagArson"
);
NEWS_LABEL_MAP
.
put
(
"大规模伤亡事件"
,
"TagMassCasualtyIncident"
);
NEWS_LABEL_MAP
.
put
(
"人质事件"
,
"TagHostageSituation"
);
NEWS_LABEL_MAP
.
put
(
"毒气泄漏"
,
"TagToxicGasLeak"
);
NEWS_LABEL_MAP
.
put
(
"生物危害"
,
"TagBiologicalHazard"
);
NEWS_LABEL_MAP
.
put
(
"交通意外"
,
"TagTrafficAccident"
);
NEWS_LABEL_MAP
.
put
(
"建筑物倒塌"
,
"TagBuildingCollapse"
);
NEWS_LABEL_MAP
.
put
(
"食品安全"
,
"TagFoodSafety"
);
NEWS_LABEL_MAP
.
put
(
"社会冲突"
,
"TagSocialConflict"
);
NEWS_LABEL_MAP
.
put
(
"群体性事件"
,
"TagMassGatheringIncident"
);
NEWS_LABEL_MAP
.
put
(
"环境污染"
,
"TagEnvironmentalPollution"
);
NEWS_LABEL_MAP
.
put
(
"重大事故"
,
"TagMajorAccident"
);
NEWS_LABEL_MAP
.
put
(
"抗议示威"
,
"TagProtestDemonstration"
);
NEWS_LABEL_MAP
.
put
(
"集体维权"
,
"TagCollectiveAdvocacy"
);
NEWS_LABEL_MAP
.
put
(
"活动失控骚乱"
,
"TagUncontrolledEventRiot"
);
NEWS_LABEL_MAP
.
put
(
"地域冲突"
,
"TagTerritorialConflict"
);
NEWS_LABEL_MAP
.
put
(
"性别冲突"
,
"TagGenderConflict"
);
NEWS_LABEL_MAP
.
put
(
"宗教冲突"
,
"TagReligiousConflict"
);
NEWS_LABEL_MAP
.
put
(
"民族冲突"
,
"TagEthnicConflict"
);
NEWS_LABEL_MAP
.
put
(
"阶级冲突"
,
"TagClassConflict"
);
NEWS_LABEL_MAP
.
put
(
"食物中毒"
,
"TagFoodPoisoning"
);
NEWS_LABEL_MAP
.
put
(
"公共卫生事件"
,
"PublicHealthEmergency"
);
NEWS_LABEL_MAP
.
put
(
"工业事故"
,
"IndustriaAccident"
);
NEWS_LABEL_MAP
.
put
(
"核事故"
,
"NuclearAccident"
);
NEWS_LABEL_MAP
.
put
(
"矿难"
,
"MiningAccident"
);
NEWS_LABEL_MAP
.
put
(
"游行抗议"
,
"Protest"
);
NEWS_LABEL_MAP
.
put
(
"水坝溃坝"
,
"DamBurst"
);
NEWS_LABEL_MAP
.
put
(
"油轮泄漏"
,
"OilSpill"
);
NEWS_LABEL_MAP
.
put
(
"火灾"
,
"Fire"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"地震"
,
"earthquake"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"火山爆发"
,
"volcanicEruption"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"海啸"
,
"tsunami"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"台风/飓风"
,
"typhoonHurricane"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"龙卷风"
,
"tornadowarning"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"洪水"
,
"flood"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"干旱"
,
"drought"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"山体滑坡"
,
"landslide"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"泥石流"
,
"mudslide"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"雪崩"
,
"avalanche"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"森林火灾"
,
"forestFire"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"冰川融化"
,
"glacialMelting"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"沙尘暴"
,
"dustStorm"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"高温热浪"
,
"heatWave"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"寒潮"
,
"coldWave"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"暴雨"
,
"rainstorm"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"工业事故"
,
"IndustriaAccident"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"交通事故"
,
"TrafficAccident"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"火灾"
,
"Fire"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"爆炸"
,
"Explosion"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"核事故"
,
"NuclearAccident"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"化学品泄漏"
,
"ChemicalSpill"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"油轮泄漏"
,
"OilSpill"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"矿难"
,
"MiningAccident"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"食物中毒"
,
"FoodPoisoning"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"公共卫生事件"
,
"PublicHealthEmergency"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"建筑物倒塌"
,
"BuildingCollapse"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"恐怖袭击"
,
"Terrorism"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"水坝溃坝"
,
"DamBurst"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"游行抗议"
,
"Protest"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"冰雹"
,
"hail"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"冻雨"
,
"freezingRain"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"霾"
,
"hazeWarning"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"雷暴"
,
"thunderstormWarning"
);
NATURAL_DISASTER_LABEL_MAP
.
put
(
"大风"
,
"HhighWind"
);
}
private
final
static
ObjectMapper
objectMapper
=
new
ObjectMapper
();
...
...
@@ -83,15 +116,11 @@ public class DeepSeekAIServiceImpl implements AIService {
private
final
static
String
DEEP_SEEK_URL
=
"https://ark.cn-beijing.volces.com/api/v3/chat/completions"
;
@Override
public
AIResponse
translate
(
TranslateDTO
translate
DTO
)
{
public
AIResponse
translate
(
AIRequestDTO
AIRequest
DTO
)
{
ChatInputData
chatInputData
=
new
ChatInputData
();
buildTranslate
(
chatInputData
,
translateDTO
);
UserHeader
userHeader
=
UserThreadLocal
.
get
();
String
apiKey
=
appConfig
.
getApiTranslateKey
();
if
(
StringUtils
.
isNotEmpty
(
userHeader
.
getModelKey
())){
apiKey
=
userHeader
.
getModelKey
();
}
buildTranslate
(
chatInputData
,
AIRequestDTO
);
String
apiKey
=
getModelApiKey
();
ChatCompletionResponse
chatCompletionResponse
=
aiRequest
(
chatInputData
,
apiKey
);
if
(
CollectionUtils
.
isNotEmpty
(
chatCompletionResponse
.
getChoices
()))
{
...
...
@@ -102,15 +131,11 @@ public class DeepSeekAIServiceImpl implements AIService {
return
null
;
}
public
AIResponse
newsTags
(
TranslateDTO
translate
DTO
)
{
public
AIResponse
newsTags
(
AIRequestDTO
aiRequest
DTO
)
{
ChatInputData
chatInputData
=
new
ChatInputData
();
buildNewsTag
(
chatInputData
,
translateDTO
);
UserHeader
userHeader
=
UserThreadLocal
.
get
();
String
apiKey
=
appConfig
.
getApiTranslateKey
();
if
(
StringUtils
.
isNotEmpty
(
userHeader
.
getModelKey
())){
apiKey
=
userHeader
.
getModelKey
();
}
buildNewsTag
(
chatInputData
,
aiRequestDTO
);
String
apiKey
=
getModelApiKey
();
ChatCompletionResponse
chatCompletionResponse
=
aiRequest
(
chatInputData
,
apiKey
);
if
(
CollectionUtils
.
isNotEmpty
(
chatCompletionResponse
.
getChoices
()))
{
...
...
@@ -123,9 +148,9 @@ public class DeepSeekAIServiceImpl implements AIService {
outputs
.
setResult
(
result
);
aiResponse
.
setOutputs
(
outputs
);
for
(
String
s
:
split
)
{
if
(
LABEL_MAP
.
containsKey
(
s
)){
if
(
NEWS_
LABEL_MAP
.
containsKey
(
s
)){
CodeVO
codeVO
=
new
CodeVO
();
codeVO
.
setCode
(
LABEL_MAP
.
get
(
s
));
codeVO
.
setCode
(
NEWS_
LABEL_MAP
.
get
(
s
));
codeVO
.
setName
(
s
);
result
.
add
(
codeVO
);
}
...
...
@@ -136,19 +161,72 @@ public class DeepSeekAIServiceImpl implements AIService {
return
null
;
}
private
void
buildNewsTag
(
ChatInputData
chatInputData
,
TranslateDTO
translateDTO
)
{
@Override
public
AIResponse
naturalDisasterTag
(
AIRequestDTO
aiRequestDTO
)
{
ChatInputData
chatInputData
=
new
ChatInputData
();
buildNaturalDisasterTag
(
chatInputData
,
aiRequestDTO
);
String
apiKey
=
getModelApiKey
();
ChatCompletionResponse
chatCompletionResponse
=
aiRequest
(
chatInputData
,
apiKey
);
if
(
CollectionUtils
.
isNotEmpty
(
chatCompletionResponse
.
getChoices
()))
{
AIResponse
aiResponse
=
new
AIResponse
();
String
content
=
chatCompletionResponse
.
getChoices
().
get
(
0
).
getMessage
().
getContent
();
if
(
StringUtils
.
isNotEmpty
(
content
)){
String
[]
split
=
content
.
split
(
","
,
-
1
);
List
<
CodeVO
>
result
=
new
ArrayList
<>();
ResultVO
outputs
=
new
ResultVO
();
outputs
.
setResult
(
result
);
aiResponse
.
setOutputs
(
outputs
);
for
(
String
s
:
split
)
{
if
(
NATURAL_DISASTER_LABEL_MAP
.
containsKey
(
s
)){
CodeVO
codeVO
=
new
CodeVO
();
codeVO
.
setCode
(
NATURAL_DISASTER_LABEL_MAP
.
get
(
s
));
codeVO
.
setName
(
s
);
result
.
add
(
codeVO
);
}
}
}
return
aiResponse
;
}
return
null
;
}
private
String
getModelApiKey
()
{
UserHeader
userHeader
=
UserThreadLocal
.
get
();
String
apiKey
=
appConfig
.
getApiTranslateKey
();
if
(
StringUtils
.
isNotEmpty
(
userHeader
.
getModelKey
())){
apiKey
=
userHeader
.
getModelKey
();
}
return
apiKey
;
}
private
void
buildNaturalDisasterTag
(
ChatInputData
chatInputData
,
AIRequestDTO
aiRequestDTO
)
{
setModel
(
chatInputData
);
chatInputData
.
setStream
(
false
);
List
<
Message
>
messages
=
new
ArrayList
<>();
chatInputData
.
setMessages
(
messages
);
Message
systemRole
=
getSystemMessageForNatureDisaster
();
messages
.
add
(
systemRole
);
Message
userRole
=
getUserMessageForNaturalDisasterTag
(
aiRequestDTO
);
messages
.
add
(
userRole
);
}
private
static
void
setModel
(
ChatInputData
chatInputData
)
{
UserHeader
userHeader
=
UserThreadLocal
.
get
();
if
(
StringUtils
.
isNotEmpty
(
userHeader
.
getModel
())){
chatInputData
.
setModel
(
userHeader
.
getModel
());
}
else
{
chatInputData
.
setModel
(
"deepseek-v3-250324"
);
}
}
private
void
buildNewsTag
(
ChatInputData
chatInputData
,
AIRequestDTO
AIRequestDTO
)
{
setModel
(
chatInputData
);
chatInputData
.
setStream
(
false
);
List
<
Message
>
messages
=
new
ArrayList
<>();
chatInputData
.
setMessages
(
messages
);
Message
systemRole
=
getSystem
TagDeepSeekMessage
();
Message
systemRole
=
getSystem
MessageForNewsTag
();
messages
.
add
(
systemRole
);
Message
userRole
=
getUser
TagDeepSeekMessage
(
translate
DTO
);
Message
userRole
=
getUser
MessageForNewsTag
(
AIRequest
DTO
);
messages
.
add
(
userRole
);
}
...
...
@@ -171,27 +249,22 @@ public class DeepSeekAIServiceImpl implements AIService {
throw
new
BaseException
(
MsgCode
.
TRANSLATE_ERROR
);
}
private
void
buildTranslate
(
ChatInputData
chatInputData
,
TranslateDTO
translateDTO
)
{
UserHeader
userHeader
=
UserThreadLocal
.
get
();
if
(
StringUtils
.
isNotEmpty
(
userHeader
.
getModel
())){
chatInputData
.
setModel
(
userHeader
.
getModel
());
}
else
{
chatInputData
.
setModel
(
"deepseek-v3-250324"
);
}
private
void
buildTranslate
(
ChatInputData
chatInputData
,
AIRequestDTO
AIRequestDTO
)
{
setModel
(
chatInputData
);
chatInputData
.
setStream
(
false
);
List
<
Message
>
messages
=
new
ArrayList
<>();
chatInputData
.
setMessages
(
messages
);
Message
systemRole
=
getDeepSeekMessage
(
translate
DTO
);
Message
systemRole
=
getDeepSeekMessage
(
AIRequest
DTO
);
messages
.
add
(
systemRole
);
}
@NotNull
private
static
Message
getDeepSeekMessage
(
TranslateDTO
translate
DTO
)
{
private
static
Message
getDeepSeekMessage
(
AIRequestDTO
AIRequest
DTO
)
{
Message
systemRole
=
new
Message
();
systemRole
.
setRole
(
"user"
);
systemRole
.
setContent
(
"需要翻译的JSON:"
+
translate
DTO
.
getInputs
().
getRecord_json
()
+
"\n"
+
systemRole
.
setContent
(
"需要翻译的JSON:"
+
AIRequest
DTO
.
getInputs
().
getRecord_json
()
+
"\n"
+
"\n"
+
"你是一个 JSON 翻译员,能够将给定的 JSON 中的 value 值部分翻译成 `"
+
translate
DTO
.
getInputs
().
getLanguage
()
+
"`。\n"
+
"你是一个 JSON 翻译员,能够将给定的 JSON 中的 value 值部分翻译成 `"
+
AIRequest
DTO
.
getInputs
().
getLanguage
()
+
"`。\n"
+
"\n"
+
"## 限制\n"
+
"- 严格按照要求进行翻译,不改变 JSON 的结构和无意义的 key 的 value。\n"
+
...
...
@@ -202,15 +275,66 @@ public class DeepSeekAIServiceImpl implements AIService {
return
systemRole
;
}
private
static
Message
getUserTagDeepSeekMessage
(
TranslateDTO
translateDTO
)
{
private
static
Message
getUserMessageForNaturalDisasterTag
(
AIRequestDTO
AIRequestDTO
)
{
Message
userRole
=
new
Message
();
userRole
.
setRole
(
"user"
);
userRole
.
setContent
(
AIRequestDTO
.
getInputs
().
getWarn_info
());
return
userRole
;
}
private
static
Message
getUserMessageForNewsTag
(
AIRequestDTO
AIRequestDTO
)
{
Message
userRole
=
new
Message
();
userRole
.
setRole
(
"user"
);
userRole
.
setContent
(
translate
DTO
.
getInputs
().
getMsg_info
());
userRole
.
setContent
(
AIRequest
DTO
.
getInputs
().
getMsg_info
());
return
userRole
;
}
@NotNull
private
static
Message
getSystemTagDeepSeekMessage
()
{
private
static
Message
getSystemMessageForNatureDisaster
()
{
Message
systemRole
=
new
Message
();
systemRole
.
setRole
(
"system"
);
systemRole
.
setContent
(
"```xml\n"
+
"<instruction>\n"
+
"根据给定的天气预警信息,打上相应的标签。标签列表包括:大风,雷暴,霾,冻雨,地震,火山爆发,海啸,台风/飓风,龙卷风,洪水,干旱,山体滑坡,泥石流,雪崩,森林火灾,冰川融化,沙尘暴,高温热浪,寒潮,暴雨,工业事故,交通事故,火灾,爆炸,核事故,化学品泄漏,油轮泄漏,矿难,食物中毒,公共卫生事件,建筑物倒塌,恐怖袭击,水坝溃坝,游行抗议,冰雹。\n"
+
"\n"
+
"<instructions>\n"
+
"1. 仔细阅读输入的天气预警信息,理解其描述的具体事件或现象。\n"
+
"2. 根据预警信息的内容,从提供的标签列表中选择最匹配的一个或多个标签。\n"
+
"3. 确保所选标签与预警信息描述的事件或现象完全一致,避免无关标签。\n"
+
"4. 如果预警信息描述的事件或现象不在标签列表中,则忽略该信息或选择最接近的标签。\n"
+
"5. 输出时仅列出匹配的标签,不要包含任何额外的解释或XML标签。\n"
+
"6. 如果预警信息包含多个事件或现象,请为每个事件或现象分别打上对应的标签。\n"
+
"\n"
+
"<examples>\n"
+
"<example>\n"
+
"输入:今日预计有强风,风速可达10级以上,请市民注意防范。\n"
+
"输出:大风\n"
+
"</example>\n"
+
"\n"
+
"<example>\n"
+
"输入:受台风影响,沿海地区将出现暴雨和大风天气,局部地区可能有洪水。\n"
+
"输出:台风/飓风,暴雨,洪水\n"
+
"</example>\n"
+
"\n"
+
"<example>\n"
+
"输入:某化工厂发生泄漏事故,导致周边空气质量下降,建议居民关闭门窗。\n"
+
"输出:化学品泄漏,工业事故\n"
+
"</example>\n"
+
"\n"
+
"<notes>\n"
+
"1. 标签之间用逗号分隔,不要使用空格或其他符号。\n"
+
"2. 如果预警信息描述的事件或现象与多个标签相关,请列出所有相关标签。\n"
+
"3. 确保标签的准确性,避免主观判断或猜测。\n"
+
"4. 输出格式应简洁明了,仅包含标签名称。\n"
+
"</notes>\n"
+
"</instruction>\n"
+
"```"
);
return
systemRole
;
}
@NotNull
private
static
Message
getSystemMessageForNewsTag
()
{
Message
systemRole
=
new
Message
();
systemRole
.
setRole
(
"system"
);
systemRole
.
setContent
(
"```xml\n"
+
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment