Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pms-dispatch-assistant
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
姜耀祖
pms-dispatch-assistant
Commits
f4a52985
Commit
f4a52985
authored
Apr 23, 2025
by
赵灿灿
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改配置信息
parent
72e4f51a
Pipeline
#21075
passed with stages
in 3 minutes and 13 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
69 additions
and
23 deletions
+69
-23
LangChainController.java
...chassistant/controller/langchain/LangChainController.java
+35
-5
ChatService.java
.../dispatchassistant/domain/langchain/chat/ChatService.java
+23
-11
ai-chat.html
src/main/resources/static/pages/langchain/ai-chat.html
+3
-3
ai-chat-vue.js
src/main/resources/static/pages/langchain/js/ai-chat-vue.js
+8
-4
No files found.
src/main/java/com/infoepoch/pms/dispatchassistant/controller/langchain/LangChainController.java
View file @
f4a52985
...
...
@@ -283,16 +283,41 @@ public class LangChainController {
//调用智能体
@GetMapping
(
"/sseIntelligent"
)
public
ResponseEntity
<
SseEmitter
>
sse
(
@RequestParam
String
chatMessage
,
@RequestParam
String
dialogId
)
{
public
ResponseEntity
<
SseEmitter
>
sse
(
@RequestParam
String
chatMessage
,
@RequestParam
String
dialogId
,
@RequestParam
String
selectedExpert
,
@RequestParam
String
selectedOrg
)
{
String
condition
=
""
;
String
regionName
=
chatService
.
getAuthRegionName
();
if
(
"组织内"
.
equals
(
selectedOrg
)&&
StringUtils
.
isNotEmpty
(
regionName
))
{
condition
=
",只能查找"
+
regionName
;
}
else
if
(
"组织外"
.
equals
(
selectedOrg
)&&
StringUtils
.
isNotEmpty
(
regionName
))
{
condition
=
",排除"
+
regionName
;
}
logger
.
info
(
"开始调用1"
);
String
urlAddr
=
"http://10.32.41.35:40517/scene_gateway/agent/6809d0895428476bb6789ad70c525c97"
;
//String urlAddr = "http://10.32.41.35:40517/scene_gateway/agent/83f77143b09c461993dd9a7db403eb94";
SseEmitter
emitter
=
new
SseEmitter
(
0L
);
QuestionRequest
questionRequest
=
new
QuestionRequest
();
questionRequest
.
setKeyword
(
chatMessage
);
questionRequest
.
setKeyword
(
chatMessage
+
condition
);
questionRequest
.
setRequestId
(
getRequestId
());
questionRequest
.
setDialogId
(
dialogId
);
Conversations
conversations
=
chatService
.
saveConversations
(
dialogId
,
chatMessage
,
"内部专家"
);
Messages
messagesQusetion
=
new
Messages
();
messagesQusetion
.
setRequestId
(
dialogId
);
messagesQusetion
.
setContent
(
chatMessage
);
messagesQusetion
.
setRole
(
"user"
);
messagesQusetion
.
setModelName
(
"qwen2.5-72b"
);
messagesQusetion
=
chatService
.
insertQuestionMessage
(
conversations
,
messagesQusetion
);
Messages
messagesContent
=
new
Messages
();
messagesContent
.
setRole
(
"assistant"
);
messagesContent
.
setModelName
(
"qwen2.5-72b"
);
messagesContent
.
setParentMsgId
(
messagesQusetion
.
getId
());
messagesContent
.
setSort
(
messagesQusetion
.
getSort
()+
1
);
chatService
.
insertMessage
(
conversations
,
messagesContent
);
String
params
=
JsonUtils
.
objectToJson
(
questionRequest
);
StringBuffer
content
=
new
StringBuffer
();
new
Thread
(()
->
{
HttpURLConnection
connection
=
null
;
try
{
...
...
@@ -335,13 +360,18 @@ public class LangChainController {
emitter
.
send
(
SseEmitter
.
event
().
data
(
"stop"
),
MediaType
.
parseMediaType
(
"application/json; charset=UTF-8"
));
}
else
{
emitter
.
send
(
SseEmitter
.
event
().
data
(
data
),
MediaType
.
parseMediaType
(
"application/json; charset=UTF-8"
));
String
sendData
=
data
.
replace
(
"attachment#[]#attachmentsource#[]#source"
,
""
).
replace
(
"<br />"
,
"\n"
).
replaceAll
(
"###(?=\\S)"
,
"### "
).
replaceAll
(
"##(?=\\S)"
,
"## "
)
.
replaceAll
(
"#(?=\\S)"
,
"# "
).
replaceAll
(
"####(?=\\S)"
,
"#### "
).
replaceAll
(
"#####(?=\\S)"
,
"##### "
).
replaceAll
(
"######(?=\\S)"
,
"###### "
);
emitter
.
send
(
SseEmitter
.
event
().
data
(
sendData
),
MediaType
.
parseMediaType
(
"application/json; charset=UTF-8"
));
content
.
append
(
sendData
);
}
}
}
}
}
messagesContent
.
setContent
(
content
.
toString
());
chatService
.
updateMessage
(
messagesContent
);
emitter
.
complete
();
// 流结束
}
catch
(
Exception
e
)
{
emitter
.
completeWithError
(
e
);
...
...
@@ -720,7 +750,7 @@ public class LangChainController {
*/
@GetMapping
(
"/conversationMessages"
)
public
Result
conversationMessages
(
@RequestParam
String
sessionId
)
{
List
<
M
ap
<
String
,
Object
>
>
mapList
=
chatService
.
conversationMessages
(
sessionId
);
List
<
M
essages
>
mapList
=
chatService
.
conversationMessages
(
sessionId
);
return
Result
.
successData
(
mapList
);
}
}
src/main/java/com/infoepoch/pms/dispatchassistant/domain/langchain/chat/ChatService.java
View file @
f4a52985
...
...
@@ -270,24 +270,18 @@ public class ChatService {
}
//查询会话内容通过会话id
public
List
<
Map
<
String
,
Object
>
>
conversationMessages
(
String
sessionId
)
public
List
<
Messages
>
conversationMessages
(
String
sessionId
)
{
List
<
M
ap
<
String
,
Object
>>
map
List
=
new
ArrayList
<>();
List
<
M
essages
>
messages
List
=
new
ArrayList
<>();
try
{
MessagesCriteria
messagesCriteria
=
new
MessagesCriteria
();
messagesCriteria
.
setSessionId
(
sessionId
);
List
<
Messages
>
messagesList
=
iMessagesRepository
.
selectByCriteria
(
messagesCriteria
);
for
(
Messages
mes:
messagesList
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"role"
,
mes
.
getRole
());
map
.
put
(
"content"
,
mes
.
getContent
());
mapList
.
add
(
map
);
}
messagesList
=
iMessagesRepository
.
selectByCriteria
(
messagesCriteria
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
m
ap
List
;
return
m
essages
List
;
}
...
...
@@ -312,4 +306,22 @@ public class ChatService {
return
calendar
.
getTime
();
}
//获取当前用户所在的地市
public
String
getAuthRegionName
()
{
String
regionName
=
""
;
try
{
User
user
=
auth
.
getUserReq
();
String
[]
rganizationNameList
=
user
.
getOrganizationName
().
split
(
"\\\\"
);
if
(
rganizationNameList
.
length
>=
2
)
{
regionName
=
rganizationNameList
[
1
];
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
regionName
;
}
}
src/main/resources/static/pages/langchain/ai-chat.html
View file @
f4a52985
...
...
@@ -100,9 +100,9 @@
<div
class=
"dropdown-item"
@
click
.
stop=
"selectExpert('内部专家')"
:class=
"{ 'active': selectedExpert === '内部专家' }"
>
<span>
内部专家
</span>
</div>
<div
class=
"dropdown-item"
@
click
.
stop=
"selectExpert('外部专家')"
:class=
"{ 'active': selectedExpert === '外部专家' }"
>
<span>
外部专家
</span
>
</div
>
<!-- <div class="dropdown-item" @click.stop="selectExpert('外部专家')" :class="{ 'active': selectedExpert === '外部专家' }">--
>
<!-- <span>外部专家</span>--
>
<!-- </div>--
>
</div>
</div>
<div
class=
"custom-select"
v-click-outside=
"closeOrgDropdown"
>
...
...
src/main/resources/static/pages/langchain/js/ai-chat-vue.js
View file @
f4a52985
...
...
@@ -219,7 +219,8 @@ require(['jquery', 'vue', 'utils','marked','markdown', 'global'], function ($, V
}
});
// 连接SSE
this
.
currentEventSource
=
new
EventSource
(
'../../api/langchain/sseBigTwo'
);
this
.
currentEventSource
=
new
EventSource
(
'../../api/langchain/sseIntelligent?chatMessage='
+
chatMessage
+
"&dialogId="
+
this
.
sessionId
+
"&selectedExpert="
+
this
.
selectedExpert
+
"&selectedOrg="
+
this
.
selectedOrg
);
let
responseText
=
''
;
var
md
=
new
markdown
({
...
...
@@ -306,6 +307,7 @@ require(['jquery', 'vue', 'utils','marked','markdown', 'global'], function ($, V
// 这里可以添加将新对话添加到历史列表的逻辑
// this.addChatToHistory('新对话', new Date());
});
this
.
fistLoading
=
true
;
},
loadChatHistory
(
chatId
)
{
...
...
@@ -326,6 +328,8 @@ require(['jquery', 'vue', 'utils','marked','markdown', 'global'], function ($, V
//
this
.
sessionId
=
chatId
;
// this.clearChat();
this
.
questions
=
[];
this
.
messages
=
[];
//这里添加加载对应对话历史的逻辑
//实际实现时可以调用API获取历史记录
$
.
ajax
({
...
...
@@ -335,10 +339,10 @@ require(['jquery', 'vue', 'utils','marked','markdown', 'global'], function ($, V
contentType
:
"application/json;charset=UTF-8"
,
async
:
false
,
success
:
function
(
data
)
{
var
m
es
=
data
.
data
;
if
(
mes
&&
m
es
.
length
>
0
){
var
conversationMessag
es
=
data
.
data
;
if
(
conversationMessages
&&
conversationMessag
es
.
length
>
0
){
that
.
fistLoading
=
false
;
m
es
.
forEach
(
section
=>
{
conversationMessag
es
.
forEach
(
section
=>
{
that
.
addMessage
(
section
.
role
,
section
.
content
);
});
}
...
...
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