mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	server : allow continue edit on completion mode (#3950)
* server : allow continue edit on completion mode * server : handle abort case in runCompletion * server : style improvement
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -160,6 +160,11 @@ | ||||
|       height: 10em; | ||||
|     } | ||||
|  | ||||
|     [contenteditable] { | ||||
|       display: inline-block; | ||||
|       white-space: pre-wrap; | ||||
|       outline: 0px solid transparent; | ||||
|     } | ||||
|  | ||||
|     @keyframes loading-bg-wipe { | ||||
|       0% { | ||||
| @@ -462,18 +467,23 @@ | ||||
|       }, "{{char}}"); | ||||
|     } | ||||
|  | ||||
|     const runCompletion = async () => { | ||||
|     const runCompletion = () => { | ||||
|       if (controller.value) { | ||||
|         console.log('already running...'); | ||||
|         return; | ||||
|       } | ||||
|       const { prompt } = session.value; | ||||
|       transcriptUpdate([...session.value.transcript, ["", prompt]]); | ||||
|       await runLlama(prompt, { | ||||
|       runLlama(prompt, { | ||||
|         ...params.value, | ||||
|         slot_id: slot_id, | ||||
|         stop: [], | ||||
|       }, ""); | ||||
|       }, "").finally(() => { | ||||
|         session.value.prompt = session.value.transcript.map(([_, data]) => | ||||
|           Array.isArray(data) ? data.map(msg => msg.content).join('') : data | ||||
|         ).join(''); | ||||
|         session.value.transcript = []; | ||||
|       }) | ||||
|     } | ||||
|  | ||||
|     const stop = (e) => { | ||||
| @@ -573,6 +583,7 @@ | ||||
|         } | ||||
|       }, [messages]) | ||||
|  | ||||
|       const isCompletionMode = session.value.type === 'completion' | ||||
|       const chatLine = ([user, data], index) => { | ||||
|         let message | ||||
|         const isArrayMessage = Array.isArray(data) | ||||
| @@ -582,20 +593,31 @@ | ||||
|           const text = isArrayMessage ? | ||||
|             data.map(msg => msg.content).join('').replace(/^\s+/, '') : | ||||
|             data; | ||||
|           message = html`<${Markdownish} text=${template(text)} />` | ||||
|           message = isCompletionMode ? | ||||
|             text : | ||||
|             html`<${Markdownish} text=${template(text)} />` | ||||
|         } | ||||
|         if (user) { | ||||
|           return html`<p key=${index}><strong>${template(user)}:</strong> ${message}</p>` | ||||
|         } else { | ||||
|           return html`<p key=${index}>${message}</p>` | ||||
|           return isCompletionMode ? | ||||
|             html`<span key=${index}>${message}</span>` : | ||||
|             html`<p key=${index}>${message}</p>` | ||||
|         } | ||||
|       }; | ||||
|  | ||||
|       const handleCompletionEdit = (e) => { | ||||
|         session.value.prompt = e.target.innerText; | ||||
|         session.value.transcript = []; | ||||
|       } | ||||
|  | ||||
|       return html` | ||||
|         <section id="chat" ref=${container}> | ||||
|         <div id="chat" ref=${container} key=${messages.length}> | ||||
|           <img style="width: 60%;${!session.value.image_selected ? `display: none;` : ``}" src="${session.value.image_selected}"/> | ||||
|           ${messages.flatMap(chatLine)} | ||||
|         </section>`; | ||||
|           <span contenteditable=${isCompletionMode} ref=${container} oninput=${handleCompletionEdit}> | ||||
|             ${messages.flatMap(chatLine)} | ||||
|           </span> | ||||
|         </div>`; | ||||
|     }; | ||||
|  | ||||
|     const ConfigForm = (props) => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jhen-Jie Hong
					Jhen-Jie Hong