pose-like / src /generate_guide.py
huggysynuo's picture
Update src/generate_guide.py
629f478 verified
# generate_guide.py
import openai
import streamlit as st
import os
# πŸ’‘ OPENAI_API_KEY ν™˜κ²½ λ³€μˆ˜ 확인 및 μ„€μ • (μ΄ˆκΈ°ν™” 쀑볡 λ°©μ§€)
@st.cache_resource(show_spinner="OpenAI μ΄ˆκΈ°ν™” 쀑...")
def init_openai():
api_key = os.environ.get("OPENAI_API_KEY")
if not api_key:
raise RuntimeError(
"❌ OPENAI_API_KEYκ°€ ν™˜κ²½λ³€μˆ˜λ‘œ μ„€μ •λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. "
"Hugging Face Secrets에 'OPENAI_API_KEY'λ₯Ό λ“±λ‘ν•΄μ£Όμ„Έμš”."
)
openai.api_key = api_key
return openai
# πŸ“š 촬영 κ°€μ΄λ“œ 생성 ν•¨μˆ˜
def generate_photo_guide(user_caption: str, selected_image_descriptions: list) -> str:
prompt = f"""
μ•„λž˜λŠ” μ‚¬μš©μžκ°€ μ—…λ‘œλ“œν•œ 사진 μ„€λͺ…μž…λ‹ˆλ‹€:
- {user_caption}
μ•„λž˜λŠ” μ‚¬μš©μžκ°€ μ°Έκ³ ν•˜κ³  μ‹Άλ‹€κ³  μ„ νƒν•œ 사진 μ„€λͺ…λ“€μž…λ‹ˆλ‹€:
{chr(10).join([f"- {desc}" for desc in selected_image_descriptions])}
μœ„ 정보λ₯Ό μ’…ν•©ν•˜μ—¬, μ‚¬μš©μžκ°€ 사진을 λ‹€μ‹œ 찍을 λ•Œ μ°Έκ³ ν•  수 μžˆλ„λ‘
μ•„λž˜μ˜ λ‚΄μš©μ„ μžμ—°μ–΄λ‘œ μž‘μ„±ν•΄μ£Όμ„Έμš”:
1. μ–΄λ–€ 포즈λ₯Ό μ·¨ν•˜λ©΄ 쒋을지
2. 카메라 μœ„μΉ˜λŠ” 어디에 두면 쒋은지 (높이, 각도 λ“±)
3. 인물 λ°°μΉ˜λŠ” μ–΄λ–»κ²Œ ν•˜λ©΄ 쒋은지 (μ •λ©΄/μΈ‘λ©΄, 거리 λ“±)
4. 전체 ꡬ도 팁이 μžˆλ‹€λ©΄ μ•Œλ €μ£Όμ„Έμš”
"""
try:
init_openai() # βœ… API ν‚€ μ„€μ • 보μž₯
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
)
return response.choices[0].message.content.strip()
except Exception as e:
return f"❌ GPT ν˜ΈμΆœμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€: {str(e)}"