diff --git a/pkg/pipeline/respback/respback.py b/pkg/pipeline/respback/respback.py index d83302ed..ece4e392 100644 --- a/pkg/pipeline/respback/respback.py +++ b/pkg/pipeline/respback/respback.py @@ -7,6 +7,9 @@ import asyncio from ...platform.types import events as platform_events from ...platform.types import message as platform_message +from ...provider import entities as llm_entities + + from .. import stage, entities from ...core import entities as core_entities @@ -37,9 +40,9 @@ class SendResponseBackStage(stage.PipelineStage): quote_origin = query.pipeline_config['output']['misc']['quote-origin'] - # has_chunks = any(isinstance(msg, llm_entities.MessageChunk) for msg in query.resp_messages) + has_chunks = any(isinstance(msg, llm_entities.MessageChunk) for msg in query.resp_messages) # TODO 命令与流式的兼容性问题 - if await query.adapter.is_stream_output_supported(): + if await query.adapter.is_stream_output_supported() and has_chunks: is_final = [msg.is_final for msg in query.resp_messages][0] await query.adapter.reply_message_chunk( message_source=query.message_event, diff --git a/pkg/platform/sources/webchat.py b/pkg/platform/sources/webchat.py index 2c39afbb..dfe8fc30 100644 --- a/pkg/platform/sources/webchat.py +++ b/pkg/platform/sources/webchat.py @@ -109,9 +109,9 @@ class WebChatAdapter(msadapter.MessagePlatformAdapter): # notify waiter if isinstance(message_source, platform_events.FriendMessage): - self.webchat_person_session.resp_queues[message_source.message_chain.message_id].put(message_data) + await self.webchat_person_session.resp_queues[message_source.message_chain.message_id].put(message_data) elif isinstance(message_source, platform_events.GroupMessage): - self.webchat_group_session.resp_queues[message_source.message_chain.message_id].put(message_data) + await self.webchat_group_session.resp_queues[message_source.message_chain.message_id].put(message_data) return message_data.model_dump() @@ -264,24 +264,22 @@ class WebChatAdapter(msadapter.MessagePlatformAdapter): # waiter = asyncio.Future[WebChatMessage]() # use_session.resp_waiters[message_id] = waiter # # waiter.add_done_callback(lambda future: use_session.resp_waiters.pop(message_id)) - + # # resp_message = await waiter - + # # resp_message.id = len(use_session.get_message_list(pipeline_uuid)) + 1 - + # # use_session.get_message_list(pipeline_uuid).append(resp_message) - + # # yield resp_message.model_dump() + msg_id = len(use_session.get_message_list(pipeline_uuid)) + 1 + queue = use_session.resp_queues[message_id] - while True: - resp_message = await queue.get() - resp_message.id = msg_id - if resp_message.is_final: - resp_message.id = msg_id - use_session.get_message_list(pipeline_uuid).append(resp_message) - yield resp_message.model_dump() - break - yield resp_message.model_dump() + resp_message = await queue.get() + resp_message.id = msg_id + resp_message.is_final = True + + yield resp_message.model_dump() def get_webchat_messages(self, pipeline_uuid: str, session_type: str) -> list[dict]: """获取调试消息历史""" diff --git a/pkg/provider/modelmgr/requesters/modelscopechatcmpl.py b/pkg/provider/modelmgr/requesters/modelscopechatcmpl.py index 3a3bb5b0..7ef3ab58 100644 --- a/pkg/provider/modelmgr/requesters/modelscopechatcmpl.py +++ b/pkg/provider/modelmgr/requesters/modelscopechatcmpl.py @@ -36,7 +36,7 @@ class ModelScopeChatCompletions(requester.ProviderAPIRequester): self, args: dict, extra_body: dict = {}, - remove_think:bool = False, + remove_think: bool = False, ) -> chat_completion.ChatCompletion: args['stream'] = True @@ -291,7 +291,6 @@ class ModelScopeChatCompletions(requester.ProviderAPIRequester): # 处理工具调用增量 if delta.get('tool_calls'): - print(delta.get('tool_calls')) for tool_call in delta['tool_calls']: if tool_call['id'] != '': tool_id = tool_call['id'] diff --git a/pkg/provider/runners/localagent.py b/pkg/provider/runners/localagent.py index 49e3d46d..8466a9c4 100644 --- a/pkg/provider/runners/localagent.py +++ b/pkg/provider/runners/localagent.py @@ -226,7 +226,7 @@ class LocalAgentRunner(runner.RequestRunner): # 第一次请求工具调用时的内容 if msg_idx == 1: - accumulated_content =first_content if first_content is not None else accumulated_content + accumulated_content = first_content if first_content is not None else accumulated_content # 累积内容 if msg.content: