1
- package cc . vividcode . ai .naiverag .chat ;
1
+ package com . javaaidev .naiverag .chat ;
2
2
3
3
import java .util .Map ;
4
4
import java .util .stream .Collectors ;
5
- import org .springframework .ai .chat .ChatClient ;
5
+ import org .springframework .ai .chat .client . ChatClient ;
6
6
import org .springframework .ai .chat .prompt .PromptTemplate ;
7
7
import org .springframework .ai .document .Document ;
8
8
import org .springframework .ai .vectorstore .SearchRequest ;
9
9
import org .springframework .ai .vectorstore .VectorStore ;
10
10
import org .springframework .beans .factory .annotation .Value ;
11
11
import org .springframework .core .io .Resource ;
12
+ import org .springframework .util .CollectionUtils ;
12
13
13
14
public class ChatService {
14
15
@@ -24,20 +25,23 @@ public ChatService(ChatClient chatClient, VectorStore vectorStore) {
24
25
}
25
26
26
27
public String chat (ChatRequest request ) {
27
- var documents = findDocuments (request .message ());
28
+ var documents = findDocuments (request .input ());
28
29
var prompt = new PromptTemplate (promptRag ).create (
29
- Map .of ("query" , request .message (),
30
+ Map .of ("query" , request .input (),
30
31
"documents" , documents )
31
32
);
32
- return chatClient .call (prompt ).getResult ().getOutput (). getContent ();
33
+ return chatClient .prompt (prompt ).call ().content ();
33
34
}
34
35
35
36
private String findDocuments (String query ) {
36
37
var docs = vectorStore .similaritySearch (
37
- SearchRequest .query (query )
38
- .withSimilarityThresholdAll ()
39
- .withTopK (3 ));
40
- return docs .stream ().map (Document ::getContent )
38
+ SearchRequest .builder ().query (query )
39
+ .similarityThresholdAll ()
40
+ .topK (3 ).build ());
41
+ if (CollectionUtils .isEmpty (docs )) {
42
+ return "" ;
43
+ }
44
+ return docs .stream ().map (Document ::getText )
41
45
.collect (Collectors .joining ("\r \n \r \n " ));
42
46
}
43
47
}
0 commit comments