forked from open-webui/open-webui
		
	feat: include only last images
This commit is contained in:
		
							parent
							
								
									f70e6caf0e
								
							
						
					
					
						commit
						6c7c35ad12
					
				
					 2 changed files with 77 additions and 38 deletions
				
			
		|  | @ -316,27 +316,45 @@ | |||
| 		// Scroll down | ||||
| 		window.scrollTo({ top: document.body.scrollHeight }); | ||||
| 
 | ||||
| 		const messagesBody = [ | ||||
| 			$settings.system | ||||
| 				? { | ||||
| 						role: 'system', | ||||
| 						content: $settings.system | ||||
| 				  } | ||||
| 				: undefined, | ||||
| 			...messages | ||||
| 		] | ||||
| 			.filter((message) => message) | ||||
| 			.map((message, idx, arr) => ({ | ||||
| 				role: message.role, | ||||
| 				content: arr.length - 2 !== idx ? message.content : message?.raContent ?? message.content, | ||||
| 				...(message.files && { | ||||
| 					images: message.files | ||||
| 						.filter((file) => file.type === 'image') | ||||
| 						.map((file) => file.url.slice(file.url.indexOf(',') + 1)) | ||||
| 				}) | ||||
| 			})); | ||||
| 
 | ||||
| 		let lastImageIndex = -1; | ||||
| 
 | ||||
| 		// Find the index of the last object with images | ||||
| 		messagesBody.forEach((item, index) => { | ||||
| 			if (item.images) { | ||||
| 				lastImageIndex = index; | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		// Remove images from all but the last one | ||||
| 		messagesBody.forEach((item, index) => { | ||||
| 			if (index !== lastImageIndex) { | ||||
| 				delete item.images; | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		const [res, controller] = await generateChatCompletion(localStorage.token, { | ||||
| 			model: model, | ||||
| 			messages: [ | ||||
| 				$settings.system | ||||
| 					? { | ||||
| 							role: 'system', | ||||
| 							content: $settings.system | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				...messages | ||||
| 			] | ||||
| 				.filter((message) => message) | ||||
| 				.map((message, idx, arr) => ({ | ||||
| 					role: message.role, | ||||
| 					content: arr.length - 2 !== idx ? message.content : message?.raContent ?? message.content, | ||||
| 					...(message.files && { | ||||
| 						images: message.files | ||||
| 							.filter((file) => file.type === 'image') | ||||
| 							.map((file) => file.url.slice(file.url.indexOf(',') + 1)) | ||||
| 					}) | ||||
| 				})), | ||||
| 			messages: messagesBody, | ||||
| 			options: { | ||||
| 				...($settings.options ?? {}) | ||||
| 			}, | ||||
|  |  | |||
|  | @ -330,27 +330,45 @@ | |||
| 		// Scroll down | ||||
| 		window.scrollTo({ top: document.body.scrollHeight }); | ||||
| 
 | ||||
| 		const messagesBody = [ | ||||
| 			$settings.system | ||||
| 				? { | ||||
| 						role: 'system', | ||||
| 						content: $settings.system | ||||
| 				  } | ||||
| 				: undefined, | ||||
| 			...messages | ||||
| 		] | ||||
| 			.filter((message) => message) | ||||
| 			.map((message, idx, arr) => ({ | ||||
| 				role: message.role, | ||||
| 				content: arr.length - 2 !== idx ? message.content : message?.raContent ?? message.content, | ||||
| 				...(message.files && { | ||||
| 					images: message.files | ||||
| 						.filter((file) => file.type === 'image') | ||||
| 						.map((file) => file.url.slice(file.url.indexOf(',') + 1)) | ||||
| 				}) | ||||
| 			})); | ||||
| 
 | ||||
| 		let lastImageIndex = -1; | ||||
| 
 | ||||
| 		// Find the index of the last object with images | ||||
| 		messagesBody.forEach((item, index) => { | ||||
| 			if (item.images) { | ||||
| 				lastImageIndex = index; | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		// Remove images from all but the last one | ||||
| 		messagesBody.forEach((item, index) => { | ||||
| 			if (index !== lastImageIndex) { | ||||
| 				delete item.images; | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		const [res, controller] = await generateChatCompletion(localStorage.token, { | ||||
| 			model: model, | ||||
| 			messages: [ | ||||
| 				$settings.system | ||||
| 					? { | ||||
| 							role: 'system', | ||||
| 							content: $settings.system | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				...messages | ||||
| 			] | ||||
| 				.filter((message) => message) | ||||
| 				.map((message, idx, arr) => ({ | ||||
| 					role: message.role, | ||||
| 					content: arr.length - 2 !== idx ? message.content : message?.raContent ?? message.content, | ||||
| 					...(message.files && { | ||||
| 						images: message.files | ||||
| 							.filter((file) => file.type === 'image') | ||||
| 							.map((file) => file.url.slice(file.url.indexOf(',') + 1)) | ||||
| 					}) | ||||
| 				})), | ||||
| 			messages: messagesBody, | ||||
| 			options: { | ||||
| 				...($settings.options ?? {}) | ||||
| 			}, | ||||
|  | @ -358,6 +376,8 @@ | |||
| 		}); | ||||
| 
 | ||||
| 		if (res && res.ok) { | ||||
| 			console.log('controller', controller); | ||||
| 
 | ||||
| 			const reader = res.body | ||||
| 				.pipeThrough(new TextDecoderStream()) | ||||
| 				.pipeThrough(splitStream('\n')) | ||||
|  | @ -375,6 +395,7 @@ | |||
| 					} | ||||
| 
 | ||||
| 					currentRequestId = null; | ||||
| 
 | ||||
| 					break; | ||||
| 				} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek