김무영 Claude commited on
Commit
162bfae
·
1 Parent(s): 3190032

Fix websockets compatibility issue for HuggingFace deployment

Browse files

- Add websockets version constraint to requirements.txt (>=11.0.3,<12.0.0)
- Add exception handling for OpenAI/Supabase module imports
- Fall back to FAISS mode when Supabase modules are unavailable
- Update default VECTOR_DB_TYPE to faiss in .env.example for stability

This resolves ModuleNotFoundError: No module named 'websockets.asyncio'
that occurs during HuggingFace Spaces deployment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Files changed (3) hide show
  1. .env.example +2 -1
  2. app.py +19 -3
  3. requirements.txt +1 -0
.env.example CHANGED
@@ -9,7 +9,8 @@
9
  # SUPABASE_KEY=your_supabase_key_here
10
 
11
  # 벡터 DB 타입 (faiss 또는 supabase)
12
- VECTOR_DB_TYPE=supabase
 
13
 
14
  # 기존 FAISS 설정 (VECTOR_DB_TYPE=faiss 인 경우 사용)
15
  EMBEDDING_MODEL=jhgan/ko-sbert-nli
 
9
  # SUPABASE_KEY=your_supabase_key_here
10
 
11
  # 벡터 DB 타입 (faiss 또는 supabase)
12
+ # 허깅페이스 배포 시에는 faiss를 권장합니다
13
+ VECTOR_DB_TYPE=faiss
14
 
15
  # 기존 FAISS 설정 (VECTOR_DB_TYPE=faiss 인 경우 사용)
16
  EMBEDDING_MODEL=jhgan/ko-sbert-nli
app.py CHANGED
@@ -19,17 +19,33 @@ sys.path.append(current_dir)
19
  # 모듈 임포트
20
  from config import Config
21
  from rag_chatbot import RAGChatbot
22
- from openai_chatbot import OpenAIRAGChatbot
23
  from document_processor import DocumentProcessor
24
 
 
 
 
 
 
 
 
 
 
 
25
  class HuggingFaceApp:
26
  """허깅페이스 Spaces 배포용 앱 클래스"""
27
 
28
  def __init__(self):
29
  # 벡터 DB 타입에 따라 챗봇 선택
30
- if Config.VECTOR_DB_TYPE == "supabase":
31
- self.chatbot = OpenAIRAGChatbot()
 
 
 
 
 
32
  else:
 
 
33
  self.chatbot = RAGChatbot()
34
  self.is_initialized = False
35
 
 
19
  # 모듈 임포트
20
  from config import Config
21
  from rag_chatbot import RAGChatbot
 
22
  from document_processor import DocumentProcessor
23
 
24
+ # OpenAI/Supabase 관련 모듈은 에러 처리 후 임포트
25
+ try:
26
+ from openai_chatbot import OpenAIRAGChatbot
27
+ OPENAI_AVAILABLE = True
28
+ except ImportError as e:
29
+ print(f"OpenAI 모듈 임포트 오류: {e}")
30
+ print("FAISS 모드로 실행됩니다.")
31
+ OPENAI_AVAILABLE = False
32
+ OpenAIRAGChatbot = None
33
+
34
  class HuggingFaceApp:
35
  """허깅페이스 Spaces 배포용 앱 클래스"""
36
 
37
  def __init__(self):
38
  # 벡터 DB 타입에 따라 챗봇 선택
39
+ if Config.VECTOR_DB_TYPE == "supabase" and OPENAI_AVAILABLE and OpenAIRAGChatbot:
40
+ try:
41
+ self.chatbot = OpenAIRAGChatbot()
42
+ except Exception as e:
43
+ print(f"Supabase 챗봇 초기화 오류: {e}")
44
+ print("FAISS 모드로 전환됩니다.")
45
+ self.chatbot = RAGChatbot()
46
  else:
47
+ if Config.VECTOR_DB_TYPE == "supabase" and not OPENAI_AVAILABLE:
48
+ print("OpenAI 모듈을 사용할 수 없어 FAISS 모드로 실행됩니다.")
49
  self.chatbot = RAGChatbot()
50
  self.is_initialized = False
51
 
requirements.txt CHANGED
@@ -26,6 +26,7 @@ PyMuPDF>=1.23.8
26
 
27
  # Supabase
28
  supabase>=2.0.0
 
29
  openai>=1.0.0
30
 
31
  # 유틸리티
 
26
 
27
  # Supabase
28
  supabase>=2.0.0
29
+ websockets>=11.0.3,<12.0.0
30
  openai>=1.0.0
31
 
32
  # 유틸리티