From 48d58ef2e8032baa5b79322173cd579207267e83 Mon Sep 17 00:00:00 2001 From: Yuzhong Zhang <141388234+BetterAndBetterII@users.noreply.github.com> Date: Mon, 3 Mar 2025 13:41:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E7=94=9F=E6=88=90=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/gemini_routes.py | 4 ++-- app/services/chat/api_client.py | 6 +++--- app/services/gemini_chat_service.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/api/gemini_routes.py b/app/api/gemini_routes.py index a50889a..8905257 100644 --- a/app/api/gemini_routes.py +++ b/app/api/gemini_routes.py @@ -63,7 +63,7 @@ async def generate_content( logger.info(f"Using API key: {api_key}") try: - response = chat_service.generate_content( + response = await chat_service.generate_content( model=model_name, request=request, api_key=api_key @@ -122,7 +122,7 @@ async def verify_key(api_key: str): ) ] ) - response = chat_service.generate_content(settings.TEST_MODEL,gemini_requset, api_key) + response = await chat_service.generate_content(settings.TEST_MODEL,gemini_requset, api_key) if response: return JSONResponse({"status": "valid"}) return JSONResponse({"status": "invalid"}) diff --git a/app/services/chat/api_client.py b/app/services/chat/api_client.py index df7f0cb..0a834d6 100644 --- a/app/services/chat/api_client.py +++ b/app/services/chat/api_client.py @@ -24,13 +24,13 @@ class GeminiApiClient(ApiClient): self.base_url = base_url self.timeout = timeout - def generate_content(self, payload: Dict[str, Any], model: str, api_key: str) -> Dict[str, Any]: + async def generate_content(self, payload: Dict[str, Any], model: str, api_key: str) -> Dict[str, Any]: timeout = httpx.Timeout(self.timeout, read=self.timeout) if model.endswith("-search"): model = model[:-7] - with httpx.Client(timeout=timeout) as client: + async with httpx.AsyncClient(timeout=timeout) as client: url = f"{self.base_url}/models/{model}:generateContent?key={api_key}" - response = client.post(url, json=payload) + response = await client.post(url, json=payload) if response.status_code != 200: error_content = response.text raise Exception(f"API call failed with status code {response.status_code}, {error_content}") diff --git a/app/services/gemini_chat_service.py b/app/services/gemini_chat_service.py index 48d4991..d281679 100644 --- a/app/services/gemini_chat_service.py +++ b/app/services/gemini_chat_service.py @@ -79,10 +79,10 @@ class GeminiChatService: self.key_manager = key_manager self.response_handler = GeminiResponseHandler() - def generate_content(self, model: str, request: GeminiRequest, api_key: str) -> Dict[str, Any]: + async def generate_content(self, model: str, request: GeminiRequest, api_key: str) -> Dict[str, Any]: """生成内容""" payload = _build_payload(model, request) - response = self.api_client.generate_content(payload, model, api_key) + response = await self.api_client.generate_content(payload, model, api_key) return self.response_handler.handle_response(response, model, stream=False) async def stream_generate_content(self, model: str, request: GeminiRequest, api_key: str) -> AsyncGenerator[str, None]: