Better error handling
This commit is contained in:
		
							parent
							
								
									7e8b46f042
								
							
						
					
					
						commit
						9682a1dcea
					
				| 
						 | 
					@ -46,7 +46,7 @@
 | 
				
			||||||
  import { openModal } from 'svelte-modals'
 | 
					  import { openModal } from 'svelte-modals'
 | 
				
			||||||
  import PromptInput from './PromptInput.svelte'
 | 
					  import PromptInput from './PromptInput.svelte'
 | 
				
			||||||
  import { ChatCompletionResponse } from './ChatCompletionResponse.svelte'
 | 
					  import { ChatCompletionResponse } from './ChatCompletionResponse.svelte'
 | 
				
			||||||
  import { fetchEventSource } from '@microsoft/fetch-event-source'
 | 
					  import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source'
 | 
				
			||||||
  import { getApiBase, getEndpointCompletions } from './ApiUtil.svelte'
 | 
					  import { getApiBase, getEndpointCompletions } from './ApiUtil.svelte'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export let params = { chatId: '' }
 | 
					  export let params = { chatId: '' }
 | 
				
			||||||
| 
						 | 
					@ -263,6 +263,7 @@
 | 
				
			||||||
          summarizeReq.push(summaryMessage)
 | 
					          summarizeReq.push(summaryMessage)
 | 
				
			||||||
          summaryPromptSize = countPromptTokens(summarizeReq, model)
 | 
					          summaryPromptSize = countPromptTokens(summarizeReq, model)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          // Create a message the summary will be loaded into
 | 
				
			||||||
          const summaryResponse:Message = {
 | 
					          const summaryResponse:Message = {
 | 
				
			||||||
            role: 'assistant',
 | 
					            role: 'assistant',
 | 
				
			||||||
            content: '',
 | 
					            content: '',
 | 
				
			||||||
| 
						 | 
					@ -272,7 +273,7 @@
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          summaryResponse.model = model
 | 
					          summaryResponse.model = model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          // Insert summary prompt
 | 
					          // Insert summary completion prompt
 | 
				
			||||||
          insertMessages(chatId, endPrompt, [summaryResponse])
 | 
					          insertMessages(chatId, endPrompt, [summaryResponse])
 | 
				
			||||||
          if (opts.streaming) setTimeout(() => scrollToMessage(summaryResponse.uuid, 150, true, true), 0)
 | 
					          if (opts.streaming) setTimeout(() => scrollToMessage(summaryResponse.uuid, 150, true, true), 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -374,6 +375,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const signal = controller.signal
 | 
					      const signal = controller.signal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      console.log('apikey', $apiKeyStorage)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const fetchOptions = {
 | 
					      const fetchOptions = {
 | 
				
			||||||
        method: 'POST',
 | 
					        method: 'POST',
 | 
				
			||||||
        headers: {
 | 
					        headers: {
 | 
				
			||||||
| 
						 | 
					@ -422,6 +425,21 @@
 | 
				
			||||||
          onerror (err) {
 | 
					          onerror (err) {
 | 
				
			||||||
            console.error(err)
 | 
					            console.error(err)
 | 
				
			||||||
            throw err
 | 
					            throw err
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          async onopen (response) {
 | 
				
			||||||
 | 
					            if (response.ok && response.headers.get('content-type') === EventStreamContentType) {
 | 
				
			||||||
 | 
					              // everything's good
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              // client-side errors are usually non-retriable:
 | 
				
			||||||
 | 
					              let errorResponse
 | 
				
			||||||
 | 
					              try {
 | 
				
			||||||
 | 
					                const errObj = await response.json()
 | 
				
			||||||
 | 
					                errorResponse = errObj?.error?.code || 'Unexpected Response'
 | 
				
			||||||
 | 
					              } catch (e) {
 | 
				
			||||||
 | 
					                errorResponse = 'Unknown Response'
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              throw new Error(`${response.status} - ${errorResponse}`)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }).catch(err => {
 | 
					        }).catch(err => {
 | 
				
			||||||
          chatResponse.updateFromError(err.message)
 | 
					          chatResponse.updateFromError(err.message)
 | 
				
			||||||
| 
						 | 
					@ -430,6 +448,16 @@
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        const response = await fetch(getApiBase() + getEndpointCompletions(), fetchOptions)
 | 
					        const response = await fetch(getApiBase() + getEndpointCompletions(), fetchOptions)
 | 
				
			||||||
        const json = await response.json()
 | 
					        const json = await response.json()
 | 
				
			||||||
 | 
					        if (!response.ok) {
 | 
				
			||||||
 | 
					          // client-side errors are usually non-retriable:
 | 
				
			||||||
 | 
					          let errorResponse
 | 
				
			||||||
 | 
					          try {
 | 
				
			||||||
 | 
					            errorResponse = json?.error?.code || 'Unexpected Response'
 | 
				
			||||||
 | 
					          } catch (e) {
 | 
				
			||||||
 | 
					            errorResponse = 'Unknown Response'
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          throw new Error(`${response.status} - ${errorResponse}`)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
        // Remove updating indicator
 | 
					        // Remove updating indicator
 | 
				
			||||||
        updating = false
 | 
					        updating = false
 | 
				
			||||||
| 
						 | 
					@ -438,7 +466,7 @@
 | 
				
			||||||
        scrollToBottom()
 | 
					        scrollToBottom()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
      console.error(e)
 | 
					      // console.error(e)
 | 
				
			||||||
      updating = false
 | 
					      updating = false
 | 
				
			||||||
      updatingMessage = ''
 | 
					      updatingMessage = ''
 | 
				
			||||||
      chatResponse.updateFromError(e.message)
 | 
					      chatResponse.updateFromError(e.message)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue