|  | @@ -1,14 +1,17 @@
 | 
											
												
													
														|  | 
 |  | +import logging
 | 
											
												
													
														|  |  from typing import Optional, List, Union, Tuple
 |  |  from typing import Optional, List, Union, Tuple
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  from langchain.callbacks import CallbackManager
 |  |  from langchain.callbacks import CallbackManager
 | 
											
												
													
														|  |  from langchain.chat_models.base import BaseChatModel
 |  |  from langchain.chat_models.base import BaseChatModel
 | 
											
												
													
														|  |  from langchain.llms import BaseLLM
 |  |  from langchain.llms import BaseLLM
 | 
											
												
													
														|  |  from langchain.schema import BaseMessage, BaseLanguageModel, HumanMessage
 |  |  from langchain.schema import BaseMessage, BaseLanguageModel, HumanMessage
 | 
											
												
													
														|  | 
 |  | +from requests.exceptions import ChunkedEncodingError
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  from core.constant import llm_constant
 |  |  from core.constant import llm_constant
 | 
											
												
													
														|  |  from core.callback_handler.llm_callback_handler import LLMCallbackHandler
 |  |  from core.callback_handler.llm_callback_handler import LLMCallbackHandler
 | 
											
												
													
														|  |  from core.callback_handler.std_out_callback_handler import DifyStreamingStdOutCallbackHandler, \
 |  |  from core.callback_handler.std_out_callback_handler import DifyStreamingStdOutCallbackHandler, \
 | 
											
												
													
														|  |      DifyStdOutCallbackHandler
 |  |      DifyStdOutCallbackHandler
 | 
											
												
													
														|  | -from core.conversation_message_task import ConversationMessageTask, ConversationTaskStoppedException
 |  | 
 | 
											
												
													
														|  | 
 |  | +from core.conversation_message_task import ConversationMessageTask, ConversationTaskStoppedException, PubHandler
 | 
											
												
													
														|  |  from core.llm.error import LLMBadRequestError
 |  |  from core.llm.error import LLMBadRequestError
 | 
											
												
													
														|  |  from core.llm.llm_builder import LLMBuilder
 |  |  from core.llm.llm_builder import LLMBuilder
 | 
											
												
													
														|  |  from core.chain.main_chain_builder import MainChainBuilder
 |  |  from core.chain.main_chain_builder import MainChainBuilder
 | 
											
										
											
												
													
														|  | @@ -84,6 +87,11 @@ class Completion:
 | 
											
												
													
														|  |              )
 |  |              )
 | 
											
												
													
														|  |          except ConversationTaskStoppedException:
 |  |          except ConversationTaskStoppedException:
 | 
											
												
													
														|  |              return
 |  |              return
 | 
											
												
													
														|  | 
 |  | +        except ChunkedEncodingError as e:
 | 
											
												
													
														|  | 
 |  | +            # Interrupt by LLM (like OpenAI), handle it.
 | 
											
												
													
														|  | 
 |  | +            logging.warning(f'ChunkedEncodingError: {e}')
 | 
											
												
													
														|  | 
 |  | +            conversation_message_task.end()
 | 
											
												
													
														|  | 
 |  | +            return
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @classmethod
 |  |      @classmethod
 | 
											
												
													
														|  |      def run_final_llm(cls, tenant_id: str, mode: str, app_model_config: AppModelConfig, query: str, inputs: dict,
 |  |      def run_final_llm(cls, tenant_id: str, mode: str, app_model_config: AppModelConfig, query: str, inputs: dict,
 |