Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
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
ai-tech
E
ellehuis-group
backend
elleai
Commits
278a355e
Commit
278a355e
authored
Apr 09, 2025
by
yangyw
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'refs/heads/feature/20241217_收尾' into sandbox
parents
93e0f0a3
10cb0e1a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
8 deletions
+47
-8
AppChatCompletionService.java
.../elleai/application/service/AppChatCompletionService.java
+31
-6
UserChatCompletionHistoryResponseModel.java
...odel/response/UserChatCompletionHistoryResponseModel.java
+5
-0
ChatCompletionService.java
...elleai/domain/sparring/service/ChatCompletionService.java
+1
-1
ChatCompletionServiceImpl.java
...ai/domain/sparring/service/ChatCompletionServiceImpl.java
+2
-1
UserChatCompletionHistoryEntity.java
.../elleai/infra/entity/UserChatCompletionHistoryEntity.java
+7
-0
application.yml
src/main/resources/application.yml
+1
-0
No files found.
src/main/java/cn/breeze/elleai/application/service/AppChatCompletionService.java
View file @
278a355e
...
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
...
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -62,6 +63,9 @@ public class AppChatCompletionService {
...
@@ -62,6 +63,9 @@ public class AppChatCompletionService {
@Value
(
"${deepseek.app_id}"
)
@Value
(
"${deepseek.app_id}"
)
private
String
dsAppId
;
private
String
dsAppId
;
@Value
(
"${deepseek.diss_api_base}"
)
private
String
dissApiBase
;
private
final
RestTemplate
restTemplate
=
new
RestTemplate
();
private
final
RestTemplate
restTemplate
=
new
RestTemplate
();
private
final
ChatCompletionService
chatCompletionService
;
private
final
ChatCompletionService
chatCompletionService
;
...
@@ -371,7 +375,7 @@ public class AppChatCompletionService {
...
@@ -371,7 +375,7 @@ public class AppChatCompletionService {
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
// 保存问答详情
// 保存问答详情
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
());
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
()
,
""
);
// 问一下AI
// 问一下AI
AiChatComplateResultDto
complateResultDto
=
ask4Knowledge
(
sessionId
,
userPrincipal
.
getUserId
(),
request
.
getContent
(),
request
.
getAssistantId
());
AiChatComplateResultDto
complateResultDto
=
ask4Knowledge
(
sessionId
,
userPrincipal
.
getUserId
(),
request
.
getContent
(),
request
.
getAssistantId
());
...
@@ -387,7 +391,7 @@ public class AppChatCompletionService {
...
@@ -387,7 +391,7 @@ public class AppChatCompletionService {
}
}
// 保存AI问答详情
// 保存AI问答详情
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
());
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
()
,
""
);
result
.
setChatCompletionId
(
chatCompletionId
);
result
.
setChatCompletionId
(
chatCompletionId
);
result
.
setReplyContent
(
replyContent
);
result
.
setReplyContent
(
replyContent
);
...
@@ -431,7 +435,7 @@ public class AppChatCompletionService {
...
@@ -431,7 +435,7 @@ public class AppChatCompletionService {
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
// 保存问答详情
// 保存问答详情
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
());
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
()
,
""
);
// 获取随机问题
// 获取随机问题
final
List
<
HotQaMobileDto
>
hots
=
Lists
.
newArrayList
();
final
List
<
HotQaMobileDto
>
hots
=
Lists
.
newArrayList
();
...
@@ -501,7 +505,7 @@ public class AppChatCompletionService {
...
@@ -501,7 +505,7 @@ public class AppChatCompletionService {
chatCompletionService
.
saveUserQaSession
(
updateModel
);
chatCompletionService
.
saveUserQaSession
(
updateModel
);
}
}
// 保存AI问答详情
// 保存AI问答详情
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
());
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
()
,
""
);
}
}
).
map
(
v
->
ServerSentEvent
.
builder
(
v
).
build
());
).
map
(
v
->
ServerSentEvent
.
builder
(
v
).
build
());
}
}
...
@@ -542,7 +546,7 @@ public class AppChatCompletionService {
...
@@ -542,7 +546,7 @@ public class AppChatCompletionService {
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
Integer
chatCompletionId
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
// 保存问答详情
// 保存问答详情
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
());
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
()
,
""
);
// 获取随机问题
// 获取随机问题
final
List
<
HotQaMobileDto
>
hots
=
Lists
.
newArrayList
();
final
List
<
HotQaMobileDto
>
hots
=
Lists
.
newArrayList
();
...
@@ -585,6 +589,7 @@ public class AppChatCompletionService {
...
@@ -585,6 +589,7 @@ public class AppChatCompletionService {
final
String
[]
thoughtContent
=
{
""
};
final
String
[]
thoughtContent
=
{
""
};
final
String
[]
replyContent
=
{
""
};
final
String
[]
replyContent
=
{
""
};
final
String
[]
difySessionId
=
{
""
};
final
String
[]
difySessionId
=
{
""
};
final
String
[]
recordId
=
{
""
};
final
Boolean
[]
replyFlag
=
{
false
};
final
Boolean
[]
replyFlag
=
{
false
};
String
finalSessionId
=
sessionId
;
String
finalSessionId
=
sessionId
;
return
webClient
.
post
().
uri
(
dsApiBase
).
accept
(
MediaType
.
TEXT_EVENT_STREAM
).
bodyValue
(
reqBody
.
toJSONString
()).
exchangeToFlux
(
r
->
r
.
bodyToFlux
(
String
.
class
))
return
webClient
.
post
().
uri
(
dsApiBase
).
accept
(
MediaType
.
TEXT_EVENT_STREAM
).
bodyValue
(
reqBody
.
toJSONString
()).
exchangeToFlux
(
r
->
r
.
bodyToFlux
(
String
.
class
))
...
@@ -619,6 +624,9 @@ public class AppChatCompletionService {
...
@@ -619,6 +624,9 @@ public class AppChatCompletionService {
if
(
ObjectUtil
.
isEmpty
(
difySessionId
[
0
])
&&
ObjectUtil
.
isNotEmpty
(
payload
.
getString
(
"session_id"
)))
{
if
(
ObjectUtil
.
isEmpty
(
difySessionId
[
0
])
&&
ObjectUtil
.
isNotEmpty
(
payload
.
getString
(
"session_id"
)))
{
difySessionId
[
0
]
=
payload
.
getString
(
"session_id"
);
difySessionId
[
0
]
=
payload
.
getString
(
"session_id"
);
}
}
if
(
StrUtil
.
isBlank
(
recordId
[
0
])
&&
StrUtil
.
isNotBlank
(
payload
.
getString
(
"record_id"
)))
{
recordId
[
0
]
=
payload
.
getString
(
"record_id"
);
}
}
}
}
}
String
finalContent
=
thoughtContent
[
0
];
String
finalContent
=
thoughtContent
[
0
];
...
@@ -642,7 +650,7 @@ public class AppChatCompletionService {
...
@@ -642,7 +650,7 @@ public class AppChatCompletionService {
chatCompletionService
.
saveUserQaSession
(
updateModel
);
chatCompletionService
.
saveUserQaSession
(
updateModel
);
}
}
// 保存AI问答详情
// 保存AI问答详情
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
finalContent
,
request
.
getAssistantId
());
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
finalContent
,
request
.
getAssistantId
()
,
recordId
[
0
]
);
}
}
).
map
(
v
->
ServerSentEvent
.
builder
(
v
).
build
());
).
map
(
v
->
ServerSentEvent
.
builder
(
v
).
build
());
}
}
...
@@ -749,6 +757,23 @@ public class AppChatCompletionService {
...
@@ -749,6 +757,23 @@ public class AppChatCompletionService {
saveModel
.
setId
(
model
.
getId
());
saveModel
.
setId
(
model
.
getId
());
saveModel
.
setDiss
(
status
);
saveModel
.
setDiss
(
status
);
chatCompletionService
.
saveUserQaRecord
(
saveModel
);
chatCompletionService
.
saveUserQaRecord
(
saveModel
);
// 提交腾讯云踩的数据
if
(
ObjectUtil
.
equals
(
1
,
status
))
{
if
(
StrUtil
.
isNotBlank
(
model
.
getRecordId
()))
{
com
.
alibaba
.
fastjson2
.
JSONObject
body
=
new
com
.
alibaba
.
fastjson2
.
JSONObject
();
body
.
put
(
"RecordId"
,
model
.
getRecordId
());
body
.
put
(
"Score"
,
2
);
body
.
put
(
"BotAppKey"
,
dsAppKey
);
webClient
.
post
().
uri
(
dissApiBase
)
.
header
(
"X-TC-Action"
,
"RateMsgRecord"
)
.
header
(
"X-TC-Region"
,
"ap-guangzhou"
)
.
header
(
"X-TC-Version"
,
"2023-11-30"
)
.
contentType
(
MediaType
.
APPLICATION_JSON
).
bodyValue
(
body
.
toJSONString
())
.
exchangeToMono
(
r
->
r
.
bodyToMono
(
String
.
class
)).
subscribe
(
res
->
{
log
.
info
(
"踩数据提交结果:{}"
,
res
);
});
}
}
}
}
}
}
...
...
src/main/java/cn/breeze/elleai/domain/sparring/model/response/UserChatCompletionHistoryResponseModel.java
View file @
278a355e
...
@@ -35,6 +35,11 @@ public class UserChatCompletionHistoryResponseModel implements Serializable {
...
@@ -35,6 +35,11 @@ public class UserChatCompletionHistoryResponseModel implements Serializable {
*/
*/
private
Integer
likes
;
private
Integer
likes
;
/**
* 问答记录ID
*/
private
String
recordId
;
/**
/**
* 创建时间
* 创建时间
*/
*/
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/ChatCompletionService.java
View file @
278a355e
...
@@ -31,7 +31,7 @@ public interface ChatCompletionService {
...
@@ -31,7 +31,7 @@ public interface ChatCompletionService {
Integer
saveUserQaSession
(
UserChatCompletionSaveModel
dto
);
Integer
saveUserQaSession
(
UserChatCompletionSaveModel
dto
);
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
);
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
,
String
recordId
);
Integer
saveUserQaRecord
(
UserQaHistorySaveModel
dto
);
Integer
saveUserQaRecord
(
UserQaHistorySaveModel
dto
);
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/ChatCompletionServiceImpl.java
View file @
278a355e
...
@@ -150,13 +150,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
...
@@ -150,13 +150,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
}
}
@Override
@Override
public
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
)
{
public
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
,
String
recordId
)
{
UserChatCompletionHistoryEntity
entity
=
new
UserChatCompletionHistoryEntity
();
UserChatCompletionHistoryEntity
entity
=
new
UserChatCompletionHistoryEntity
();
entity
.
setChatCompletionId
(
chatCompletionId
);
entity
.
setChatCompletionId
(
chatCompletionId
);
entity
.
setType
(
type
);
entity
.
setType
(
type
);
entity
.
setReplyMessageId
(
replyMessageId
);
entity
.
setReplyMessageId
(
replyMessageId
);
entity
.
setContent
(
content
);
entity
.
setContent
(
content
);
entity
.
setAssistantId
(
assistantId
);
entity
.
setAssistantId
(
assistantId
);
entity
.
setRecordId
(
recordId
);
entity
.
setCreateTime
(
new
Date
());
entity
.
setCreateTime
(
new
Date
());
chatCompletionHistoryMapper
.
insertOrUpdateSelective
(
entity
);
chatCompletionHistoryMapper
.
insertOrUpdateSelective
(
entity
);
return
entity
.
getId
();
return
entity
.
getId
();
...
...
src/main/java/cn/breeze/elleai/infra/entity/UserChatCompletionHistoryEntity.java
View file @
278a355e
...
@@ -65,6 +65,13 @@ public class UserChatCompletionHistoryEntity implements Serializable {
...
@@ -65,6 +65,13 @@ public class UserChatCompletionHistoryEntity implements Serializable {
* AI回复用户消息ID
* AI回复用户消息ID
*/
*/
private
Integer
replyMessageId
;
private
Integer
replyMessageId
;
/**
* 问答记录ID
*/
private
String
recordId
;
/**
/**
* 创建时间
* 创建时间
*/
*/
...
...
src/main/resources/application.yml
View file @
278a355e
...
@@ -28,6 +28,7 @@ deepseek:
...
@@ -28,6 +28,7 @@ deepseek:
secret_id
:
AKIDHMA2jAKD6dwzpPikWR5TbT5RWLtAAuNZ
secret_id
:
AKIDHMA2jAKD6dwzpPikWR5TbT5RWLtAAuNZ
app_key
:
imNDldBw
app_key
:
imNDldBw
api_base
:
https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
api_base
:
https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
diss_api_base
:
https://lke.tencentcloudapi.com/
---
---
spring
:
spring
:
config
:
config
:
...
...
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