Spaces:
Paused
Paused
File size: 9,468 Bytes
1d355ad fabb74d bf63def 22032f3 bf63def 10238c2 1d355ad bf63def 22032f3 fabb74d 65e9b21 b806d26 49463e6 6c63571 fabb74d b008b72 fabb74d d83f187 fabb74d 10238c2 fabb74d 217a78d 1b9c391 b0bb7eb 2a3b612 b63c216 e4a855b 2a3b612 b63c216 2a3b612 b63c216 b0bb7eb b63c216 b0bb7eb b63c216 b0bb7eb e4a855b 2a3b612 77a5ad0 b0bb7eb b806d26 b0bb7eb 77a5ad0 b806d26 2a3b612 b806d26 2a3b612 b806d26 fabb74d b806d26 940b028 bf63def 42a90bb b806d26 42a90bb bf63def b806d26 39688bd 03d0703 bf63def a9008b5 b806d26 a9008b5 b806d26 ddb34b4 42a90bb 10238c2 12bb1b9 42a90bb 10238c2 12bb1b9 42a90bb b806d26 a9008b5 c70efbb d83f187 f2b5a15 b806d26 bf63def 42a90bb f2b5a15 12bb1b9 f2b5a15 b806d26 f2b5a15 42a90bb 0f33047 b806d26 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 c9444aa 0f33047 afbd75c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | import os
import time
import streamlit as st
import google.generativeai as genai
from streamlit_extras.colored_header import colored_header
from streamlit_extras.add_vertical_space import add_vertical_space
from streamlit_extras.stoggle import stoggle
# Google Gemini API Key 설정
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# 모델 설정
generation_config = {
"temperature": 0.8,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
generation_config=generation_config,
)
def generate_pairing_recommendation(input_text, input_type, situation):
"""
입력받은 티 또는 다과에 어울리는 페어링 정보를 생성합니다.
"""
SYSTEM_PROMPT = f"""
**티 페어링 마스터입니다!** 🎉
상황/분위기를 고려하여 한국인의 취향에 맞는 티와 다과를 추천합니다.
티 전문가와 다과 전문가의 관점을 통합하여 추천합니다.
입력하신 {input_type} '{input_text}'에 어울리는 최고의 페어링을 찾아드리겠습니다.
'{situation}' 상황에 딱 맞는, 더욱 풍요로운 티타임을 위한 맞춤 추천을 제공합니다.
다음과 같은 요소들을 종합적으로 고려하여 최적의 페어링을 제안합니다.
* **상황 및 분위기:** '{situation}'에 맞춰 여유로운 분위기, 활기찬 분위기, 차분한 분위기 등을 고려합니다.
* **맛과 향의 조화:** 티와 다과의 맛과 향이 서로 보완하고 풍미를 높이는 조합을 찾습니다.
* **질감의 조화:** 부드러운 티와 바삭한 다과, 묵직한 티와 촉촉한 다과 등 다양한 질감의 조합을 고려합니다.
* **온도의 조화:** 따뜻한 티와 차가운 다과, 차가운 티와 따뜻한 다과 등 온도의 조합을 고려합니다.
* **한국인의 취향:** 한국인의 입맛과 선호도를 고려한 맞춤 추천을 제공합니다.
* **전문가의 팁:** 티 우리는 방법, 다과와 함께 즐기기 좋은 음악이나 책 추천 등 전문가의 팁을 제공합니다.
* **다양한 선택지:** 최소 4가지 이상의 다양한 페어링을 추천합니다.
* **상세한 설명:** 각 페어링에 대한 추천 이유와 함께 티와 다과에 대한 자세한 정보 (종류, 맛, 향, 질감, 온도, 원산지, 제조법, 추천 점수 등) 를 제공합니다.
* **차 센서리 정보:** 티의 경우 향, 아로마, 맛, 바디감, 밸런스, 후미 등의 센서리 정보를 포함합니다.
**페어링 구성 요소:**
1. 추천 차/다과 소개 (티/다과 정보 포함)
2. 맛, 향, 질감, 온도 설명 (티의 경우 테이스팅 노트, 센서리 정보를 구체적으로 작성)
3. 추천 이유 (상황/분위기, 미식적 조화, 창의성, 한국인 취향 고려)
4. 추가 페어링 제안 (대체 가능한 티/다과, 곁들임 메뉴 등)
5. 추천 점수 (10점 만점)
6. 추가 정보 (페어링을 더욱 풍부하게 즐길 수 있는 방법)
**입력 종류:** {input_type}
**입력 내용:** {input_text}
**추천 페어링:**
"""
response = model.generate_content(SYSTEM_PROMPT, stream=True)
collected_text = ""
for token in response:
chunk = token.text
collected_text += chunk
yield collected_text
time.sleep(0.03)
# Streamlit Interface
st.set_page_config(
page_title="티 페어링 마스터",
page_icon="🌿",
layout="centered",
initial_sidebar_state="expanded",
)
colored_header(
label="🌿 티 페어링 마스터",
description="🍵 티 또는 다과를 입력하시면 최고의 페어링을 찾아드립니다. 상황과 분위기에 맞는 완벽한 조합으로 향긋한 티타임을 즐겨보세요!",
color_name="green-60",
)
add_vertical_space(1)
# 사이드바 입력 영역
st.sidebar.markdown("## 📝 입력 정보")
# 사용자 입력 영역 (사이드바 탭으로 분리)
tabs = st.sidebar.tabs(["🍰 다과 입력", "🍵 티 입력"])
with tabs[0]:
st.markdown("#### 다과를 입력해 주세요:")
input_text_snack = st.text_input("예: 수제 양갱, 마들렌, 과일 타르트 등", key="input_text_snack")
with tabs[1]:
st.markdown("#### 티를 입력해 주세요:")
input_text_tea = st.text_input("예: 백차, 보이차, 루이보스 등", key="input_text_tea")
# 상황 또는 분위기 입력 (사이드바)
st.sidebar.markdown("#### 상황이나 분위기를 입력해 주세요:")
situation = st.sidebar.text_area("예: 햇살 좋은 오후, 비 오는 날, 독서 시간 등", height=100, key="situation")
# 페어링 추천 받기 버튼
generate_button = st.sidebar.button("✨ 페어링 추천 받기")
# 출력 영역 정의
output_area = st.empty()
# 추천 결과 생성 및 출력
if generate_button:
input_type = "다과" if st.session_state.input_text_snack else "티"
input_text = st.session_state.input_text_snack if st.session_state.input_text_snack else st.session_state.input_text_tea
situation = st.session_state.situation
if input_text: # 입력값이 있을 때만 추천 시작
output_text = ""
output_area.markdown(output_text)
try:
with st.spinner("페어링 정보를 생성 중입니다... 잠시만 기다려 주세요!"):
for partial_output in generate_pairing_recommendation(input_text, input_type, situation):
output_text = partial_output
output_area.markdown(output_text)
except Exception as e:
st.error(f"오류가 발생했습니다: {str(e)}")
else:
st.warning("티 또는 다과를 입력해주세요.")
# 추가 정보 및 FAQ
add_vertical_space(2)
with st.expander("🍵 티 페어링 마스터 FAQ"): # FAQ 내용 접기/펼치기 기능 추가
st.markdown(
"""
**티 페어링 마스터에 오신 것을 환영합니다!** 🎉
이 앱은 단순히 티와 다과를 매칭하는 것을 넘어, **최상의 미식 경험을 선사**하는 것을 목표로 합니다.
티 페어링 전문가의 섬세한 감각과 지식을 바탕으로, **상황과 분위기에 맞는 완벽한 페어링**을 제안합니다.
소중한 사람들과의 티타임, 혼자만의 여유로운 시간, 특별한 날을 더욱 향긋하고 풍요롭게 만들어보세요!
---
**Q1. 어떤 상황에 페어링 추천을 받을 수 있나요?**
A. **어떤 상황이든** 완벽한 티타임을 위한 페어링을 추천해 드립니다! 예를 들어:
* **여유로운 오후:** 부드러운 홍차와 달콤한 스콘
* **친구들과의 티타임:** 상큼한 과일 티와 다채로운 다과
* **비 오는 날:** 따뜻한 허브티와 촉촉한 케이크
* **집중이 필요한 시간:** 맑은 녹차와 담백한 떡
* **기념일/생일:** 고급스러운 티와 특별한 디저트
* **계절별 추천:** 봄에는 향긋한 꽃차, 여름에는 시원한 냉침차, 가을에는 따뜻한 홍차, 겨울에는 깊은 풍미의 보이차
**Q2. 페어링 추천은 어떻게 이루어지나요?**
A. 다음 요소들을 종합적으로 고려하여 **최적의 페어링**을 추천합니다.
* **티 종류:** 녹차, 홍차, 우롱차, 허브티, 과일티 등
* **다과 종류:** 케이크, 쿠키, 마카롱, 초콜릿, 빵, 과일, 떡 등
* **맛과 향의 조화:** 티와 다과의 맛과 향이 서로 보완하고 풍미를 높이는 조합
* **질감의 조화:** 부드러운 티와 바삭한 다과, 촉촉한 티와 단단한 다과 등 다양한 질감의 조합
* **온도의 조화:** 따뜻한 티와 차가운 다과, 시원한 티와 따뜻한 다과 등 온도의 조합
* **상황 및 분위기:** 여유로운 분위기, 활기찬 분위기, 차분한 분위기 등
* **한국인의 취향:** 한국인의 입맛과 선호도를 고려한 맞춤 추천
* **전문가의 팁:** 티 우리는 방법, 다과와 함께 즐기기 좋은 음악이나 책 추천 등
**Q3. 더욱 풍부한 티타임을 즐기기 위한 팁이 있나요?**
A. 네, 추천 페어링과 함께 다음과 같은 팁을 제공합니다.
* **티 우리는 방법:** 티의 종류에 따라 적절한 물 온도와 우리는 시간 안내
* **다과와의 조합 팁:** 티와 다과의 맛과 향을 더욱 잘 어울리게 즐기는 방법
* **분위기 연출 팁:** 티타임에 어울리는 음악, 조명, 소품 등 추천
**Q4. 이 앱은 지속적으로 업데이트되나요?**
A. 네, **최신 트렌드를 반영**하여 지속적으로 업데이트될 예정입니다.
새로운 티와 다과 정보, 다양한 페어링 조합, 전문가의 팁 등을 추가하여 더욱 풍부하고 만족스러운 티타임 경험을 제공하겠습니다.
---
**티 페어링 마스터와 함께 향긋한 티타임을 즐겨보세요!** ☕
""",
) |