Spaces:
Sleeping
Sleeping
yonnel
commited on
Commit
·
945f885
1
Parent(s):
516d63a
Enhance OpenAI client initialization with version compatibility handling and update openai dependency to 1.12.0
Browse files- app/build_index.py +22 -3
- app/services/embedding_service.py +23 -2
- requirements.txt +1 -1
app/build_index.py
CHANGED
@@ -294,14 +294,33 @@ def build_index(max_pages: int = 10, model: str = "text-embedding-3-small", use_
|
|
294 |
settings = get_settings()
|
295 |
|
296 |
# Determine adult filtering setting
|
297 |
-
filter_adult = settings.filter_adult_content
|
298 |
if override_adult_filter is not None:
|
299 |
filter_adult = not override_adult_filter # --include-adult means don't filter
|
300 |
logger.info(f"Adult filter override: {'DISABLED' if override_adult_filter else 'ENABLED'}")
|
301 |
|
302 |
-
# Initialize clients
|
303 |
tmdb_client = TMDBClient(settings.tmdb_api_key)
|
304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
|
306 |
# Create data directory with absolute path
|
307 |
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
294 |
settings = get_settings()
|
295 |
|
296 |
# Determine adult filtering setting
|
297 |
+
filter_adult = settings.filter_adult_content_bool if hasattr(settings, 'filter_adult_content_bool') else settings.filter_adult_content
|
298 |
if override_adult_filter is not None:
|
299 |
filter_adult = not override_adult_filter # --include-adult means don't filter
|
300 |
logger.info(f"Adult filter override: {'DISABLED' if override_adult_filter else 'ENABLED'}")
|
301 |
|
302 |
+
# Initialize clients with error handling for version compatibility
|
303 |
tmdb_client = TMDBClient(settings.tmdb_api_key)
|
304 |
+
|
305 |
+
try:
|
306 |
+
# Try to create OpenAI client with different approaches for version compatibility
|
307 |
+
try:
|
308 |
+
openai_client = OpenAI(api_key=settings.openai_api_key)
|
309 |
+
except TypeError as e:
|
310 |
+
if "proxies" in str(e):
|
311 |
+
# Fallback for version compatibility issues
|
312 |
+
logger.warning(f"OpenAI client compatibility issue: {e}")
|
313 |
+
logger.info("Trying alternative OpenAI client initialization...")
|
314 |
+
import httpx
|
315 |
+
# Create a basic httpx client without proxies
|
316 |
+
http_client = httpx.Client(timeout=60.0)
|
317 |
+
openai_client = OpenAI(api_key=settings.openai_api_key, http_client=http_client)
|
318 |
+
else:
|
319 |
+
raise
|
320 |
+
except Exception as e:
|
321 |
+
logger.error(f"❌ Failed to initialize OpenAI client: {e}")
|
322 |
+
logger.error("Please check your OpenAI API key and ensure compatible versions are installed")
|
323 |
+
return
|
324 |
|
325 |
# Create data directory with absolute path
|
326 |
script_dir = os.path.dirname(os.path.abspath(__file__))
|
app/services/embedding_service.py
CHANGED
@@ -3,7 +3,6 @@ import time
|
|
3 |
import logging
|
4 |
from typing import List, Optional, Dict
|
5 |
import os
|
6 |
-
from openai import OpenAI
|
7 |
|
8 |
logger = logging.getLogger(__name__)
|
9 |
|
@@ -11,8 +10,30 @@ class EmbeddingService:
|
|
11 |
"""Service pour générer des embeddings avec OpenAI"""
|
12 |
|
13 |
def __init__(self):
|
14 |
-
self.client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
|
15 |
self.model_name = "text-embedding-3-small"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
def create_composite_text(self, movie_data: Dict) -> str:
|
18 |
"""Create composite text for embedding from movie data"""
|
|
|
3 |
import logging
|
4 |
from typing import List, Optional, Dict
|
5 |
import os
|
|
|
6 |
|
7 |
logger = logging.getLogger(__name__)
|
8 |
|
|
|
10 |
"""Service pour générer des embeddings avec OpenAI"""
|
11 |
|
12 |
def __init__(self):
|
|
|
13 |
self.model_name = "text-embedding-3-small"
|
14 |
+
self.client = self._create_openai_client()
|
15 |
+
|
16 |
+
def _create_openai_client(self):
|
17 |
+
"""Create OpenAI client with version compatibility handling"""
|
18 |
+
try:
|
19 |
+
from openai import OpenAI
|
20 |
+
# Try standard initialization first
|
21 |
+
try:
|
22 |
+
return OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
|
23 |
+
except TypeError as e:
|
24 |
+
if "proxies" in str(e):
|
25 |
+
# Fallback for version compatibility issues
|
26 |
+
logger.warning(f"OpenAI client compatibility issue: {e}")
|
27 |
+
logger.info("Using alternative OpenAI client initialization...")
|
28 |
+
import httpx
|
29 |
+
# Create a basic httpx client without proxies
|
30 |
+
http_client = httpx.Client(timeout=60.0)
|
31 |
+
return OpenAI(api_key=os.getenv('OPENAI_API_KEY'), http_client=http_client)
|
32 |
+
else:
|
33 |
+
raise
|
34 |
+
except Exception as e:
|
35 |
+
logger.error(f"Failed to initialize OpenAI client: {e}")
|
36 |
+
raise
|
37 |
|
38 |
def create_composite_text(self, movie_data: Dict) -> str:
|
39 |
"""Create composite text for embedding from movie data"""
|
requirements.txt
CHANGED
@@ -4,7 +4,7 @@ pydantic==2.5.0
|
|
4 |
pydantic-settings==2.1.0
|
5 |
numpy==1.24.3
|
6 |
faiss-cpu==1.7.4
|
7 |
-
openai==1.
|
8 |
python-dotenv==1.0.0
|
9 |
requests==2.31.0
|
10 |
datasets>=2.14.0
|
|
|
4 |
pydantic-settings==2.1.0
|
5 |
numpy==1.24.3
|
6 |
faiss-cpu==1.7.4
|
7 |
+
openai==1.12.0
|
8 |
python-dotenv==1.0.0
|
9 |
requests==2.31.0
|
10 |
datasets>=2.14.0
|