fix chatbot resp message.

Signed-off-by: zhanluxianshen <zhanluxianshen@163.com>
pull/21009/head
zhanluxianshen 11 months ago
parent 21c2de2d7e
commit b940b0401c
No known key found for this signature in database
GPG Key ID: 0D2A455788E77ABC

@ -307,47 +307,48 @@ class EasyUIBasedGenerateTaskPipeline(BasedGenerateTaskPipeline):
yield response yield response
elif isinstance(event, QueueLLMChunkEvent | QueueAgentMessageEvent): elif isinstance(event, QueueLLMChunkEvent | QueueAgentMessageEvent):
chunk = event.chunk chunk = event.chunk
delta_text = chunk.delta.message.content delta_text = chunk.delta.message.content
if delta_text is None: if delta_text is None:
continue continue
if isinstance(chunk.delta.message.content, list): if isinstance(delta_text, list):
delta_text = "" delta_text_parts = []
for content in chunk.delta.message.content: for content in delta_text:
logger.debug(
"The content type %s in LLM chunk delta message content.: %r", type(content), content
)
if isinstance(content, TextPromptMessageContent): if isinstance(content, TextPromptMessageContent):
delta_text += content.data delta_text_parts.append(content.data)
elif isinstance(content, str): elif isinstance(content, str):
delta_text += content # failback to str delta_text_parts.append(content)
else: else:
logger.warning( logger.warning(
"Unsupported content type %s in LLM chunk delta message content.: %r", "Unsupported content type %s in LLM chunk delta message content: %r",
type(content), type(content),
content, content,
) )
continue continue
delta_text = "".join(delta_text_parts)
else:
delta_text = str(delta_text)
if not self._task_state.llm_result.prompt_messages: if not self._task_state.llm_result.prompt_messages:
self._task_state.llm_result.prompt_messages = chunk.prompt_messages self._task_state.llm_result.prompt_messages = chunk.prompt_messages
# handle output moderation chunk # handle output moderation chunk
should_direct_answer = self._handle_output_moderation_chunk(cast(str, delta_text)) should_direct_answer = self._handle_output_moderation_chunk(delta_text)
if should_direct_answer: if should_direct_answer:
continue continue
current_content = cast(str, self._task_state.llm_result.message.content) current_content = cast(str, self._task_state.llm_result.message.content)
current_content += cast(str, delta_text) current_content += delta_text
self._task_state.llm_result.message.content = current_content self._task_state.llm_result.message.content = current_content
if isinstance(event, QueueLLMChunkEvent): if isinstance(event, QueueLLMChunkEvent):
yield self._message_cycle_manager.message_to_stream_response( yield self._message_cycle_manager.message_to_stream_response(
answer=cast(str, delta_text), answer=delta_text,
message_id=self._message_id, message_id=self._message_id,
) )
else: else:
yield self._agent_message_to_stream_response( yield self._agent_message_to_stream_response(
answer=cast(str, delta_text), answer=delta_text,
message_id=self._message_id, message_id=self._message_id,
) )
elif isinstance(event, QueueMessageReplaceEvent): elif isinstance(event, QueueMessageReplaceEvent):

Loading…
Cancel
Save