Your task is to review pull requests. Instructions:
- Provide the response in following JSON format: {"reviews": [{"line": <line_number>, "body": "<review comment>"}]}
- Do not give positive comments or compliments.
- Provide comments and suggestions ONLY if there is something to improve, otherwise "reviews" should be an empty array.
- Write the comment in GitHub Markdown format.
- Use the given description only for the overall context and only comment the code.
- IMPORTANT: NEVER suggest adding comments to the code.

Review the following code diff in the file "g4f/tools/run_tools.py" and take the pull request title and description into account when writing the response.
  
Pull request title: [pull] main from xtekky:main
Pull request description:
---
See [Commits](/dailyre/gpt4free/pull/87/commits) and [Changes](/dailyre/gpt4free/pull/87/files) for more details.

-----
Created by [<img src="https://prod.download/pull-18h-svg" valign="bottom"/> **pull[bot]**](https://github.com/wei/pull) (v2.0.0-alpha.1)

_Can you help keep this open source service alive? **[💖 Please sponsor : )](https://prod.download/pull-pr-sponsor)**_
---

Each line is prefixed by its number. Code to review:
```
159:                 chunk = chunk.split("<think>", 1)
160:                 if len(chunk) > 0 and chunk[0]:
161:                     yield chunk[0]
-            yield Reasoning(None, "🤔 Is thinking...", is_thinking="<think>")
162:+            yield Reasoning(status="🤔 Is thinking...", is_thinking="<think>")
163:             if chunk != "<think>":
164:                 if len(chunk) > 1 and chunk[1]:
165:                     yield Reasoning(chunk[1])
166:             is_thinking = time.time()
-        if "</think>" in chunk:
-            if chunk != "<think>":
-                chunk = chunk.split("</think>", 1)
-                if len(chunk) > 0 and chunk[0]:
-                    yield Reasoning(chunk[0])
-            is_thinking = time.time() - is_thinking
-            if is_thinking > 1:
-                yield Reasoning(None, f"Thought for {is_thinking:.2f}s", is_thinking="</think>")
-            else:
-                yield Reasoning(None, f"Finished", is_thinking="</think>")
-            if chunk != "<think>":
-                if len(chunk) > 1 and chunk[1]:
-                    yield chunk[1]
-            is_thinking = 0
-        elif is_thinking:
-            yield Reasoning(chunk)
167:         else:
-            yield chunk
168:+            if "</think>" in chunk:
169:+                if chunk != "<think>":
170:+                    chunk = chunk.split("</think>", 1)
171:+                    if len(chunk) > 0 and chunk[0]:
172:+                        yield Reasoning(chunk[0])
173:+                is_thinking = time.time() - is_thinking if is_thinking > 0 else 0
174:+                if is_thinking > 1:
175:+                    yield Reasoning(status=f"Thought for {is_thinking:.2f}s", is_thinking="</think>")
176:+                else:
177:+                    yield Reasoning(status=f"Finished", is_thinking="</think>")
178:+                if chunk != "<think>":
179:+                    if len(chunk) > 1 and chunk[1]:
180:+                        yield chunk[1]
181:+                is_thinking = 0
182:+            elif is_thinking:
183:+                yield Reasoning(chunk)
184:+            else:
185:+                yield chunk
```