Rulga commited on
Commit
f2dcec0
·
1 Parent(s): 0caff5c

Add environment variable checks and improve cache directory initialization in app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -10
app.py CHANGED
@@ -1,5 +1,3 @@
1
- this_will_crash = 1/0 # Деление на ноль вызовет исключение при запуске
2
-
3
  import os
4
  import sys
5
  import json
@@ -38,6 +36,12 @@ warnings.filterwarnings('ignore')
38
  # Initialize environment variables
39
  load_dotenv()
40
 
 
 
 
 
 
 
41
  # Проверяем наличие и права доступа к директориям кэша
42
  cache_dir = "/app/.cache"
43
  if not os.path.exists(cache_dir):
@@ -54,9 +58,14 @@ logger.info(f"Cache directories initialized: {cache_dir}, {hf_cache_dir}")
54
  # Initialize FastAPI app
55
  app = FastAPI(title="Status Law Assistant API")
56
 
57
- # Конфигурация базы знаний
 
 
58
  KB_CONFIG_PATH = "vector_store/kb_config.json"
59
  CACHE_DIR = "cache"
 
 
 
60
  os.makedirs(CACHE_DIR, exist_ok=True)
61
 
62
  def get_kb_config():
@@ -83,7 +92,6 @@ class ChatResponse(BaseModel):
83
  context: Optional[str] = None
84
 
85
  # Global variables
86
- VECTOR_STORE_PATH = "vector_store"
87
  URLS = [
88
  "https://status.law",
89
  "https://status.law/about",
@@ -117,14 +125,13 @@ class CustomCallbackHandler(ConsoleCallbackHandler):
117
  json.dump(log_entry, f, ensure_ascii=False)
118
  f.write("\n")
119
 
120
- # В начале файла добавим константу с именем модели
121
- EMBEDDING_MODEL = "sentence-transformers/paraphrase-multilingual-mpnet-base-v2"
122
-
123
  def init_models():
 
124
  try:
125
  callback_handler = CustomCallbackHandler()
126
  callback_manager = CallbackManager([callback_handler])
127
 
 
128
  llm = ChatGroq(
129
  model_name="llama-3.3-70b-versatile",
130
  temperature=0.6,
@@ -132,12 +139,13 @@ def init_models():
132
  callback_manager=callback_manager
133
  )
134
 
 
135
  embeddings = HuggingFaceEmbeddings(
136
- model_name=EMBEDDING_MODEL, # Используем константу
137
- cache_folder="/app/.cache/huggingface" # Явно указываем путь к кэшу
138
  )
139
 
140
- logger.info(f"Models initialized successfully. Using embedding model: {EMBEDDING_MODEL}")
141
  return llm, embeddings
142
 
143
  except Exception as e:
 
 
 
1
  import os
2
  import sys
3
  import json
 
36
  # Initialize environment variables
37
  load_dotenv()
38
 
39
+ # Проверяем наличие необходимых переменных окружения
40
+ required_env_vars = ["GROQ_API_KEY"]
41
+ missing_vars = [var for var in required_env_vars if not os.getenv(var)]
42
+ if missing_vars:
43
+ raise EnvironmentError(f"Missing required environment variables: {', '.join(missing_vars)}")
44
+
45
  # Проверяем наличие и права доступа к директориям кэша
46
  cache_dir = "/app/.cache"
47
  if not os.path.exists(cache_dir):
 
58
  # Initialize FastAPI app
59
  app = FastAPI(title="Status Law Assistant API")
60
 
61
+ # Константы
62
+ EMBEDDING_MODEL = "sentence-transformers/paraphrase-multilingual-mpnet-base-v2"
63
+ VECTOR_STORE_PATH = "vector_store"
64
  KB_CONFIG_PATH = "vector_store/kb_config.json"
65
  CACHE_DIR = "cache"
66
+
67
+ # Создаем необходимые директории
68
+ os.makedirs(VECTOR_STORE_PATH, exist_ok=True)
69
  os.makedirs(CACHE_DIR, exist_ok=True)
70
 
71
  def get_kb_config():
 
92
  context: Optional[str] = None
93
 
94
  # Global variables
 
95
  URLS = [
96
  "https://status.law",
97
  "https://status.law/about",
 
125
  json.dump(log_entry, f, ensure_ascii=False)
126
  f.write("\n")
127
 
 
 
 
128
  def init_models():
129
+ """Инициализация моделей с обработкой ошибок"""
130
  try:
131
  callback_handler = CustomCallbackHandler()
132
  callback_manager = CallbackManager([callback_handler])
133
 
134
+ # Инициализация LLM
135
  llm = ChatGroq(
136
  model_name="llama-3.3-70b-versatile",
137
  temperature=0.6,
 
139
  callback_manager=callback_manager
140
  )
141
 
142
+ # Инициализация embeddings с явным указанием кэша
143
  embeddings = HuggingFaceEmbeddings(
144
+ model_name=EMBEDDING_MODEL,
145
+ cache_folder=hf_cache_dir
146
  )
147
 
148
+ logger.info("Models initialized successfully")
149
  return llm, embeddings
150
 
151
  except Exception as e: