返回提交历史
Modified
g4f/Provider/Yupp.py
+13
-10
Modified
g4f/Provider/needs_auth/AIBadgr.py
+1
-0
Modified
g4f/Provider/yupp/models.py
+9
-6
XFEstudio/gpt4free
Enhance Yupp API client and model manager to support custom session handling; add models_needs_auth attribute to AIBadgr class
6b6e03aa
代码差异
3 个文件
+23
-16
@@ -223,7 +223,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
223
223
api_key = get_cookies("yupp.ai", False).get("__Secure-yupp.session-token")
224
224
if not api_key:
225
225
raise MissingAuthError("No Yupp accounts configured. Set YUPP_API_KEY environment variable.")
226
manager = YuppModelManager(api_key=api_key)
226
manager = YuppModelManager(api_key=api_key, session=create_scraper())
227
227
models = manager.client.fetch_models()
228
228
if models:
229
229
cls.models_tags = {model.get("name"): manager.processor.generate_tags(model) for model in models}
@@ -585,6 +585,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
585
585
line = await loop.run_in_executor(_executor, lambda: next(lines_iterator, None))
586
586
if line is None:
587
587
break
588
print(line[:20])
588
589
except StopIteration:
589
590
break
590
591
@@ -610,15 +611,14 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
610
611
else:
611
612
continue
612
613
613
if b"<think>" in line:
614
m = line_pattern.match(line)
615
if m:
616
capturing_ref_id = m.group(1).decode()
617
capturing_lines = [line]
618
continue
619
620
614
match = line_pattern.match(line)
621
615
if not match:
616
if b"<think>" in line:
617
m = line_pattern.match(line)
618
if m:
619
capturing_ref_id = m.group(1).decode()
620
capturing_lines = [line]
621
continue
622
622
continue
623
623
624
624
chunk_id, chunk_data = match.groups()
@@ -633,6 +633,8 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
633
633
except json.JSONDecodeError:
634
634
continue
635
635
636
print(chunk_id)
637
636
638
if chunk_id == reward_id and isinstance(data, dict) and "unclaimedRewardInfo" in data:
637
639
reward_info = data
638
640
log_debug(f"Found reward info")
@@ -640,6 +642,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
640
642
elif chunk_id == "1":
641
643
yield PlainTextResponse(line.decode(errors="ignore"))
642
644
if isinstance(data, dict):
645
print(data)
643
646
left_stream = data.get("leftStream", {})
644
647
right_stream = data.get("rightStream", {})
645
648
if data.get("quickResponse", {}) != "$undefined":
@@ -747,7 +750,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
747
750
):
748
751
stream["quick"].append(chunk)
749
752
quick_content += content
750
yield VariantResponse(content)
753
yield PreviewResponse(content)
751
754
752
755
elif chunk_id in [turn_id, persisted_turn_id]:
753
756
pass
@@ -776,7 +779,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
776
779
if variant_image is not None:
777
780
yield variant_image
778
781
elif variant_text:
779
yield PreviewResponse(variant_text)
782
yield VariantResponse(variant_text)
780
783
yield JsonResponse(**stream)
781
784
log_debug(f"Finished processing {line_count} lines")
782
785
@@ -9,6 +9,7 @@ class AIBadgr(OpenaiTemplate):
9
9
base_url = "https://aibadgr.com/api/v1"
10
10
working = True
11
11
needs_auth = True
12
models_needs_auth = True
12
13
supports_stream = True
13
14
supports_system_message = True
14
15
supports_message_history = True
@@ -17,16 +17,19 @@ class ModelConfig:
17
17
class YuppAPIClient:
18
18
"""Yupp API client for fetching model data"""
19
19
20
def __init__(self, config: ModelConfig = None, api_key: str = None):
20
def __init__(self, config: ModelConfig = None, api_key: str = None, session=None):
21
21
self.config = config or ModelConfig()
22
self.session = requests.Session()
23
22
self.api_key = api_key
24
self._setup_session()
23
if session is None:
24
self.session = requests.Session()
25
self._setup_session()
26
else:
27
self.session = session
28
self._set_cookies()
25
29
26
30
def _setup_session(self) -> None:
27
31
"""Setup session with headers and cookies"""
28
32
self.session.headers.update(self._get_headers())
29
self._set_cookies()
30
33
31
34
def _get_headers(self) -> Dict[str, str]:
32
35
"""Get request headers"""
@@ -224,9 +227,9 @@ class DataManager:
224
227
class YuppModelManager:
225
228
"""Main manager class for Yupp model operations"""
226
229
227
def __init__(self, config: ModelConfig = None, api_key: str = None):
230
def __init__(self, config: ModelConfig = None, api_key: str = None, session=None):
228
231
self.config = config or ModelConfig()
229
self.client = YuppAPIClient(config, api_key)
232
self.client = YuppAPIClient(config, api_key, session)
230
233
self.processor = ModelProcessor()
231
234
self.data_manager = DataManager()
232
235