-
Notifications
You must be signed in to change notification settings - Fork 118
fix: close <think> block only when reasoning_content is None
#278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Summary of ChangesHello @utsumi-fj, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request resolves a bug where the Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request correctly addresses the bug where an empty reasoning_content string would cause the <think> block to close prematurely. The logic change to explicitly check for None is the right approach, and the removal of the redundant conditional is a good simplification. The accompanying test case has been updated to cover this specific scenario, which is excellent. However, I've identified an issue in the test's assertions that was present before this change and has been carried over. My review includes a suggestion to fix the test to make it more robust and accurate.
| assert "<think>" in full_output | ||
| assert "Thinking started. Still thinking." in full_output | ||
| assert "Thinking started. Still thinking #1. Still thinking #2." in full_output | ||
| assert "</think>" in full_output, "Should verify <think> tag is closed properly" | ||
|
|
||
| # Verify the position of the closing tag: should be after the thinking content | ||
| expected_part = "Thinking started. Still thinking.\n</think>" | ||
| expected_part = "Thinking started. Still thinking #1. Still thinking #2.\n</think>" | ||
| assert expected_part in full_output |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The assertions to verify the full_output are not entirely correct. The final assertion assert expected_part in full_output will fail because full_output will be "<think>\nThinking started. Still thinking #1. Still thinking #2.\n</think>", and expected_part is "Thinking started. Still thinking #1. Still thinking #2.\n</think>", which is not a substring of full_output due to the leading "<think>\n".
This issue appears to have existed before this pull request. A more robust and correct way to verify the output is to check for equality against the expected full string. This would make the test stronger and simpler, and it would correctly validate the behavior you're testing.
I suggest replacing all the individual assertions with a single self.assertEqual.
| assert "<think>" in full_output | |
| assert "Thinking started. Still thinking." in full_output | |
| assert "Thinking started. Still thinking #1. Still thinking #2." in full_output | |
| assert "</think>" in full_output, "Should verify <think> tag is closed properly" | |
| # Verify the position of the closing tag: should be after the thinking content | |
| expected_part = "Thinking started. Still thinking.\n</think>" | |
| expected_part = "Thinking started. Still thinking #1. Still thinking #2.\n</think>" | |
| assert expected_part in full_output | |
| expected_output = "<think>\nThinking started. Still thinking #1. Still thinking #2.\n</think>" | |
| self.assertEqual(full_output, expected_output) |
Signed-off-by: Yuichiro Utsumi <utsumi.yuichiro@fujitsu.com>
4d06545 to
e7d9e0a
Compare
Fixes #277
Compatibility Check
README.mdREADME.mdREADME.mdREADME.mdCompatibility impact
Since this is a bug fix, there is no compatibility impact.
Available Checks
Before
After