返回提交历史
Modified
g4f/Provider/Yupp.py
+49
-27
XFEstudio/gpt4free
Refactor Yupp provider to use get_last_user_message and streamline request payload construction
f7ebd1b2
代码差异
1 个文件
+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,