Update app/main.py
Browse files- app/main.py +27 -9
app/main.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
from fastapi import FastAPI, HTTPException, Depends, Header, Request
|
| 2 |
from fastapi.responses import JSONResponse, StreamingResponse
|
|
|
|
| 3 |
from fastapi.security import APIKeyHeader
|
| 4 |
from pydantic import BaseModel, ConfigDict, Field
|
| 5 |
from typing import List, Dict, Any, Optional, Union, Literal
|
|
@@ -23,6 +24,15 @@ client = None
|
|
| 23 |
|
| 24 |
app = FastAPI(title="OpenAI to Gemini Adapter")
|
| 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
# API Key security scheme
|
| 27 |
api_key_header = APIKeyHeader(name="Authorization", auto_error=False)
|
| 28 |
|
|
@@ -1064,15 +1074,23 @@ async def chat_completions(request: OpenAIRequest, api_key: str = Depends(get_ap
|
|
| 1064 |
text_content = part.text
|
| 1065 |
break
|
| 1066 |
|
| 1067 |
-
#
|
| 1068 |
-
if text_content:
|
| 1069 |
-
|
| 1070 |
-
|
| 1071 |
-
|
| 1072 |
-
|
| 1073 |
-
|
| 1074 |
-
|
| 1075 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1076 |
|
| 1077 |
# Also check if the response itself has text
|
| 1078 |
if hasattr(response, 'text') and response.text:
|
|
|
|
| 1 |
from fastapi import FastAPI, HTTPException, Depends, Header, Request
|
| 2 |
from fastapi.responses import JSONResponse, StreamingResponse
|
| 3 |
+
from fastapi.middleware.cors import CORSMiddleware # Import CORS middleware
|
| 4 |
from fastapi.security import APIKeyHeader
|
| 5 |
from pydantic import BaseModel, ConfigDict, Field
|
| 6 |
from typing import List, Dict, Any, Optional, Union, Literal
|
|
|
|
| 24 |
|
| 25 |
app = FastAPI(title="OpenAI to Gemini Adapter")
|
| 26 |
|
| 27 |
+
# Add CORS middleware to handle preflight OPTIONS requests
|
| 28 |
+
app.add_middleware(
|
| 29 |
+
CORSMiddleware,
|
| 30 |
+
allow_origins=["*"], # Allows all origins
|
| 31 |
+
allow_credentials=True,
|
| 32 |
+
allow_methods=["*"], # Allows all methods (GET, POST, OPTIONS, etc.)
|
| 33 |
+
allow_headers=["*"], # Allows all headers
|
| 34 |
+
)
|
| 35 |
+
|
| 36 |
# API Key security scheme
|
| 37 |
api_key_header = APIKeyHeader(name="Authorization", auto_error=False)
|
| 38 |
|
|
|
|
| 1074 |
text_content = part.text
|
| 1075 |
break
|
| 1076 |
|
| 1077 |
+
# Check the extracted text content
|
| 1078 |
+
if text_content is None:
|
| 1079 |
+
# No text content was found at all. Check for other parts as a fallback?
|
| 1080 |
+
# For now, let's consider no text as invalid for retry purposes,
|
| 1081 |
+
# as the primary goal is text generation.
|
| 1082 |
+
# If other non-text parts WERE valid outcomes, this logic would need adjustment.
|
| 1083 |
+
# Original check considered any parts as valid if text was missing/empty:
|
| 1084 |
+
# if hasattr(candidate, 'content') and hasattr(candidate.content, 'parts'):
|
| 1085 |
+
# if len(candidate.content.parts) > 0:
|
| 1086 |
+
# return True
|
| 1087 |
+
return False # Treat no text found as invalid
|
| 1088 |
+
elif text_content == '':
|
| 1089 |
+
# Explicit empty string found
|
| 1090 |
+
return False # Treat empty string as invalid for retry
|
| 1091 |
+
else:
|
| 1092 |
+
# Non-empty text content found
|
| 1093 |
+
return True # Valid response
|
| 1094 |
|
| 1095 |
# Also check if the response itself has text
|
| 1096 |
if hasattr(response, 'text') and response.text:
|