MCPcopy Create free account
hub / github.com/ZyphrZero/z.ai2api_python / transform_request

Method transform_request

app/core/upstream.py:1300–1599  ·  view source on GitHub ↗

转换 OpenAI 请求为上游格式。

(
        self,
        request: OpenAIRequest,
        excluded_tokens: Optional[Set[str]] = None,
        excluded_guest_user_ids: Optional[Set[str]] = None,
    )

Source from the content-addressed store, hash-verified

1298 return None
1299
1300 async def transform_request(
1301 self,
1302 request: OpenAIRequest,
1303 excluded_tokens: Optional[Set[str]] = None,
1304 excluded_guest_user_ids: Optional[Set[str]] = None,
1305 ) -> Dict[str, Any]:
1306 """转换 OpenAI 请求为上游格式。"""
1307 self.logger.info(f"🔄 转换 OpenAI 请求到上游格式: {request.model}")
1308
1309 raw_messages = [
1310 message.model_dump(exclude_none=True)
1311 for message in request.messages
1312 ]
1313 normalized_messages = _preprocess_openai_messages(raw_messages)
1314
1315 auth_info = await self.get_auth_info(
1316 excluded_tokens=excluded_tokens,
1317 excluded_guest_user_ids=excluded_guest_user_ids,
1318 )
1319 token = str(auth_info.get("token") or "")
1320 if not token:
1321 raise RuntimeError("无法获取上游认证令牌")
1322
1323 user_id = str(auth_info.get("user_id") or _extract_user_id_from_token(token))
1324 auth_mode = str(auth_info.get("auth_mode") or "authenticated")
1325 token_source = str(auth_info.get("token_source") or "unknown")
1326 guest_user_id = auth_info.get("guest_user_id")
1327 # 确定请求的模型特性
1328 last_user_text = _extract_last_user_text(raw_messages)
1329 requested_model = request.model
1330 is_thinking_model = "-thinking" in requested_model.casefold()
1331 is_search_model = "-search" in requested_model.casefold()
1332 is_advanced_search = requested_model == settings.GLM47_ADVANCED_SEARCH_MODEL
1333 upstream_model_id = self.model_mapping.get(requested_model, "0727-360B-API")
1334 tools = request.tools if settings.TOOL_SUPPORT and request.tools else None
1335 tool_choice = getattr(request, "tool_choice", None)
1336 model_profile = self._get_model_request_profile(upstream_model_id)
1337 enable_thinking = request.enable_thinking
1338 if enable_thinking is None:
1339 default_enable_thinking = model_profile["default_enable_thinking"]
1340 enable_thinking = (
1341 default_enable_thinking
1342 if default_enable_thinking is not None
1343 else is_thinking_model
1344 )
1345
1346 web_search = request.web_search
1347 if web_search is None:
1348 web_search = is_search_model or is_advanced_search
1349
1350 use_persisted_chat = bool(model_profile["use_persisted_chat"])
1351 preview_mode = bool(model_profile["preview_mode"])
1352 feature_entries = list(model_profile["feature_entries"])
1353 persisted_user_message_id = generate_uuid() if use_persisted_chat else None
1354 persisted_assistant_message_id = generate_uuid() if use_persisted_chat else None
1355
1356 mcp_servers = list(model_profile["mcp_servers"])
1357 if is_advanced_search and "advanced-search" not in mcp_servers:

Calls 13

get_auth_infoMethod · 0.95
upload_imageMethod · 0.95
_create_upstream_chatMethod · 0.95
get_latest_fe_versionFunction · 0.90
_extract_last_user_textFunction · 0.85
generate_uuidFunction · 0.85