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 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
- openai_client = OpenAI(api_key=settings.openai_api_key)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.3.5
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