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

XFEstudio/gpt4free

Enhance Yupp API client and model manager to support custom session handling; add models_needs_auth attribute to AIBadgr class

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

代码差异

3 个文件 +23 -16
Modified g4f/Provider/Yupp.py +13 -10
@@ -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
Modified g4f/Provider/needs_auth/AIBadgr.py +1 -0
@@ -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
Modified g4f/Provider/yupp/models.py +9 -6
@@ -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