@@ -39,6 +39,12 @@ export async function generateAnswersWithGptCompletionApi(
39
39
40
40
let answer = ''
41
41
let finished = false
42
+ const finish = ( ) => {
43
+ finished = true
44
+ pushRecord ( session , question , answer )
45
+ console . debug ( 'conversation history' , { content : session . conversationRecords } )
46
+ port . postMessage ( { answer : null , done : true , session : session } )
47
+ }
42
48
await fetchSSE ( `${ apiUrl } /v1/completions` , {
43
49
method : 'POST' ,
44
50
signal : controller . signal ,
@@ -56,11 +62,9 @@ export async function generateAnswersWithGptCompletionApi(
56
62
} ) ,
57
63
onMessage ( message ) {
58
64
console . debug ( 'sse message' , message )
59
- if ( ! finished && message . trim ( ) === '[DONE]' ) {
60
- finished = true
61
- pushRecord ( session , question , answer )
62
- console . debug ( 'conversation history' , { content : session . conversationRecords } )
63
- port . postMessage ( { answer : null , done : true , session : session } )
65
+ if ( finished ) return
66
+ if ( message . trim ( ) === '[DONE]' ) {
67
+ finish ( )
64
68
return
65
69
}
66
70
let data
@@ -70,16 +74,14 @@ export async function generateAnswersWithGptCompletionApi(
70
74
console . debug ( 'json error' , error )
71
75
return
72
76
}
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
- return
79
- }
80
77
81
78
answer += data . choices [ 0 ] . text
82
79
port . postMessage ( { answer : answer , done : false , session : null } )
80
+
81
+ if ( data . choices [ 0 ] ?. finish_reason ) {
82
+ finish ( )
83
+ return
84
+ }
83
85
} ,
84
86
async onStart ( ) { } ,
85
87
async onEnd ( ) {
@@ -136,6 +138,12 @@ export async function generateAnswersWithChatgptApiCompat(
136
138
137
139
let answer = ''
138
140
let finished = false
141
+ const finish = ( ) => {
142
+ finished = true
143
+ pushRecord ( session , question , answer )
144
+ console . debug ( 'conversation history' , { content : session . conversationRecords } )
145
+ port . postMessage ( { answer : null , done : true , session : session } )
146
+ }
139
147
await fetchSSE ( `${ baseUrl } /v1/chat/completions` , {
140
148
method : 'POST' ,
141
149
signal : controller . signal ,
@@ -152,11 +160,9 @@ export async function generateAnswersWithChatgptApiCompat(
152
160
} ) ,
153
161
onMessage ( message ) {
154
162
console . debug ( 'sse message' , message )
155
- if ( ! finished && message . trim ( ) === '[DONE]' ) {
156
- finished = true
157
- pushRecord ( session , question , answer )
158
- console . debug ( 'conversation history' , { content : session . conversationRecords } )
159
- port . postMessage ( { answer : null , done : true , session : session } )
163
+ if ( finished ) return
164
+ if ( message . trim ( ) === '[DONE]' ) {
165
+ finish ( )
160
166
return
161
167
}
162
168
let data
@@ -166,13 +172,6 @@ export async function generateAnswersWithChatgptApiCompat(
166
172
console . debug ( 'json error' , error )
167
173
return
168
174
}
169
- if ( ! finished && data . choices [ 0 ] ?. finish_reason ) {
170
- finished = true
171
- pushRecord ( session , question , answer )
172
- console . debug ( 'conversation history' , { content : session . conversationRecords } )
173
- port . postMessage ( { answer : null , done : true , session : session } )
174
- return
175
- }
176
175
177
176
const delta = data . choices [ 0 ] ?. delta ?. content
178
177
const content = data . choices [ 0 ] ?. message ?. content
@@ -185,6 +184,11 @@ export async function generateAnswersWithChatgptApiCompat(
185
184
answer += text
186
185
}
187
186
port . postMessage ( { answer : answer , done : false , session : null } )
187
+
188
+ if ( data . choices [ 0 ] ?. finish_reason ) {
189
+ finish ( )
190
+ return
191
+ }
188
192
} ,
189
193
async onStart ( ) { } ,
190
194
async onEnd ( ) {
0 commit comments