Initial working commit
This commit is contained in:
		
							parent
							
								
									a605a3f7be
								
							
						
					
					
						commit
						2821bf0b1b
					
				
							
								
								
									
										16
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								index.js
									
									
									
									
									
								
							| @ -18,7 +18,7 @@ client.addListener('message', async (from, to, message) => { | ||||
| }); | ||||
| 
 | ||||
| // function that calls the chatgpt streaming api (with server send events) and calls the callback function for each line
 | ||||
| function chatgpt(query, callback) { | ||||
| async function chatgpt(query, callback) { | ||||
|     const apiUrl = 'https://api.openai.com/v1/chat/completions'; | ||||
|      | ||||
|     const response = await axios.post(apiUrl, { | ||||
| @ -40,17 +40,19 @@ function chatgpt(query, callback) { | ||||
|         // parse if starts with data:
 | ||||
|         for(part of parts) { | ||||
|             if(part === 'data: [DONE]') { | ||||
|                 process.stdout.write('\n'); | ||||
| 		callback(line); | ||||
| 		line = ''; | ||||
|             } else if(part.startsWith('data: ')) { | ||||
|                 let jsonString = part.slice(part.indexOf('{'), part.lastIndexOf('}') + 1); | ||||
|                 try { | ||||
|                     let json = JSON.parse(jsonString); | ||||
|                     let chunk = json.choices[0].delta.content; | ||||
| 		    if(!chunk) { return; } | ||||
|                     //split the chunk into lines leaving the delimiter in the array
 | ||||
|                     const lines = str.split(/\r?\n/); // split by new lines
 | ||||
|                     const lines = chunk.split(/\r?\n/); // split by new lines
 | ||||
| 
 | ||||
|                     let hasStartNewline = str.startsWith("\n"); | ||||
|                     let hasEndNewline = str.endsWith("\n"); | ||||
|                     let hasStartNewline = chunk.startsWith("\n"); | ||||
|                     let hasEndNewline = chunk.endsWith("\n"); | ||||
| 
 | ||||
|                     if(hasStartNewline) { | ||||
|                         callback(line); | ||||
| @ -58,7 +60,7 @@ function chatgpt(query, callback) { | ||||
|                     } | ||||
|                      | ||||
|                     for (let i = 0; i < lines.length - 1; i++) { | ||||
|                         callback(lines[i]); | ||||
|                         callback(line+lines[i]); | ||||
|                         line = ''; | ||||
|                     } | ||||
| 
 | ||||
| @ -75,4 +77,4 @@ function chatgpt(query, callback) { | ||||
|             } | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user