Update app.py
Browse files
app.py
CHANGED
|
@@ -11,7 +11,7 @@ import requests
|
|
| 11 |
from xml.etree import ElementTree
|
| 12 |
|
| 13 |
# Google Gemini API 키 설정
|
| 14 |
-
genai.configure(api_key=os.environ
|
| 15 |
|
| 16 |
# 모델 설정
|
| 17 |
generation_config = {
|
|
@@ -336,11 +336,11 @@ def calculate_siju(birth_hour, lunIljin):
|
|
| 336 |
('병', '유'): '정유(丁酉)', ('신', '유'): '정유(丁酉)',
|
| 337 |
('정', '유'): '기유(己酉)', ('임', '유'): '기유(己酉)',
|
| 338 |
('무', '유'): '신유(辛酉)', ('계', '유'): '신유(辛酉)',
|
| 339 |
-
('갑', '술'): '갑술(甲戌)', ('기', '술'): '갑술(甲戌)',
|
| 340 |
-
('을', '술'): '병술(丙戌)', ('경', '술'): '병술(丙戌)',
|
| 341 |
-
('병', '술'): '무술(戊戌)', ('신', '술'): '무술(戊戌)',
|
| 342 |
-
('정', '술'): '경술(庚戌)', ('임', '술'): '경술(庚戌)',
|
| 343 |
-
('무', '술'): '임술(壬戌)', ('계', '술'): '임술(壬戌)',
|
| 344 |
('갑', '해'): '을해(乙亥)', ('기', '해'): '을해(乙亥)',
|
| 345 |
('을', '해'): '정해(丁亥)', ('경', '해'): '정해(丁亥)',
|
| 346 |
('병', '해'): '기해(己亥)', ('신', '해'): '기해(己亥)',
|
|
@@ -359,13 +359,7 @@ def get_lunar_info(birth_year, birth_month, birth_day, birth_hour):
|
|
| 359 |
service_key = "EuBjt%2B2t0KzYt5Ri%2Bzs56oymt9kHJ8uPIOV7m6UMKnOV8cpwj02EiRqMEudX%2F%2FVTKdMnwaLH0igRwY57YUplEQ%3D%3D"
|
| 360 |
url = f"{base_url}?solYear={birth_year}&solMonth={birth_month}&solDay={birth_day}&ServiceKey={service_key}"
|
| 361 |
|
| 362 |
-
print(f"API 요청 URL: {url}") # API 요청 URL 로깅
|
| 363 |
-
|
| 364 |
response = requests.get(url)
|
| 365 |
-
print(f"API 응답 상태 코드: {response.status_code}") # API 응답 상태 코드 로깅
|
| 366 |
-
print(f"API 응답 헤더: {response.headers}") # API 응답 헤더 로깅
|
| 367 |
-
print(f"API 응답 내용 (일부): {response.content[:500]}") # API 응답 내용 일부 로깅
|
| 368 |
-
|
| 369 |
if response.status_code == 200:
|
| 370 |
root = ElementTree.fromstring(response.content)
|
| 371 |
|
|
@@ -375,8 +369,6 @@ def get_lunar_info(birth_year, birth_month, birth_day, birth_hour):
|
|
| 375 |
|
| 376 |
siju = calculate_siju(birth_hour, lunIljin)
|
| 377 |
|
| 378 |
-
print(f"년주: {lunSecha}, 월주: {lunWolgeon}, 일주: {lunIljin}, 시주: {siju}") # 만세력 정보 로깅
|
| 379 |
-
|
| 380 |
return {
|
| 381 |
"년주": lunSecha,
|
| 382 |
"월주": lunWolgeon,
|
|
@@ -409,9 +401,8 @@ def calculate_manseryeok(gender, birth_year, birth_month, birth_day, birth_hour)
|
|
| 409 |
"시주": lunar_info.get("시주", "정보 없음"),
|
| 410 |
}
|
| 411 |
|
| 412 |
-
print(f"계산된 만세력 결과: {manseryeok_result}") # 최종 만세력 결과 로깅
|
| 413 |
return manseryeok_result
|
| 414 |
-
|
| 415 |
# 사주 해석 생성 함수 (수정됨)
|
| 416 |
def generate_saju_interpretation(user_info, selected_style):
|
| 417 |
name, gender, birthdate, birthtime = user_info
|
|
@@ -428,7 +419,7 @@ def generate_saju_interpretation(user_info, selected_style):
|
|
| 428 |
일주=manseryeok_result['일주'],
|
| 429 |
시주=manseryeok_result['시주']
|
| 430 |
)
|
| 431 |
-
|
| 432 |
# 나머지 정보 추가
|
| 433 |
prompt += f"\n이름: {name}\n성별: {gender}\n생년월일: {birthdate}\n태어난 시간: {birthtime}"
|
| 434 |
|
|
@@ -486,7 +477,7 @@ def chat_with_ai(prompt, chat_history, user_info):
|
|
| 486 |
except Exception as e:
|
| 487 |
st.error(f"챗봇 응답 생성 오류: {e}")
|
| 488 |
return ""
|
| 489 |
-
|
| 490 |
# Streamlit 인터페이스
|
| 491 |
st.set_page_config(page_title="사주명리 AI", page_icon="🔮")
|
| 492 |
|
|
@@ -627,23 +618,23 @@ with st.expander("❓ 사주명리 AI FAQ"):
|
|
| 627 |
st.write(
|
| 628 |
"""
|
| 629 |
**Q1. 사주명리 AI는 어떤 기능을 제공하나요?**
|
| 630 |
-
|
| 631 |
A. 이 앱은 사용자가 입력한 생년월일시 정보를 바탕으로 만세력을 생성하고 사주를 해석해주는 AI 도구입니다. 사주 해석에는 오행 분석, 십신 분석, 용신 분석, 대운 분석, 세운 분석, 종합 운세, 조언 등이 포함됩니다. 또한, 사주 해석 후 채팅 모드를 통해 추가 질문을 할 수 있습니다.
|
| 632 |
-
|
| 633 |
**Q2. 사주 해석은 어떻게 이루어지나요?**
|
| 634 |
-
|
| 635 |
A. 이 AI는 사용자가 입력한 생년월일시 정보를 바탕으로 만세력을 생성하고, 생성된 만세력과 사주명리 이론에 따라 해석을 생성합니다.
|
| 636 |
-
|
| 637 |
**Q3. 사주 해석은 얼마나 정확한가요?**
|
| 638 |
-
|
| 639 |
A. 사주 해석은 통계적인 경향성을 바탕으로 하기 때문에, 개인의 삶에 대한 100% 정확한 예측은 아닙니다. 사주 해석은 참고용으로만 활용하시기 바랍니다.
|
| 640 |
-
|
| 641 |
**Q4. 사주 해석 결과가 마음에 들지 않으면 어떻게 하나요?**
|
| 642 |
-
|
| 643 |
A. 사주 해석은 개인의 선택과 노력에 따라 달라질 수 있습니다. 사주 해석 결과가 마음에 들지 않더라도, 긍정적인 마음으로 미래를 개척해 나가시기 바랍니다.
|
| 644 |
-
|
| 645 |
**Q5. 채팅 모드에서는 어떤 질문을 할 수 있나요?**
|
| 646 |
-
|
| 647 |
A. 사주 해석과 관련된 질문이라면 무엇이든 할 수 있습니다. 예를 들어, "제 사주에서 어떤 오행이 부족한가요?", "올해 제 연애운은 어떤가요?", "제 사주에 맞는 직업은 무엇인가요?"와 같은 질문을 할 수 있습니다.
|
| 648 |
"""
|
| 649 |
)
|
|
|
|
| 11 |
from xml.etree import ElementTree
|
| 12 |
|
| 13 |
# Google Gemini API 키 설정
|
| 14 |
+
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
|
| 15 |
|
| 16 |
# 모델 설정
|
| 17 |
generation_config = {
|
|
|
|
| 336 |
('병', '유'): '정유(丁酉)', ('신', '유'): '정유(丁酉)',
|
| 337 |
('정', '유'): '기유(己酉)', ('임', '유'): '기유(己酉)',
|
| 338 |
('무', '유'): '신유(辛酉)', ('계', '유'): '신유(辛酉)',
|
| 339 |
+
('갑', '술'): '갑술(甲戌) ', ('기', '술'): '갑술(甲戌)',
|
| 340 |
+
('을', '술'): '병술(丙戌) ', ('경', '술'): '병술(丙戌)',
|
| 341 |
+
('병', '술'): '무술(戊戌) ', ('신', '술'): '무술(戊戌)',
|
| 342 |
+
('정', '술'): '경술(庚戌) ', ('임', '술'): '경술(庚戌)',
|
| 343 |
+
('무', '술'): '임술(壬戌) ', ('계', '술'): '임술(壬戌)',
|
| 344 |
('갑', '해'): '을해(乙亥)', ('기', '해'): '을해(乙亥)',
|
| 345 |
('을', '해'): '정해(丁亥)', ('경', '해'): '정해(丁亥)',
|
| 346 |
('병', '해'): '기해(己亥)', ('신', '해'): '기해(己亥)',
|
|
|
|
| 359 |
service_key = "EuBjt%2B2t0KzYt5Ri%2Bzs56oymt9kHJ8uPIOV7m6UMKnOV8cpwj02EiRqMEudX%2F%2FVTKdMnwaLH0igRwY57YUplEQ%3D%3D"
|
| 360 |
url = f"{base_url}?solYear={birth_year}&solMonth={birth_month}&solDay={birth_day}&ServiceKey={service_key}"
|
| 361 |
|
|
|
|
|
|
|
| 362 |
response = requests.get(url)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 363 |
if response.status_code == 200:
|
| 364 |
root = ElementTree.fromstring(response.content)
|
| 365 |
|
|
|
|
| 369 |
|
| 370 |
siju = calculate_siju(birth_hour, lunIljin)
|
| 371 |
|
|
|
|
|
|
|
| 372 |
return {
|
| 373 |
"년주": lunSecha,
|
| 374 |
"월주": lunWolgeon,
|
|
|
|
| 401 |
"시주": lunar_info.get("시주", "정보 없음"),
|
| 402 |
}
|
| 403 |
|
|
|
|
| 404 |
return manseryeok_result
|
| 405 |
+
|
| 406 |
# 사주 해석 생성 함수 (수정됨)
|
| 407 |
def generate_saju_interpretation(user_info, selected_style):
|
| 408 |
name, gender, birthdate, birthtime = user_info
|
|
|
|
| 419 |
일주=manseryeok_result['일주'],
|
| 420 |
시주=manseryeok_result['시주']
|
| 421 |
)
|
| 422 |
+
|
| 423 |
# 나머지 정보 추가
|
| 424 |
prompt += f"\n이름: {name}\n성별: {gender}\n생년월일: {birthdate}\n태어난 시간: {birthtime}"
|
| 425 |
|
|
|
|
| 477 |
except Exception as e:
|
| 478 |
st.error(f"챗봇 응답 생성 오류: {e}")
|
| 479 |
return ""
|
| 480 |
+
|
| 481 |
# Streamlit 인터페이스
|
| 482 |
st.set_page_config(page_title="사주명리 AI", page_icon="🔮")
|
| 483 |
|
|
|
|
| 618 |
st.write(
|
| 619 |
"""
|
| 620 |
**Q1. 사주명리 AI는 어떤 기능을 제공하나요?**
|
| 621 |
+
|
| 622 |
A. 이 앱은 사용자가 입력한 생년월일시 정보를 바탕으로 만세력을 생성하고 사주를 해석해주는 AI 도구입니다. 사주 해석에는 오행 분석, 십신 분석, 용신 분석, 대운 분석, 세운 분석, 종합 운세, 조언 등이 포함됩니다. 또한, 사주 해석 후 채팅 모드를 통해 추가 질문을 할 수 있습니다.
|
| 623 |
+
|
| 624 |
**Q2. 사주 해석은 어떻게 이루어지나요?**
|
| 625 |
+
|
| 626 |
A. 이 AI는 사용자가 입력한 생년월일시 정보를 바탕으로 만세력을 생성하고, 생성된 만세력과 사주명리 이론에 따라 해석을 생성합니다.
|
| 627 |
+
|
| 628 |
**Q3. 사주 해석은 얼마나 정확한가요?**
|
| 629 |
+
|
| 630 |
A. 사주 해석은 통계적인 경향성을 바탕으로 하기 때문에, 개인의 삶에 대한 100% 정확한 예측은 아닙니다. 사주 해석은 참고용으로만 활용하시기 바랍니다.
|
| 631 |
+
|
| 632 |
**Q4. 사주 해석 결과가 마음에 들지 않으면 어떻게 하나요?**
|
| 633 |
+
|
| 634 |
A. 사주 해석은 개인의 선택과 노력에 따라 달라질 수 있습니다. 사주 해석 결과가 마음에 들지 않더라도, 긍정적인 마음으로 미래를 개척해 나가시기 바랍니다.
|
| 635 |
+
|
| 636 |
**Q5. 채팅 모드에서는 어떤 질문을 할 수 있나요?**
|
| 637 |
+
|
| 638 |
A. 사주 해석과 관련된 질문이라면 무엇이든 할 수 있습니다. 예를 들어, "제 사주에서 어떤 오행이 부족한가요?", "올해 제 연애운은 어떤가요?", "제 사주에 맞는 직업은 무엇인가요?"와 같은 질문을 할 수 있습니다.
|
| 639 |
"""
|
| 640 |
)
|