diff --git a/pkg/pipeline/process/handlers/chat.py b/pkg/pipeline/process/handlers/chat.py index 33dedb04..58b7a830 100644 --- a/pkg/pipeline/process/handlers/chat.py +++ b/pkg/pipeline/process/handlers/chat.py @@ -39,7 +39,14 @@ class ChatMessageHandler(handler.MessageHandler): if event_ctx.is_prevented_default(): if event_ctx.event.reply is not None: - query.resp_message_chain = mirai.MessageChain(event_ctx.event.reply) + mc = mirai.MessageChain(event_ctx.event.reply) + + query.resp_messages.append( + llm_entities.Message( + role='plugin', + content=str(mc), + ) + ) yield entities.StageProcessResult( result_type=entities.ResultType.CONTINUE, diff --git a/pkg/pipeline/wrapper/wrapper.py b/pkg/pipeline/wrapper/wrapper.py index 0278b603..80277a0f 100644 --- a/pkg/pipeline/wrapper/wrapper.py +++ b/pkg/pipeline/wrapper/wrapper.py @@ -29,6 +29,13 @@ class ResponseWrapper(stage.PipelineStage): if query.resp_messages[-1].role == 'command': query.resp_message_chain = mirai.MessageChain("[bot] "+query.resp_messages[-1].content) + yield entities.StageProcessResult( + result_type=entities.ResultType.CONTINUE, + new_query=query + ) + elif query.resp_messages[-1].role == 'plugin': + query.resp_message_chain = mirai.MessageChain(query.resp_messages[-1].content) + yield entities.StageProcessResult( result_type=entities.ResultType.CONTINUE, new_query=query diff --git a/pkg/provider/entities.py b/pkg/provider/entities.py index 2a555311..0dffc636 100644 --- a/pkg/provider/entities.py +++ b/pkg/provider/entities.py @@ -22,7 +22,7 @@ class ToolCall(pydantic.BaseModel): class Message(pydantic.BaseModel): """消息""" - role: str # user, system, assistant, tool, command + role: str # user, system, assistant, tool, command, plugin name: typing.Optional[str] = None