mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-09-26 20:41:53 +08:00

Some checks failed
CE Compile Job / ce_job_pre_check (push) Has been cancelled
CE Compile Job / print_ce_job_pre_check_outputs (push) Has been cancelled
CE Compile Job / FD-Clone-Linux (push) Has been cancelled
CE Compile Job / Show Code Archive Output (push) Has been cancelled
CE Compile Job / BUILD_SM8090 (push) Has been cancelled
CE Compile Job / BUILD_SM8689 (push) Has been cancelled
CE Compile Job / CE_UPLOAD (push) Has been cancelled
* [fix]Modify follow-up push parameters and Modify the verification method for thinking length (#4086) * 续推参数 generated_token_ids 修改成 completion_token_ids;修改思考长度校验方式 * 续推参数 generated_token_ids 修改成 completion_token_ids;修改思考长度校验方式 * 续推参数 generated_token_ids 修改成 completion_token_ids;修改思考长度校验方式 * 续推参数 generated_token_ids 修改成 completion_token_ids;修改思考长度校验方式 * add completion_token_ids * add logger * fix reasoning_max_tokens ParameterError * add unittest * add unittest * add unittest * add unittest * add unittest * add unit test * fix * [fix]update apply_chat_template (#4137) * update apply_chat_template * fix unittest * fix unittest * fix * fix * fix unit test * fix * fix unit test * add unit test
80 lines
3.1 KiB
Python
80 lines
3.1 KiB
Python
import unittest
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from fastdeploy.input.ernie4_5_processor import Ernie4_5Processor
|
|
|
|
|
|
class TestErnie4_5ProcessorProcessResponseDictStreaming(unittest.TestCase):
|
|
def setUp(self):
|
|
# 创建 Ernie4_5Processor 实例的模拟对象
|
|
with patch.object(Ernie4_5Processor, "__init__", return_value=None) as mock_init:
|
|
self.processor = Ernie4_5Processor("model_path")
|
|
mock_init.side_effect = lambda *args, **kwargs: print(f"__init__ called with {args}, {kwargs}")
|
|
|
|
# 设置必要的属性
|
|
self.processor.tokenizer = MagicMock()
|
|
self.processor.tokenizer.eos_token_id = 1
|
|
self.processor.decode_status = {}
|
|
self.processor.reasoning_end_dict = {}
|
|
self.processor.tool_parser_dict = {}
|
|
self.processor.generation_config = MagicMock()
|
|
self.processor.eos_token_ids = [1]
|
|
|
|
# 模拟 ids2tokens 方法
|
|
def mock_ids2tokens(token_ids, task_id):
|
|
return "delta_text", [2, 3], "previous_texts"
|
|
|
|
self.processor.ids2tokens = mock_ids2tokens
|
|
|
|
def mock_messages2ids(request, **kwargs):
|
|
if "chat_template" in kwargs:
|
|
return [1]
|
|
else:
|
|
return [0]
|
|
|
|
def mock_apply_default_parameters(request):
|
|
return request
|
|
|
|
self.processor.messages2ids = mock_messages2ids
|
|
self.processor._apply_default_parameters = mock_apply_default_parameters
|
|
|
|
# 模拟推理解析器
|
|
self.mock_reasoning_parser = MagicMock()
|
|
self.mock_reasoning_parser.__class__.__name__ = "ErnieX1ReasoningParser"
|
|
self.mock_reasoning_parser.extract_reasoning_content_streaming.return_value = ("reasoning", "text")
|
|
self.processor.reasoning_parser = self.mock_reasoning_parser
|
|
|
|
# 模拟工具解析器
|
|
self.mock_tool_parser = MagicMock()
|
|
self.mock_tool_parser.extract_tool_calls_streaming.return_value = None
|
|
self.mock_tool_parser_obj = MagicMock()
|
|
self.mock_tool_parser_obj.return_value = self.mock_tool_parser
|
|
self.processor.tool_parser_obj = self.mock_tool_parser_obj
|
|
|
|
def test_process_response_dict_streaming_normal_case(self):
|
|
"""测试正常情况下的流式响应处理"""
|
|
# 准备输入
|
|
response_dict = {"finished": False, "request_id": "req1", "outputs": {"token_ids": [4, 5]}}
|
|
kwargs = {"enable_thinking": True}
|
|
|
|
# 调用方法
|
|
result = self.processor.process_response_dict_streaming(response_dict, **kwargs)
|
|
|
|
# 验证结果
|
|
self.assertEqual(result["outputs"]["raw_prediction"], "delta_text")
|
|
|
|
def test_process_request_dict(self):
|
|
request_dict = {
|
|
"messages": [{"role": "user", "content": "Hello!"}],
|
|
"chat_template_kwargs": {"chat_template": "Hello!"},
|
|
"eos_token_ids": [1],
|
|
"temperature": 1,
|
|
"top_p": 1,
|
|
}
|
|
result = self.processor.process_request_dict(request_dict, 100)
|
|
self.assertEqual(result["prompt_token_ids"], [1])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|