Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -13,8 +13,8 @@ import re
|
|
| 13 |
import traceback
|
| 14 |
import requests # API 호출을 위해 필요
|
| 15 |
|
| 16 |
-
# --- Together AI SDK
|
| 17 |
-
|
| 18 |
|
| 19 |
# --- eventlet monkey patch (Gunicorn + SocketIO 필수!) ---
|
| 20 |
import eventlet
|
|
@@ -67,6 +67,14 @@ if not TOGETHER_API_KEY:
|
|
| 67 |
raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
|
| 68 |
# client = Together(api_key=TOGETHER_API_KEY) # <--- Together SDK 클라이언트 제거
|
| 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
# --- RAG 로딩 ---
|
| 71 |
def load_rag_objects():
|
| 72 |
global region_rag_objects
|
|
@@ -187,26 +195,30 @@ def Gemma3_AI_analysis(query_txt, content_txt):
|
|
| 187 |
query_txt = str(query_txt)
|
| 188 |
prompt = lexi_prompts.use_prompt(lexi_prompts.AI_system_prompt, query_txt=query_txt, content_txt=content_txt)
|
| 189 |
|
| 190 |
-
headers = {
|
| 191 |
-
"Authorization": f"Bearer {TOGETHER_API_KEY}",
|
| 192 |
-
"Content-Type": "application/json"
|
| 193 |
-
}
|
| 194 |
-
payload = {
|
| 195 |
-
"model": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
| 196 |
-
"messages": [{"role": "user", "content": prompt}],
|
| 197 |
-
"max_tokens": 1024,
|
| 198 |
-
"temperature": 0.7
|
| 199 |
-
}
|
| 200 |
-
|
| 201 |
try:
|
| 202 |
-
response =
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
logger.info(f"Together AI 분석 API 호출 실패: {e}")
|
| 209 |
-
traceback.logger.info_exc()
|
| 210 |
return f"AI 분석 중 오류가 발생했습니다: {e}"
|
| 211 |
|
| 212 |
# --- Together AI 번역 (SDK -> requests 직접 호출로 변경) ---
|
|
@@ -214,27 +226,36 @@ def Gemma3_AI_Translate(query_txt):
|
|
| 214 |
query_txt = str(query_txt)
|
| 215 |
prompt = lexi_prompts.use_prompt(lexi_prompts.query_translator, query_txt=query_txt)
|
| 216 |
|
| 217 |
-
headers = {
|
| 218 |
-
"Authorization": f"Bearer {TOGETHER_API_KEY}",
|
| 219 |
-
"Content-Type": "application/json"
|
| 220 |
-
}
|
| 221 |
-
payload = {
|
| 222 |
-
"model": "meta-llama/Llama-3.2-3B-Instruct-Turbo",
|
| 223 |
-
"messages": [{"role": "user", "content": prompt}],
|
| 224 |
-
"max_tokens": 512,
|
| 225 |
-
"temperature": 0.3
|
| 226 |
-
}
|
| 227 |
-
|
| 228 |
try:
|
| 229 |
-
response =
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
logger.info(f"Together AI 번역 API 호출 실패: {e}")
|
| 236 |
-
|
| 237 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
|
| 239 |
# --- 검색 ---
|
| 240 |
def search_DB_from_multiple_regions(query, selected_regions, region_rag_objects):
|
|
|
|
| 13 |
import traceback
|
| 14 |
import requests # API 호출을 위해 필요
|
| 15 |
|
| 16 |
+
# --- Together AI SDK ---
|
| 17 |
+
from together import Together
|
| 18 |
|
| 19 |
# --- eventlet monkey patch (Gunicorn + SocketIO 필수!) ---
|
| 20 |
import eventlet
|
|
|
|
| 67 |
raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
|
| 68 |
# client = Together(api_key=TOGETHER_API_KEY) # <--- Together SDK 클라이언트 제거
|
| 69 |
|
| 70 |
+
try:
|
| 71 |
+
# TOGETHER_API_KEY를 사용해 클라이언트 초기화 (TOGETHER_API_KEY가 코드 내에 정의되어 있다고 가정)
|
| 72 |
+
client = Together(api_key=TOGETHER_API_KEY)
|
| 73 |
+
except NameError:
|
| 74 |
+
# TOGETHER_API_KEY가 정의되지 않은 경우 환경 변수 사용을 시도
|
| 75 |
+
client = Together()
|
| 76 |
+
|
| 77 |
+
|
| 78 |
# --- RAG 로딩 ---
|
| 79 |
def load_rag_objects():
|
| 80 |
global region_rag_objects
|
|
|
|
| 195 |
query_txt = str(query_txt)
|
| 196 |
prompt = lexi_prompts.use_prompt(lexi_prompts.AI_system_prompt, query_txt=query_txt, content_txt=content_txt)
|
| 197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
try:
|
| 199 |
+
response = client.chat.completions.create(
|
| 200 |
+
model="meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
| 201 |
+
messages=[
|
| 202 |
+
{
|
| 203 |
+
"role": "user",
|
| 204 |
+
"content": prompt,
|
| 205 |
+
}
|
| 206 |
+
],
|
| 207 |
+
# 기존 payload의 나머지 설정들을 추가합니다.
|
| 208 |
+
max_tokens=1024,
|
| 209 |
+
temperature=0.7,
|
| 210 |
+
# Together SDK는 기본적으로 요청 실패 시 예외를 발생시킵니다.
|
| 211 |
+
)
|
| 212 |
+
|
| 213 |
+
# 응답에서 결과 텍스트를 추출
|
| 214 |
+
AI_Result = response.choices[0].message.content
|
| 215 |
+
return AI_Result
|
| 216 |
+
|
| 217 |
+
except Exception as e:
|
| 218 |
+
# Together SDK의 오류는 requests.exceptions.RequestException이 아닌 다른 종류의 예외로 발생합니다.
|
| 219 |
+
# 따라서 일반적인 Exception으로 처리하는 것이 안전합니다.
|
| 220 |
logger.info(f"Together AI 분석 API 호출 실패: {e}")
|
| 221 |
+
traceback.print_exc() # traceback.logger.info_exc() 대신 일반 print_exc()를 사용하거나, logging 모듈 설정을 확인하세요.
|
| 222 |
return f"AI 분석 중 오류가 발생했습니다: {e}"
|
| 223 |
|
| 224 |
# --- Together AI 번역 (SDK -> requests 직접 호출로 변경) ---
|
|
|
|
| 226 |
query_txt = str(query_txt)
|
| 227 |
prompt = lexi_prompts.use_prompt(lexi_prompts.query_translator, query_txt=query_txt)
|
| 228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
try:
|
| 230 |
+
response = client.chat.completions.create(
|
| 231 |
+
model="meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
| 232 |
+
messages=[
|
| 233 |
+
{
|
| 234 |
+
"role": "user",
|
| 235 |
+
"content": prompt,
|
| 236 |
+
}
|
| 237 |
+
],
|
| 238 |
+
# 기존 payload의 나머지 설정들을 추가합니다.
|
| 239 |
+
max_tokens=1024,
|
| 240 |
+
temperature=0.7,
|
| 241 |
+
# Together SDK는 기본적으로 요청 실패 시 예외를 발생시킵니다.
|
| 242 |
+
)
|
| 243 |
+
|
| 244 |
+
# 응답에서 결과 텍스트를 추출
|
| 245 |
+
AI_Result = response.choices[0].message.content
|
| 246 |
+
return AI_Result
|
| 247 |
+
|
| 248 |
+
except Exception as e:
|
| 249 |
+
# API 호출 실패 시 처리 (SDK 사용 시 일반 Exception으로 처리)
|
| 250 |
logger.info(f"Together AI 번역 API 호출 실패: {e}")
|
| 251 |
+
|
| 252 |
+
# traceback.logger.info_exc() 대신 traceback.print_exc() 사용 (권장)
|
| 253 |
+
# 만약 기존 로깅 시스템에서 해당 함수를 정의해 사용하고 있다면 그대로 두셔도 됩니다.
|
| 254 |
+
# 여기서는 표준 traceback 모듈을 사용합니다.
|
| 255 |
+
traceback.print_exc()
|
| 256 |
+
|
| 257 |
+
# 번역 실패 시 query_txt 변수를 반환 (기존 코드 로직 반영)
|
| 258 |
+
return query_txt
|
| 259 |
|
| 260 |
# --- 검색 ---
|
| 261 |
def search_DB_from_multiple_regions(query, selected_regions, region_rag_objects):
|