Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -15,6 +15,10 @@ import leximind_prompts
|
|
| 15 |
# --- Together AI SDK ---
|
| 16 |
from together import Together
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
# --- Flask & SocketIO 설정 ---
|
| 19 |
app = Flask(__name__)
|
| 20 |
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
|
|
@@ -42,11 +46,10 @@ lexi_prompts = leximind_prompts.PromptLibrary()
|
|
| 42 |
# --- RAG 객체 ---
|
| 43 |
region_rag_objects = {}
|
| 44 |
|
| 45 |
-
# --- Together AI 클라이언트
|
| 46 |
TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY")
|
| 47 |
if not TOGETHER_API_KEY:
|
| 48 |
raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
|
| 49 |
-
|
| 50 |
client = Together(api_key=TOGETHER_API_KEY)
|
| 51 |
|
| 52 |
# --- RAG 로딩 ---
|
|
@@ -118,7 +121,8 @@ def get_reg_list():
|
|
| 118 |
all_reg_list_part = []
|
| 119 |
for region in selected_regions:
|
| 120 |
rag = region_rag_objects.get(region)
|
| 121 |
-
if not rag:
|
|
|
|
| 122 |
try:
|
| 123 |
conn = rag["sqlite_conn"]
|
| 124 |
parts = reg_embedding_system.get_unique_metadata_values(conn, "regulation_part")
|
|
@@ -190,7 +194,8 @@ def search_DB_from_multiple_regions(query, selected_regions, region_rag_objects)
|
|
| 190 |
combined_results = []
|
| 191 |
for region in selected_regions:
|
| 192 |
rag = region_rag_objects.get(region)
|
| 193 |
-
if not rag:
|
|
|
|
| 194 |
|
| 195 |
retriever = rag["ensemble_retriever"]
|
| 196 |
vectorstore = rag["vectorstore"]
|
|
@@ -235,17 +240,14 @@ def RegAI(query, Rag_Results, ResultFile_FolderAddress):
|
|
| 235 |
|
| 236 |
# --- 실행 ---
|
| 237 |
if __name__ == '__main__':
|
| 238 |
-
# 로컬 개발용
|
| 239 |
threading.Thread(target=load_rag_objects, daemon=True).start()
|
| 240 |
time.sleep(2)
|
| 241 |
socketio.emit('message', {'message': '데이터 로딩 시작...'})
|
| 242 |
socketio.run(app, host='0.0.0.0', port=7860, debug=False)
|
| 243 |
else:
|
| 244 |
-
# Gunicorn
|
| 245 |
-
# (Gunicorn 워커가 시작된 후 로딩 시작되도록)
|
| 246 |
import atexit
|
| 247 |
loading_thread = threading.Thread(target=load_rag_objects, daemon=True)
|
| 248 |
loading_thread.start()
|
| 249 |
-
|
| 250 |
-
# 서버 종료 시 정리
|
| 251 |
atexit.register(cleanup_connections)
|
|
|
|
| 15 |
# --- Together AI SDK ---
|
| 16 |
from together import Together
|
| 17 |
|
| 18 |
+
# --- eventlet monkey patch (Gunicorn + SocketIO 필수!) ---
|
| 19 |
+
import eventlet
|
| 20 |
+
eventlet.monkey_patch()
|
| 21 |
+
|
| 22 |
# --- Flask & SocketIO 설정 ---
|
| 23 |
app = Flask(__name__)
|
| 24 |
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
|
|
|
|
| 46 |
# --- RAG 객체 ---
|
| 47 |
region_rag_objects = {}
|
| 48 |
|
| 49 |
+
# --- Together AI 클라이언트 ---
|
| 50 |
TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY")
|
| 51 |
if not TOGETHER_API_KEY:
|
| 52 |
raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
|
|
|
|
| 53 |
client = Together(api_key=TOGETHER_API_KEY)
|
| 54 |
|
| 55 |
# --- RAG 로딩 ---
|
|
|
|
| 121 |
all_reg_list_part = []
|
| 122 |
for region in selected_regions:
|
| 123 |
rag = region_rag_objects.get(region)
|
| 124 |
+
if not rag:
|
| 125 |
+
continue
|
| 126 |
try:
|
| 127 |
conn = rag["sqlite_conn"]
|
| 128 |
parts = reg_embedding_system.get_unique_metadata_values(conn, "regulation_part")
|
|
|
|
| 194 |
combined_results = []
|
| 195 |
for region in selected_regions:
|
| 196 |
rag = region_rag_objects.get(region)
|
| 197 |
+
if not rag:
|
| 198 |
+
continue
|
| 199 |
|
| 200 |
retriever = rag["ensemble_retriever"]
|
| 201 |
vectorstore = rag["vectorstore"]
|
|
|
|
| 240 |
|
| 241 |
# --- 실행 ---
|
| 242 |
if __name__ == '__main__':
|
| 243 |
+
# 로컬 개발용
|
| 244 |
threading.Thread(target=load_rag_objects, daemon=True).start()
|
| 245 |
time.sleep(2)
|
| 246 |
socketio.emit('message', {'message': '데이터 로딩 시작...'})
|
| 247 |
socketio.run(app, host='0.0.0.0', port=7860, debug=False)
|
| 248 |
else:
|
| 249 |
+
# Gunicorn용: 워커 시작 후 로딩
|
|
|
|
| 250 |
import atexit
|
| 251 |
loading_thread = threading.Thread(target=load_rag_objects, daemon=True)
|
| 252 |
loading_thread.start()
|
|
|
|
|
|
|
| 253 |
atexit.register(cleanup_connections)
|