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

XFEstudio/gpt4free

feat: add PenguinAI provider

3d334377
PwLDev <pgibran09@gmail.com>
提交于

代码差异

2 个文件 +50 -0
Added g4f/Provider/PenguinAI.py +49 -0
@@ -0,0 +1,49 @@
1 from __future__ import annotations
2 import requests
3
4 from .template import OpenaiTemplate
5 from ..requests import raise_for_status
6 from .. import debug
7
8 class PenguinAI(OpenaiTemplate):
9 label = "PenguinAI"
10 url = "https://penguinai.tech"
11 api_base = "https://api.penguinai.tech/v1"
12 working = True
13
14 default_model = "gpt-3.5-turbo"
15 default_vision_model = "gpt-4o"
16
17 # in reality, it uses pollinations
18 image_models = ["flux"]
19
20 @classmethod
21 def get_models(cls, api_key: str = None, api_base: str = None) -> list[str]:
22 if not cls.models:
23 try:
24 headers = {}
25 if api_base is None:
26 api_base = cls.api_base
27 if api_key is None and cls.api_key is not None:
28 api_key = cls.api_key
29 if api_key is not None:
30 headers["authorization"] = f"Bearer {api_key}"
31 response = requests.get(f"{api_base}/models", headers=headers, verify=cls.ssl)
32 raise_for_status(response)
33 data = response.json()
34 data = data.get("data") if isinstance(data, dict) else data
35 cls.image_models = [model.get("id") for model in data if "image" in model.get("type")]
36 cls.models = [model.get("id") for model in data]
37 if cls.sort_models:
38 cls.models.sort()
39
40 cls.vision_models = []
41 vision_model_prefixes = ["vision", "multimodal", "o1", "o3", "o4", "gpt-4", "claude-3", "claude-opus", "claude-sonnet"]
42 for model in cls.models:
43 for tag in vision_model_prefixes:
44 if tag in model and not "search" in model:
45 cls.vision_models.append(model)
46 except Exception as e:
47 debug.error(e)
48 return cls.fallback_models
49 return cls.models
Modified g4f/Provider/__init__.py +1 -0
@@ -46,6 +46,7 @@ from .LegacyLMArena import LegacyLMArena
46 46 from .OIVSCodeSer2 import OIVSCodeSer2
47 47 from .OIVSCodeSer0501 import OIVSCodeSer0501
48 48 from .OperaAria import OperaAria
49 from .PenguinAI import PenguinAI
49 50 from .PerplexityLabs import PerplexityLabs
50 51 from .PollinationsAI import PollinationsAI
51 52 from .PollinationsImage import PollinationsImage