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

XFEstudio/gpt4free

fix: Update API key retrieval method and enhance error handling in backend API

1107316b
hlohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

2 个文件 +21 -15
Modified g4f/Provider/needs_auth/Antigravity.py +17 -13
@@ -962,6 +962,8 @@ class AntigravityProvider:
962 962 for msg in messages:
963 963 role = "model" if msg["role"] == "assistant" else "user"
964 964
965 content = msg.get("content")
966
965 967 # Handle tool role (OpenAI style)
966 968 if msg["role"] == "tool":
967 969 parts = [
@@ -970,9 +972,9 @@ class AntigravityProvider:
970 972 "name": msg.get("tool_call_id", "unknown_function"),
971 973 "response": {
972 974 "result": (
973 msg["content"]
974 if isinstance(msg["content"], str)
975 else json.dumps(msg["content"])
975 content
976 if isinstance(content, str)
977 else json.dumps(content)
976 978 )
977 979 },
978 980 }
@@ -982,8 +984,8 @@ class AntigravityProvider:
982 984 # Handle assistant messages with tool calls
983 985 elif msg["role"] == "assistant" and msg.get("tool_calls"):
984 986 parts = []
985 if isinstance(msg["content"], str) and msg["content"].strip():
986 parts.append({"text": msg["content"]})
987 if isinstance(content, str) and content.strip():
988 parts.append({"text": content})
987 989 for tool_call in msg["tool_calls"]:
988 990 if tool_call.get("type") == "function":
989 991 parts.append(
@@ -996,18 +998,18 @@ class AntigravityProvider:
996 998 )
997 999
998 1000 # Handle string content
999 elif isinstance(msg["content"], str):
1000 parts = [{"text": msg["content"]}]
1001 elif isinstance(content, str):
1002 parts = [{"text": content}]
1001 1003
1002 1004 # Handle array content (possibly multimodal)
1003 elif isinstance(msg["content"], list):
1005 elif isinstance(content, list):
1004 1006 parts = []
1005 for content in msg["content"]:
1006 ctype = content.get("type")
1007 for item in content:
1008 ctype = item.get("type")
1007 1009 if ctype == "text":
1008 parts.append({"text": content["text"]})
1010 parts.append({"text": item["text"]})
1009 1011 elif ctype == "image_url":
1010 image_url = content.get("image_url", {}).get("url")
1012 image_url = item.get("image_url", {}).get("url")
1011 1013 if not image_url:
1012 1014 continue
1013 1015 if image_url.startswith("data:"):
@@ -1024,8 +1026,10 @@ class AntigravityProvider:
1024 1026 }
1025 1027 }
1026 1028 )
1029 elif content is not None:
1030 parts = [{"text": str(content)}]
1027 1031 else:
1028 parts = [{"text": str(msg["content"])}]
1032 parts = []
1029 1033
1030 1034 format_messages.append({"role": role, "parts": parts})
1031 1035
Modified g4f/gui/server/backend_api.py +4 -2
@@ -317,11 +317,13 @@ class Backend_Api(Api):
317 317 return "Provider not found", 404
318 318 if not hasattr(provider_handler, "get_quota"):
319 319 return "Provider doesn't support get_quota", 500
320 request_api_key = request.headers.get("Authorization", "").replace("Bearer ", "")
320 request_api_key = request.headers.get("x-api-key")
321 321 try:
322 322 return jsonify(await provider_handler.get_quota(api_key=request_api_key))
323 323 except MissingAuthError as e:
324 324 return jsonify({"error": {"message": f"{type(e).__name__}: {e}"}}), 401
325 except NotImplementedError as e:
326 return jsonify({"error": {"message": f"{type(e).__name__}: {e}"}}), 501
325 327 except Exception as e:
326 328 logger.exception(e)
327 329 return jsonify({"error": {"message": f"{type(e).__name__}: {e}"}}), 500
@@ -358,7 +360,7 @@ class Backend_Api(Api):
358 360 @app.route('/backend-api/v2/version', methods=['GET'])
359 361 def version():
360 362 resp = jsonify(self.get_version())
361 if not if request.args.get("cache"):
363 if not request.args.get("cache"):
362 364 resp.set_cookie('fingerprint', base64.b64encode(str(int(time.time())).encode()).decode(), max_age=60 * 60 *2, httponly=True, secure=True)
363 365 return resp
364 366