XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Fix response in HuggingChat

64e31046
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +7 -7
Modified g4f/Provider/hf/HuggingChat.py +7 -7
@@ -22,7 +22,7 @@ from ...errors import MissingRequirementsError, MissingAuthError, ResponseError
22 22 from ...image import to_bytes
23 23 from ...requests import get_args_from_nodriver, DEFAULT_HEADERS
24 24 from ...requests.raise_for_status import raise_for_status
25 from ...providers.response import JsonConversation, ImageResponse, Sources, TitleGeneration, Reasoning, RequestLogin
25 from ...providers.response import JsonConversation, ImageResponse, Sources, TitleGeneration, Reasoning, RequestLogin, FinishReason
26 26 from ...cookies import get_cookies
27 27 from ...tools.media import merge_media
28 28 from .models import default_model, default_vision_model, fallback_models, image_models, model_aliases
@@ -169,13 +169,16 @@ class HuggingChat(AsyncAuthedProvider, ProviderModelMixin):
169 169 try:
170 170 line = json.loads(line)
171 171 except json.JSONDecodeError as e:
172 debug.log(f"Failed to decode JSON: {line}, error: {e}")
172 debug.error(f"Failed to decode JSON: {line}, error: {e}")
173 173 continue
174 174 if "type" not in line:
175 175 raise RuntimeError(f"Response: {line}")
176 176 elif line["type"] == "stream":
177 177 yield line["token"].replace('\u0000', '')
178 178 elif line["type"] == "finalAnswer":
179 if sources is not None:
180 yield sources
181 yield FinishReason("stop")
179 182 break
180 183 elif line["type"] == "file":
181 184 url = f"{cls.url}/conversation/{conversationId}/output/{line['sha']}"
@@ -185,10 +188,7 @@ class HuggingChat(AsyncAuthedProvider, ProviderModelMixin):
185 188 elif line["type"] == "title":
186 189 yield TitleGeneration(line["title"])
187 190 elif line["type"] == "reasoning":
188 yield Reasoning(line.get("token"), line.get("status"))
189
190 if sources is not None:
191 yield sources
191 yield Reasoning(line.get("token"), status=line.get("status"))
192 192
193 193 @classmethod
194 194 def create_conversation(cls, session: Session, model: str):
@@ -223,7 +223,7 @@ class HuggingChat(AsyncAuthedProvider, ProviderModelMixin):
223 223 break
224 224 except json.JSONDecodeError:
225 225 continue
226
226
227 227 if not json_data:
228 228 raise RuntimeError("Failed to parse response data")
229 229