|
|
|
@ -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):
|
|
|
|
|