Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
poc-api
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
poc
poc-api
Commits
96ad2bbe
Commit
96ad2bbe
authored
Jun 24, 2025
by
alex yao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:智写判断写作和生成标题接口
parent
a0728e8d
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
120 additions
and
6 deletions
+120
-6
AiWritingService.java
...n/java/cn/com/poc/writing/aggregate/AiWritingService.java
+8
-0
AiWritingServiceImpl.java
.../com/poc/writing/aggregate/impl/AiWritingServiceImpl.java
+55
-0
AiWritingTitleGenerationDto.java
...a/cn/com/poc/writing/dto/AiWritingTitleGenerationDto.java
+28
-0
TitleGenerationDto.java
src/main/java/cn/com/poc/writing/dto/TitleGenerationDto.java
+18
-0
AiWritingRest.java
src/main/java/cn/com/poc/writing/rest/AiWritingRest.java
+3
-3
AiWritingRestImpl.java
.../java/cn/com/poc/writing/rest/impl/AiWritingRestImpl.java
+8
-3
No files found.
src/main/java/cn/com/poc/writing/aggregate/AiWritingService.java
View file @
96ad2bbe
...
...
@@ -2,6 +2,7 @@ package cn.com.poc.writing.aggregate;
import
cn.com.poc.writing.dto.AiWritingExampleDto
;
import
cn.com.poc.writing.dto.AiWritingExampleTypeDto
;
import
cn.com.poc.writing.dto.AiWritingTitleGenerationDto
;
import
java.util.List
;
...
...
@@ -39,5 +40,12 @@ public interface AiWritingService {
*/
List
<
AiWritingExampleTypeDto
>
exampleType
()
throws
Exception
;
/**
* 标题生成
*
* @param input 输入内容g
*/
AiWritingTitleGenerationDto
titleGeneration
(
String
input
);
}
src/main/java/cn/com/poc/writing/aggregate/impl/AiWritingServiceImpl.java
View file @
96ad2bbe
package
cn
.
com
.
poc
.
writing
.
aggregate
.
impl
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Tool
;
import
com.google.common.collect.Maps
;
import
cn.com.poc.agent_application.entity.BizAgentApplicationDialoguesRecordEntity
;
import
cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity
;
import
cn.com.poc.agent_application.entity.KnowledgeContentResult
;
...
...
@@ -31,6 +34,7 @@ import cn.com.poc.thirdparty.service.LLMService;
import
cn.com.poc.writing.aggregate.AiWritingService
;
import
cn.com.poc.writing.dto.AiWritingExampleDto
;
import
cn.com.poc.writing.dto.AiWritingExampleTypeDto
;
import
cn.com.poc.writing.dto.AiWritingTitleGenerationDto
;
import
cn.com.poc.writing.entity.BizAiWritingExampleEntity
;
import
cn.com.poc.writing.entity.BizAiWritingExampleTypeEntity
;
import
cn.com.poc.writing.service.BizAiWritingExampleService
;
...
...
@@ -236,6 +240,57 @@ public class AiWritingServiceImpl implements AiWritingService {
}).
collect
(
Collectors
.
toList
());
}
@Override
public
AiWritingTitleGenerationDto
titleGeneration
(
String
input
)
{
String
system
=
"## 角色\n"
+
"你的任务需要帮我判断用户是否需要进行【写作】\n"
+
"\n"
+
"## 输出\n"
+
"1.包含字段有 needWriting:bool 判断是否需要写作 true-需要 false-不需要 。 title-写作标题,如果需要则生成文章的标题\n"
+
"2.仅使用文本方式输出内容。\n"
+
"\n"
+
"## 输出案例\n"
+
"{”needWriting“:true,\"title\":\"论人工智能发展对生产力的影响\"}"
;
// 配置message
List
<
Message
>
messages
=
new
ArrayList
<>();
Message
systemMessage
=
new
Message
();
systemMessage
.
setContent
(
system
);
systemMessage
.
setRole
(
LLMRoleEnum
.
SYSTEM
.
getRole
());
messages
.
add
(
systemMessage
);
Message
userMessage
=
new
Message
();
userMessage
.
setContent
(
input
);
userMessage
.
setRole
(
LLMRoleEnum
.
USER
.
getRole
());
messages
.
add
(
userMessage
);
LargeModelResponse
largeModelResponse
=
new
LargeModelResponse
();
largeModelResponse
.
setModel
(
"deepseek-v3"
);
largeModelResponse
.
setMessages
(
messages
.
toArray
(
new
Message
[
0
]));
largeModelResponse
.
setTopP
(
0.7
F
);
largeModelResponse
.
setTemperature
(
0.5
F
);
largeModelResponse
.
setStream
(
false
);
LargeModelDemandResult
largeModelDemandResult
=
llmService
.
chat
(
largeModelResponse
);
if
(
largeModelDemandResult
==
null
||
StringUtils
.
isBlank
(
largeModelDemandResult
.
getMessage
()))
{
throw
new
BusinessException
(
"调用大模型失败"
);
}
String
message
=
largeModelDemandResult
.
getMessage
();
int
startEnd
=
message
.
indexOf
(
"{"
);
int
endIndex
=
message
.
lastIndexOf
(
"}"
);
if
(
startEnd
==
-
1
||
endIndex
==
-
1
)
{
logger
.
error
(
"解析内容失败, message:{}"
,
message
);
throw
new
BusinessException
(
"解析内容失败"
);
}
String
substring
=
message
.
substring
(
startEnd
,
endIndex
+
1
);
AiWritingTitleGenerationDto
aiWritingTitleGenerationDto
=
JsonUtils
.
deSerialize
(
substring
,
AiWritingTitleGenerationDto
.
class
);
if
(
aiWritingTitleGenerationDto
==
null
){
aiWritingTitleGenerationDto
.
setNeedWriting
(
false
);
aiWritingTitleGenerationDto
.
setTitle
(
StringUtils
.
EMPTY
);
}
return
aiWritingTitleGenerationDto
;
}
private
List
<
Message
>
buildMessages
(
String
dialogsId
,
Long
userId
,
String
input
,
String
fileUrl
,
List
<
KnowledgeContentResult
>
knowledgeContentResults
)
throws
Exception
{
// 获取对话提示词
String
promptCode
=
"AiWritingPrompt"
;
...
...
src/main/java/cn/com/poc/writing/dto/AiWritingTitleGenerationDto.java
0 → 100644
View file @
96ad2bbe
package
cn
.
com
.
poc
.
writing
.
dto
;
/**
* @author alex.yao
* @date 2025/6/24
*/
public
class
AiWritingTitleGenerationDto
{
private
String
title
;
private
Boolean
needWriting
;
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
Boolean
getNeedWriting
()
{
return
needWriting
;
}
public
void
setNeedWriting
(
Boolean
needWriting
)
{
this
.
needWriting
=
needWriting
;
}
}
src/main/java/cn/com/poc/writing/dto/TitleGenerationDto.java
0 → 100644
View file @
96ad2bbe
package
cn
.
com
.
poc
.
writing
.
dto
;
/**
* @author alex.yao
* @date 2025/6/24
*/
public
class
TitleGenerationDto
{
private
String
input
;
public
String
getInput
()
{
return
input
;
}
public
void
setInput
(
String
input
)
{
this
.
input
=
input
;
}
}
src/main/java/cn/com/poc/writing/rest/AiWritingRest.java
View file @
96ad2bbe
package
cn
.
com
.
poc
.
writing
.
rest
;
import
cn.com.poc.writing.dto.AiWritingDto
;
import
cn.com.poc.writing.dto.AiWritingExampleDto
;
import
cn.com.poc.writing.dto.AiWritingExampleTypeDto
;
import
cn.com.poc.writing.dto.*
;
import
cn.com.yict.framemax.core.rest.BaseRest
;
import
cn.com.yict.framemax.web.permission.Access
;
import
cn.com.yict.framemax.web.permission.Permission
;
...
...
@@ -25,4 +23,6 @@ public interface AiWritingRest extends BaseRest {
List
<
AiWritingExampleTypeDto
>
exampleType
()
throws
Exception
;
AiWritingTitleGenerationDto
titleGeneration
(
@RequestBody
TitleGenerationDto
titleGenerationDto
);
}
src/main/java/cn/com/poc/writing/rest/impl/AiWritingRestImpl.java
View file @
96ad2bbe
...
...
@@ -4,9 +4,7 @@ import cn.com.poc.common.utils.Assert;
import
cn.com.poc.common.utils.BlContext
;
import
cn.com.poc.support.security.oauth.entity.UserBaseEntity
;
import
cn.com.poc.writing.aggregate.AiWritingService
;
import
cn.com.poc.writing.dto.AiWritingDto
;
import
cn.com.poc.writing.dto.AiWritingExampleDto
;
import
cn.com.poc.writing.dto.AiWritingExampleTypeDto
;
import
cn.com.poc.writing.dto.*
;
import
cn.com.poc.writing.rest.AiWritingRest
;
import
cn.com.yict.framemax.core.exception.BusinessException
;
import
org.springframework.stereotype.Component
;
...
...
@@ -50,4 +48,11 @@ public class AiWritingRestImpl implements AiWritingRest {
public
List
<
AiWritingExampleTypeDto
>
exampleType
()
throws
Exception
{
return
aiWritingService
.
exampleType
();
}
@Override
public
AiWritingTitleGenerationDto
titleGeneration
(
TitleGenerationDto
titleGenerationDto
)
{
Assert
.
notNull
(
titleGenerationDto
,
"titleGenerationDto is null"
);
Assert
.
notBlank
(
titleGenerationDto
.
getInput
(),
"input is null"
);
return
aiWritingService
.
titleGeneration
(
titleGenerationDto
.
getInput
());
}
}
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