@@ -34,26 +34,34 @@ public QAWithResponseController(OpenAiResponseService aiService) {
3434
3535 @ GetMapping (produces = MediaType .TEXT_EVENT_STREAM_VALUE )
3636 public Flux <Answer > qa (@ RequestParam String question ,
37- @ RequestParam (required = false , defaultValue = "" ) String threadId ) {
37+ @ RequestParam (name = "threadId" , required = false , defaultValue = "" ) String conversationId ) {
3838 question = question .trim ();
3939 if (Strings .isNullOrEmpty (question )) {
4040 return Flux .just (Answer .EMPTY );
4141 }
4242
43+ if (Strings .isNullOrEmpty (conversationId )) {
44+ conversationId = getConversationId ();
45+ }
46+
4347 try {
44- return doQA (threadId , question );
48+ return doQA (conversationId , question );
4549 } catch (Throwable exception ) {
4650 LOGGER .error ("Error while calling Assistants API" , exception );
4751 return Flux .just (Answer .ERROR );
4852 }
4953 }
5054
51- private Flux <Answer > doQA (String threadId , String question ) {
55+ private String getConversationId () {
56+ return aiService .createConversation ().id ();
57+ }
58+
59+ private Flux <Answer > doQA (String conversationId , String question ) {
5260 if (LOGGER .isDebugEnabled ()) {
5361 LOGGER .debug ("\n Prompt message: {}" , question );
5462 }
5563
56- Flux <ResponseStreamEvent > result = aiService .getResponseMessage (threadId , question );
64+ Flux <ResponseStreamEvent > result = aiService .getResponseMessage (conversationId , question );
5765
5866 return result .filter (
5967 responseStreamEvent -> responseStreamEvent .isOutputTextDelta ()
@@ -67,13 +75,13 @@ private Flux<Answer> doQA(String threadId, String question) {
6775 return getAnswerFromOutputTextDelta (responseStreamEvent .outputTextDelta ().get ());
6876 } else if (responseStreamEvent .isCompleted () && responseStreamEvent .completed ()
6977 .isPresent ()) {
70- return getAnswerFromCompleted (responseStreamEvent .completed ().get ());
78+ return getAnswerFromCompleted (conversationId , responseStreamEvent .completed ().get ());
7179 }
7280 return Answer .EMPTY ;
7381 }).onErrorReturn (Answer .ERROR );
7482 }
7583
76- private @ NotNull Answer getAnswerFromCompleted (ResponseCompletedEvent responseCompletedEvent ) {
84+ private @ NotNull Answer getAnswerFromCompleted (String conversationId , ResponseCompletedEvent responseCompletedEvent ) {
7785 Set <String > relatedFiles = responseCompletedEvent .response ().output ().stream ()
7886 .filter (responseOutputItem -> responseOutputItem .isMessage ()
7987 && responseOutputItem .message ().isPresent ())
@@ -93,7 +101,7 @@ private Flux<Answer> doQA(String threadId, String question) {
93101 return fileName ;
94102 })
95103 .collect (Collectors .toSet ());
96- return new Answer (END_SYMBOL , responseCompletedEvent . response (). id () , relatedFiles );
104+ return new Answer (END_SYMBOL , conversationId , relatedFiles );
97105 }
98106
99107 private @ NotNull Answer getAnswerFromOutputTextDelta (
0 commit comments