@@ -38,6 +38,7 @@ export async function generateAnswersWithGptCompletionApi(
38
38
const apiUrl = config . customOpenAiApiUrl
39
39
40
40
let answer = ''
41
+ let finished = false
41
42
await fetchSSE ( `${ apiUrl } /v1/completions` , {
42
43
method : 'POST' ,
43
44
signal : controller . signal ,
@@ -55,7 +56,8 @@ export async function generateAnswersWithGptCompletionApi(
55
56
} ) ,
56
57
onMessage ( message ) {
57
58
console . debug ( 'sse message' , message )
58
- if ( message . trim ( ) === '[DONE]' ) {
59
+ if ( ! finished && message . trim ( ) === '[DONE]' ) {
60
+ finished = true
59
61
pushRecord ( session , question , answer )
60
62
console . debug ( 'conversation history' , { content : session . conversationRecords } )
61
63
port . postMessage ( { answer : null , done : true , session : session } )
@@ -68,6 +70,13 @@ export async function generateAnswersWithGptCompletionApi(
68
70
console . debug ( 'json error' , error )
69
71
return
70
72
}
73
+ if ( ! finished && data . choices [ 0 ] ?. finish_reason ) {
74
+ finished = true
75
+ pushRecord ( session , question , answer )
76
+ console . debug ( 'conversation history' , { content : session . conversationRecords } )
77
+ port . postMessage ( { answer : null , done : true , session : session } )
78
+ }
79
+
71
80
answer += data . choices [ 0 ] . text
72
81
port . postMessage ( { answer : answer , done : false , session : null } )
73
82
} ,
@@ -125,6 +134,7 @@ export async function generateAnswersWithChatgptApiCompat(
125
134
prompt . push ( { role : 'user' , content : question } )
126
135
127
136
let answer = ''
137
+ let finished = false
128
138
await fetchSSE ( `${ baseUrl } /v1/chat/completions` , {
129
139
method : 'POST' ,
130
140
signal : controller . signal ,
@@ -141,7 +151,8 @@ export async function generateAnswersWithChatgptApiCompat(
141
151
} ) ,
142
152
onMessage ( message ) {
143
153
console . debug ( 'sse message' , message )
144
- if ( message . trim ( ) === '[DONE]' ) {
154
+ if ( ! finished && message . trim ( ) === '[DONE]' ) {
155
+ finished = true
145
156
pushRecord ( session , question , answer )
146
157
console . debug ( 'conversation history' , { content : session . conversationRecords } )
147
158
port . postMessage ( { answer : null , done : true , session : session } )
@@ -154,6 +165,13 @@ export async function generateAnswersWithChatgptApiCompat(
154
165
console . debug ( 'json error' , error )
155
166
return
156
167
}
168
+ if ( ! finished && data . choices [ 0 ] ?. finish_reason ) {
169
+ finished = true
170
+ pushRecord ( session , question , answer )
171
+ console . debug ( 'conversation history' , { content : session . conversationRecords } )
172
+ port . postMessage ( { answer : null , done : true , session : session } )
173
+ }
174
+
157
175
const delta = data . choices [ 0 ] ?. delta ?. content
158
176
const content = data . choices [ 0 ] ?. message ?. content
159
177
const text = data . choices [ 0 ] ?. text
0 commit comments