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

XFEstudio/gpt4free

Refactor Yupp provider to use get_last_user_message and streamline request payload construction

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

代码差异

1 个文件 +49 -27
Modified g4f/Provider/Yupp.py +49 -27
@@ -15,7 +15,7 @@ from ..tools.auth import AuthManager
15 15 from ..tools.media import merge_media
16 16 from ..image import is_accepted_format, to_bytes
17 17 from .yupp.models import YuppModelManager
18 from .helper import get_last_message
18 from .helper import get_last_user_message
19 19 from ..debug import log
20 20
21 21 # Global variables to manage Yupp accounts (should be set by your main application)
@@ -212,14 +212,9 @@ class Yupp(AbstractProvider, ProviderModelMixin):
212 212 messages = []
213 213
214 214 # Format messages
215 if conversation is None or True:
216 if prompt is None:
217 prompt = format_messages_for_yupp(messages)
218 url_uuid = str(uuid.uuid4())
219 yield JsonConversation(url_uuid=url_uuid)
220 else:
221 if prompt is None:
222 prompt = get_last_message(messages)
215 prompt = get_last_user_message(messages, prompt)
216 url_uuid = None
217 if conversation is not None:
223 218 url_uuid = conversation.url_uuid
224 219 log_debug(f"Use url_uuid: {url_uuid}, Formatted prompt length: {len(prompt)}")
225 220
@@ -320,11 +315,39 @@ class Yupp(AbstractProvider, ProviderModelMixin):
320 315 "chatMessageId": ""
321 316 })
322 317
318 # Build request
319 log_debug(f"Sending request to Yupp.ai with account: {account['token'][:10]}...")
323 320
324 # Build request
321 turn_id = str(uuid.uuid4())
325 322 if url_uuid is None:
326 323 url_uuid = str(uuid.uuid4())
327 url = f"https://yupp.ai/chat/{url_uuid}?stream=true"
324 payload = [
325 url_uuid,
326 turn_id,
327 prompt,
328 "$undefined",
329 "$undefined",
330 files,
331 "$undefined",
332 [{"modelName": model_id, "promptModifierId": "$undefined"}] if model_id else "none",
333 "text",
334 False,
335 "$undefined",
336 ]
337 yield JsonConversation(url_uuid=url_uuid)
338 else:
339 payload = [
340 url_uuid,
341 turn_id,
342 prompt,
343 False,
344 [],
345 [{"modelName": model_id, "promptModifierId": "$undefined"}] if model_id else [],
346 "text",
347 files
348 ]
349 url = f"https://yupp.ai/chat/{url_uuid}?stream=true"
350 next_action = "7f1e9eec4ab22c8bfc73a50c026db603cd8380f87d"
328 351
329 352 headers = {
330 353 "accept": "text/x-component",
@@ -332,22 +355,8 @@ class Yupp(AbstractProvider, ProviderModelMixin):
332 355 "next-action": next_action,
333 356 "cookie": f"__Secure-yupp.session-token={account['token']}",
334 357 }
335
336 log_debug(f"Sending request to Yupp.ai with account: {account['token'][:10]}...")
337 358
338 payload = [
339 url_uuid,
340 str(uuid.uuid4()),
341 prompt,
342 "$undefined",
343 "$undefined",
344 files,
345 "$undefined",
346 [{"modelName": model_id, "promptModifierId": "$undefined"}] if model_id else "none",
347 "text",
348 False,
349 "$undefined",
350 ]
359 log_debug(f"Request uuid: {url_uuid}, Model: {model_id}, Prompt length: {len(prompt)}, Files: {len(files)}")
351 360
352 361 # Send request
353 362 response = session.post(
@@ -362,7 +371,20 @@ class Yupp(AbstractProvider, ProviderModelMixin):
362 371 yield from cls._process_stream_response(
363 372 response.iter_lines(), account, session, prompt, model_id
364 373 )
365
374
375 session.post("https://yupp.ai/api/trpc/chat.generateRetake?batch=1", data={
376 "0": {
377 "json": {
378 "attachmentIds": files,
379 "chatId": url_uuid,
380 "prompt": prompt,
381 "turnId": turn_id
382 }
383 }
384 }, cookies={
385 "__Secure-yupp.session-token": account["token"]
386 })
387
366 388 @classmethod
367 389 def _process_stream_response(
368 390 cls,