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/Provider/HuggingChat.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 and Changes for more details.

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

_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:
```
19:         'CohereForAI/c4ai-command-r-plus-08-2024',
20:         'Qwen/Qwen2.5-72B-Instruct',
21:         'nvidia/Llama-3.1-Nemotron-70B-Instruct-HF',
22:+        'Qwen/Qwen2.5-Coder-32B-Instruct',
23:         'meta-llama/Llama-3.2-11B-Vision-Instruct',
24:         'NousResearch/Hermes-3-Llama-3.1-8B',
25:         'mistralai/Mistral-Nemo-Instruct-2407',
31:         "command-r-plus": "CohereForAI/c4ai-command-r-plus-08-2024",
32:         "qwen-2-72b": "Qwen/Qwen2.5-72B-Instruct",
33:         "nemotron-70b": "nvidia/Llama-3.1-Nemotron-70B-Instruct-HF",
34:+        "qwen-2.5-coder-32b": "Qwen/Qwen2.5-Coder-32B-Instruct",
35:         "llama-3.2-11b": "meta-llama/Llama-3.2-11B-Vision-Instruct",
36:         "hermes-3": "NousResearch/Hermes-3-Llama-3.1-8B",
37:         "mistral-nemo": "mistralai/Mistral-Nemo-Instruct-2407",
85:                 raise RuntimeError(f"Request failed with status code: {response.status_code}, response: {response.text}")
86: 
87:             conversationId = response.json().get('conversationId')
88:+            
89:+            # Get the data response and parse it properly
90:             response = session.get(f'https://huggingface.co/chat/conversation/{conversationId}/__data.json?x-sveltekit-invalidated=11')
91:+            
92:+            # Split the response content by newlines and parse each line as JSON
93:+            try:
94:+                json_data = None
95:+                for line in response.text.split('\n'):
96:+                    if line.strip():
97:+                        try:
98:+                            parsed = json.loads(line)
99:+                            if isinstance(parsed, dict) and "nodes" in parsed:
100:+                                json_data = parsed
101:+                                break
102:+                        except json.JSONDecodeError:
103:+                            continue
104:+                            
105:+                if not json_data:
106:+                    raise RuntimeError("Failed to parse response data")
107:+
108:+                data: list = json_data["nodes"][1]["data"]
109:+                keys: list[int] = data[data[0]["messages"]]
110:+                message_keys: dict = data[keys[0]]
111:+                messageId: str = data[message_keys["id"]]
112: 
-            data: list = response.json()["nodes"][1]["data"]
-            keys: list[int] = data[data[0]["messages"]]
-            message_keys: dict = data[keys[0]]
-            messageId: str = data[message_keys["id"]]
113:+            except (KeyError, IndexError, TypeError) as e:
114:+                raise RuntimeError(f"Failed to extract message ID: {str(e)}")
115: 
116:             settings = {
117:                 "inputs": format_prompt(messages),
143:                 'data': (None, json.dumps(settings, separators=(',', ':'))),
144:             }
145: 
-            response = requests.post(f'https://huggingface.co/chat/conversation/{conversationId}',
146:+            response = requests.post(
147:+                f'https://huggingface.co/chat/conversation/{conversationId}',
148:                 cookies=session.cookies,
149:                 headers=headers,
150:                 files=files,
166:                 elif line["type"] == "stream":
167:                     token = line["token"].replace('\u0000', '')
168:                     full_response += token
169:+                    if stream:
170:+                        yield token
171:                 
172:                 elif line["type"] == "finalAnswer":
173:                     break
174:             
175:             full_response = full_response.replace('<|im_end|', '').replace('\u0000', '').strip()
176: 
-            yield full_response
177:+            if not stream:
178:+                yield full_response
179:+
180:+    @classmethod
181:+    def supports_model(cls, model: str) -> bool:
182:+        """Check if the model is supported by the provider."""
183:+        return model in cls.models or model in cls.model_aliases
```