File size: 1,747 Bytes
eeaf866
 
 
 
 
 
629f478
 
eeaf866
00747b9
 
629f478
 
 
 
00747b9
eeaf866
 
 
629f478
eeaf866
 
 
 
 
 
 
 
629f478
 
eeaf866
 
 
 
 
 
 
00747b9
629f478
00747b9
 
 
 
 
 
 
629f478
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
# 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)}"