mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-12-24 13:28:13 +08:00
[BugFix] Fix ernie_vl_reasoning_parsers.py 'end_token' to 'think_end_token' (#4805)
* fix ernie_vl_reasoning_parsers.py 'end_token' to 'think_end_token' * add unit tests
This commit is contained in:
@@ -70,9 +70,9 @@ class ErnieVLReasoningParser(ReasoningParser):
|
||||
if len(delta_token_ids) == 1 and delta_token_ids[0] == self.think_end_token_id:
|
||||
return None
|
||||
if self.think_end_token_id in delta_token_ids:
|
||||
end_index = delta_text.find(self.end_token)
|
||||
end_index = delta_text.find(self.think_end_token)
|
||||
reasoning_content = delta_text[:end_index]
|
||||
content = delta_text[end_index + len(self.end_token) :]
|
||||
content = delta_text[end_index + len(self.think_end_token) :]
|
||||
return DeltaMessage(reasoning_content=reasoning_content, content=content)
|
||||
elif self.think_end_token_id in previous_token_ids:
|
||||
return DeltaMessage(content=delta_text)
|
||||
|
||||
@@ -21,6 +21,7 @@ from fastdeploy.reasoning import ReasoningParser, ReasoningParserManager
|
||||
from fastdeploy.reasoning.ernie_45_vl_thinking_reasoning_parser import (
|
||||
Ernie45VLThinkingReasoningParser,
|
||||
)
|
||||
from fastdeploy.reasoning.ernie_vl_reasoning_parsers import ErnieVLReasoningParser
|
||||
from fastdeploy.reasoning.ernie_x1_reasoning_parsers import ErnieX1ReasoningParser
|
||||
|
||||
|
||||
@@ -425,5 +426,60 @@ class TestErnie45VLThinkingReasoningParser(unittest.TestCase):
|
||||
self.assertEqual(content, "\n\n actual response")
|
||||
|
||||
|
||||
class TestErnieVLReasoningParser(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tokenizer = DummyTokenizer()
|
||||
self.parser = ErnieVLReasoningParser(tokenizer=self.tokenizer)
|
||||
self.test_request = ChatCompletionRequest(
|
||||
model="ernie-test", messages=[{"role": "user", "content": "test prompt"}]
|
||||
)
|
||||
|
||||
def test_extract_reasoning_content_stream(self):
|
||||
result = self.parser.extract_reasoning_content_streaming(
|
||||
previous_text="abc",
|
||||
current_text="abc</think>xyz",
|
||||
delta_text="</think>xyz",
|
||||
previous_token_ids=[200, 201, 202],
|
||||
current_token_ids=[200, 201, 202, 100, 110, 120, 130],
|
||||
delta_token_ids=[100, 110, 120, 130],
|
||||
)
|
||||
self.assertIsInstance(result, DeltaMessage)
|
||||
self.assertEqual(result.reasoning_content, "")
|
||||
self.assertEqual(result.content, "xyz")
|
||||
|
||||
def test_extract_reasoning_content_stream_think_in_previous(self):
|
||||
result = self.parser.extract_reasoning_content_streaming(
|
||||
previous_text="abc</think>",
|
||||
current_text="abc</think>xyz",
|
||||
delta_text="xyz",
|
||||
previous_token_ids=[200, 201, 202, 100],
|
||||
current_token_ids=[200, 201, 202, 100, 110, 120, 130],
|
||||
delta_token_ids=[110, 120, 130],
|
||||
)
|
||||
self.assertIsInstance(result, DeltaMessage)
|
||||
self.assertIsNone(result.reasoning_content)
|
||||
self.assertEqual(result.content, "xyz")
|
||||
|
||||
def test_extract_reasoning_content_stream_no_think_token(self):
|
||||
result = self.parser.extract_reasoning_content_streaming(
|
||||
previous_text="abc",
|
||||
current_text="abcxyz",
|
||||
delta_text="xyz",
|
||||
previous_token_ids=[200, 201, 202],
|
||||
current_token_ids=[200, 201, 202, 110, 120, 130],
|
||||
delta_token_ids=[110, 120, 130],
|
||||
)
|
||||
self.assertIsInstance(result, DeltaMessage)
|
||||
self.assertIsNone(result.content)
|
||||
self.assertEqual(result.reasoning_content, "xyz")
|
||||
|
||||
def test_extract_reasoning_content(self):
|
||||
reasoning, content = self.parser.extract_reasoning_content(
|
||||
model_output="reasoning</think>\nactual response", request=self.test_request
|
||||
)
|
||||
self.assertEqual(reasoning, "reasoning")
|
||||
self.assertEqual(content, "\nactual response")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user