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/Upstage.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:
```
41:         **kwargs
42:     ) -> AsyncResult:
43:         model = cls.get_model(model)
-        
44:+
45:         headers = {
46:             "accept": "*/*",
47:             "accept-language": "en-US,en;q=0.9",
48:+            "cache-control": "no-cache",
49:             "content-type": "application/json",
50:+            "dnt": "1",
51:             "origin": "https://console.upstage.ai",
52:+            "pragma": "no-cache",
53:             "priority": "u=1, i",
54:             "referer": "https://console.upstage.ai/",
-            "sec-ch-ua": '"Chromium";v="127", "Not)A;Brand";v="99"',
55:+            "sec-ch-ua": '"Not?A_Brand";v="99", "Chromium";v="130"',
56:             "sec-ch-ua-mobile": "?0",
57:             "sec-ch-ua-platform": '"Linux"',
58:             "sec-fetch-dest": "empty",
59:             "sec-fetch-mode": "cors",
60:             "sec-fetch-site": "cross-site",
-            "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
61:+            "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
62:         }
63:+
64:         async with ClientSession(headers=headers) as session:
65:             data = {
66:                 "stream": True,
67:                 "messages": [{"role": "user", "content": format_prompt(messages)}],
68:                 "model": model
69:             }
70:+
71:             async with session.post(f"{cls.api_endpoint}", json=data, proxy=proxy) as response:
72:                 response.raise_for_status()
73:+
74:+                response_text = ""
75:+
76:                 async for line in response.content:
77:                     if line:
78:                         line = line.decode('utf-8').strip()
79:+                        
80:                         if line.startswith("data: ") and line != "data: [DONE]":
-                            data = json.loads(line[6:])
-                            content = data['choices'][0]['delta'].get('content', '')
-                            if content:
-                                yield content
81:+                            try:
82:+                                data = json.loads(line[6:])
83:+                                content = data['choices'][0]['delta'].get('content', '')
84:+                                if content:
85:+                                    response_text += content
86:+                                    yield content
87:+                            except json.JSONDecodeError:
88:+                                continue
89:+                        
90:+                        if line == "data: [DONE]":
91:+                            break
```