@@ -4,7 +4,7 @@ import { maxResponseTokenLength, Models, getUserConfig } from '../../config/inde
44import { fetchSSE } from '../../utils/fetch-sse'
55import { getConversationPairs } from '../../utils/get-conversation-pairs'
66import { isEmpty } from 'lodash-es'
7- import { pushRecord } from './shared.mjs'
7+ import { pushRecord , setAbortController } from './shared.mjs'
88
99const getChatgptPromptBase = async ( ) => {
1010 return `You are a helpful, creative, clever, and very friendly assistant. You are familiar with various languages in the world.`
@@ -35,20 +35,7 @@ export async function generateAnswersWithGptCompletionApi(
3535 apiKey ,
3636 modelName ,
3737) {
38- const controller = new AbortController ( )
39- const stopListener = ( msg ) => {
40- if ( msg . stop ) {
41- console . debug ( 'stop generating' )
42- port . postMessage ( { done : true } )
43- port . onMessage . removeListener ( stopListener )
44- controller . abort ( )
45- }
46- }
47- port . onMessage . addListener ( stopListener )
48- port . onDisconnect . addListener ( ( ) => {
49- console . debug ( 'port disconnected' )
50- controller . abort ( )
51- } )
38+ const { controller, messageListener } = setAbortController ( port )
5239
5340 const prompt =
5441 ( await getGptPromptBase ( ) ) +
@@ -90,10 +77,10 @@ export async function generateAnswersWithGptCompletionApi(
9077 } ,
9178 async onStart ( ) { } ,
9279 async onEnd ( ) {
93- port . onMessage . removeListener ( stopListener )
80+ port . onMessage . removeListener ( messageListener )
9481 } ,
9582 async onError ( resp ) {
96- port . onMessage . removeListener ( stopListener )
83+ port . onMessage . removeListener ( messageListener )
9784 if ( resp instanceof Error ) throw resp
9885 if ( resp . status === 403 ) {
9986 throw new Error ( 'CLOUDFLARE' )
@@ -112,20 +99,7 @@ export async function generateAnswersWithGptCompletionApi(
11299 * @param {string } modelName
113100 */
114101export async function generateAnswersWithChatgptApi ( port , question , session , apiKey , modelName ) {
115- const controller = new AbortController ( )
116- const stopListener = ( msg ) => {
117- if ( msg . stop ) {
118- console . debug ( 'stop generating' )
119- port . postMessage ( { done : true } )
120- port . onMessage . removeListener ( stopListener )
121- controller . abort ( )
122- }
123- }
124- port . onMessage . addListener ( stopListener )
125- port . onDisconnect . addListener ( ( ) => {
126- console . debug ( 'port disconnected' )
127- controller . abort ( )
128- } )
102+ const { controller, messageListener } = setAbortController ( port )
129103
130104 const prompt = getConversationPairs ( session . conversationRecords , true )
131105 prompt . unshift ( { role : 'system' , content : await getChatgptPromptBase ( ) } )
@@ -166,10 +140,10 @@ export async function generateAnswersWithChatgptApi(port, question, session, api
166140 } ,
167141 async onStart ( ) { } ,
168142 async onEnd ( ) {
169- port . onMessage . removeListener ( stopListener )
143+ port . onMessage . removeListener ( messageListener )
170144 } ,
171145 async onError ( resp ) {
172- port . onMessage . removeListener ( stopListener )
146+ port . onMessage . removeListener ( messageListener )
173147 if ( resp instanceof Error ) throw resp
174148 if ( resp . status === 403 ) {
175149 throw new Error ( 'CLOUDFLARE' )
0 commit comments