[Optimization]Unified data processing for online and offline (#6891)

* remove process_request

* fix chat

* fix unit test

* remove process response

* fix unit test

* fix offline decode

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix sampling_params

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
luukunn
2026-03-19 21:56:09 +08:00
committed by GitHub
parent c3d8db85c4
commit f4a79d4c00
19 changed files with 160 additions and 619 deletions
+20 -40
View File
@@ -261,38 +261,25 @@ class TestErnie4_5Processor(unittest.TestCase):
self.assertEqual(len(stop_seqs2), 2)
self.assertEqual(len(stop_lens2), 2)
def test_process_request_chat_template_kwargs(self):
"""Test chat_template_kwargs application inside process_request."""
def test_process_request_dict_with_chat_template_kwargs(self):
"""Test chat_template_kwargs application inside process_request_dict."""
proc = self._make_processor()
class ReqObj(dict):
"""Mock request object supporting attributes, set(), and to_dict()."""
request = {
"messages": [{"role": "user", "content": "hello"}],
"temperature": 0.5,
"top_p": 0.5,
"chat_template_kwargs": {"extra": "VALUE"},
}
def set(self, k, v):
self[k] = v
processed = proc.process_request_dict(request, max_model_len=20)
def __getattr__(self, item):
return self.get(item, None)
def to_dict(self):
return dict(self)
request = ReqObj(
{
"messages": [{"role": "user", "content": "hello"}],
"temperature": 0.5,
"top_p": 0.5,
}
)
processed = proc.process_request(request, max_model_len=20, chat_template_kwargs={"extra": "VALUE"})
self.assertEqual(processed.eos_token_ids, [proc.tokenizer.eos_token_id])
self.assertEqual(processed["eos_token_ids"], [proc.tokenizer.eos_token_id])
expected_ids = proc.tokenizer.convert_tokens_to_ids(proc.tokenizer.tokenize("hello"))
self.assertIsNotNone(processed.prompt_token_ids)
self.assertEqual(processed.prompt_token_ids, expected_ids)
self.assertIsNotNone(processed["prompt_token_ids"])
self.assertEqual(processed["prompt_token_ids"], expected_ids)
self.assertIn("max_tokens", processed)
self.assertEqual(processed["max_tokens"], max(1, 20 - len(expected_ids)))
@@ -322,21 +309,14 @@ class TestErnie4_5Processor(unittest.TestCase):
def test_process_response_with_tool_parser(self):
"""Verify tool_call extraction in process_response."""
proc = self._make_processor(tool=True)
class RespObj:
"""Mock response carrying token_ids and index for testing."""
def __init__(self):
self.request_id = "reqx"
self.outputs = MagicMock()
self.outputs.token_ids = [9, proc.tokenizer.eos_token_id]
self.outputs.index = 0
resp = RespObj()
result = proc.process_response(resp)
self.assertTrue(hasattr(result.outputs, "tool_calls"))
self.assertEqual(result.outputs.tool_calls[0]["name"], "fake_tool")
resp = {
"request_id": "reqx",
"outputs": {"token_ids": [9, proc.tokenizer.eos_token_id], "index": 0},
"finished": True,
}
result = proc.process_response_dict(resp, False)
assert "tool_calls" in result["outputs"]
self.assertEqual(result["outputs"]["tool_calls"][0]["name"], "fake_tool")
def test_process_response_dict_normal_with_tool(self):
"""Verify tool_call extraction in normal (non-streaming) response mode."""