戳一戳支持流式请求

This commit is contained in:
2025-04-04 15:54:27 +08:00
parent 3a1a0c39fd
commit 454dd16cbd
2 changed files with 16 additions and 11 deletions

View File

@@ -264,7 +264,7 @@ class MarshoHandler:
""" """
处理流式请求 处理流式请求
""" """
response: AsyncStream[ChatCompletionChunk] = await self.handle_single_chat( response = await self.handle_single_chat(
user_message=user_message, user_message=user_message,
model_name=model_name, model_name=model_name,
tools_list=None, # TODO:让流式调用支持工具调用 tools_list=None, # TODO:让流式调用支持工具调用
@@ -272,4 +272,8 @@ class MarshoHandler:
stream=True, stream=True,
) )
if isinstance(response, AsyncStream):
return await process_chat_stream(response) return await process_chat_stream(response)
else:
logger.error("Unexpected response type for stream request")
return None

View File

@@ -33,6 +33,7 @@ from .metadata import metadata
from .models import MarshoContext from .models import MarshoContext
from .plugin.func_call.caller import get_function_calls from .plugin.func_call.caller import get_function_calls
from .util import * from .util import *
from .utils.request import process_chat_stream
async def at_enable(): async def at_enable():
@@ -298,15 +299,15 @@ with contextlib.suppress(ImportError): # 优化先不做()
try: try:
if config.marshoai_poke_suffix != "": if config.marshoai_poke_suffix != "":
logger.info(f"收到戳一戳,用户昵称:{user_nickname}") logger.info(f"收到戳一戳,用户昵称:{user_nickname}")
if config.marshoai_stream:
handler = MarshoHandler(client, MarshoContext())
response = await handler.handle_stream_request(usermsg, model_name)
else:
response = await make_chat_openai( response = await make_chat_openai(
client=client, client=client,
model_name=model_name, model_name=model_name,
msg=usermsg, msg=usermsg,
stream=config.marshoai_stream,
) )
if isinstance(response, AsyncStream):
response = await process_chat_stream(response)
choice = response.choices[0] # type: ignore choice = response.choices[0] # type: ignore
if choice.finish_reason == CompletionsFinishReason.STOPPED: if choice.finish_reason == CompletionsFinishReason.STOPPED:
content = extract_content_and_think(choice.message)[0] content = extract_content_and_think(choice.message)[0]