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

XFEstudio/gpt4free

Refactor OpenaiTemplate and Api classes for improved error handling and user identification

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

代码差异

2 个文件 +6 -4
Modified g4f/Provider/template/OpenaiTemplate.py +1 -2
@@ -34,7 +34,6 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
34 34 def get_models(cls, api_key: str = None, api_base: str = None) -> list[str]:
35 35 if not cls.models:
36 36 try:
37 headers = {}
38 37 if api_base is None:
39 38 api_base = cls.api_base
40 39 if api_key is None and cls.api_key is not None:
@@ -62,7 +61,7 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
62 61 if cls.fallback_models:
63 62 debug.error(e)
64 63 return cls.fallback_models
65 raise e
64 raise
66 65 return cls.models
67 66
68 67 @classmethod
Modified g4f/api/__init__.py +5 -2
@@ -240,9 +240,9 @@ class Api:
240 240 except HTTPException:
241 241 user_g4f_api_key = await self.security(request)
242 242 user_g4f_api_key = getattr(user_g4f_api_key, "credentials", user_g4f_api_key)
243 country = request.headers.get("Cf-Ipcountry", "")
243 244 if AppConfig.demo and user is None:
244 245 ip = request.headers.get("X-Forwarded-For", "")[:4].strip(":.")
245 country = request.headers.get("Cf-Ipcountry", "")
246 246 user = request.headers.get("x-user", ip)
247 247 user = f"{country}:{user}" if country else user
248 248 if AppConfig.g4f_api_key is None or not user_g4f_api_key or not secrets.compare_digest(AppConfig.g4f_api_key, user_g4f_api_key):
@@ -261,15 +261,18 @@ class Api:
261 261 expires = int(expires) - int(time.time())
262 262 hours, remainder = divmod(expires, 3600)
263 263 minutes, seconds = divmod(remainder, 60)
264 debug.log(f"User: '{user}' G4F API key expires in {hours}h {minutes}m {seconds}s")
265 264 if expires < 0:
265 debug.log(f"G4F API key expired for user '{user}'")
266 266 return ErrorResponse.from_message("G4F API key expired", HTTP_401_UNAUTHORIZED)
267 267 count = 0
268 268 for char in user:
269 269 if char.isupper():
270 270 count += 1
271 271 if count > 4:
272 debug.log(f"Invalid user name (screaming): '{user}'")
272 273 return ErrorResponse.from_message("Invalid user name (screaming)", HTTP_401_UNAUTHORIZED)
274 user = f"{country}:{user}" if country else user
275 debug.log(f"User: '{user}' G4F API key expires in {hours}h {minutes}m {seconds}s")
273 276 else:
274 277 user = "admin"
275 278 path = request.url.path