๐จ ๊ฐ์ ์ ์์ผ๋ก ๋ฒ์ญํ๋ค โ AI Mood Colors
(๋ชฝ๋ธ ๋ฐ์ด๋ธ์ฝ๋ฉ ์คํ #2)
๐ก ์ค๋์ ์คํ ์ฃผ์
๊ฐ์ ์๋ ์จ๋๊ฐ ์๋ค.
์ฌํ์ ํธ๋ฅด๊ณ , ํ๋ณต์ ๋
ธ๋๊ณ , ๋ถ๋
ธ๋ ๋ถ๋ค.
๊ทธ๋ ๋ค๋ฉด AI๊ฐ ๊ฐ์ ์ ์์ผ๋ก ๋ฐ๊ฟ ์ ์์๊น?
์ค๋์ ๋ชฉํ๋,
๋ฌธ์ฅ ์ ๊ฐ์ ์ ๋ถ์ํด HEX ์์ ์ฝ๋๋ก ์๊ฐํํ๋ ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
๐งฐ ์ฌ์ฉํ ๋๊ตฌ
| ๋๊ตฌ | ์ญํ | ์ค๋ช |
|---|---|---|
| ๐จ matplotlib | ์์ ์๊ฐํ | ๋ง๋๊ทธ๋ํ ํํ๋ก ๊ฐ์ ๋ณ ์์ ํ๋ ํธ๋ฅผ ๊ทธ๋ ค์ค๋๋ค. |
| ๐๏ธ colorsys | ์์ ๋ณํ | RGB โ HSV โ HLS ์์ ์ฒด๊ณ ๊ฐ ๋ณํ์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ์ ๊ฐ๋๋ฅผ ์์กฐ๋ก ๋ฐ๊พธ๋ ํต์ฌ ๋ชจ๋์ ๋๋ค. |
| ๐ง openai | ๊ฐ์ ๋ถ์ + ์์ ์ถ์ฒ | ๋ฌธ์ฅ ๋ด ๊ฐ์ ์ ํด์ํ๊ณ ๊ทธ ๊ฐ์ ์ ํํํ๋ ์์(HEX)์ ์ ์ํฉ๋๋ค. |
| ๐ป VS Code | ๊ฐ๋ฐ ํ๊ฒฝ | ์ฝ๋ ํธ์ง ๋ฐ ์คํ. ํฐ๋ฏธ๋ ๋จ์ถํค Ctrl + ~ ํ์ฉ. |
๐งฉ 1๏ธโฃ ํ๊ฒฝ ์ธํ
์ด์ ์คํ์์ ๋ง๋ ๊ฐ์ํ๊ฒฝ(venv)์ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
์๋ ๋ช
๋ น์ผ๋ก ํ์ํ ๋ชจ๋์ ์ค์นํ์ธ์.
pip install openai matplotlib colorsys
API ํค๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ๊ธ๋ฐ์ ํ๊ฒฝ๋ณ์๋ก ์ค์ ํฉ๋๋ค.
setx OPENAI_API_KEY "your_api_key_here" # Windows ๊ธฐ์ค
export OPENAI_API_KEY="your_api_key_here" # macOS/Linux ๊ธฐ์ค
๐ง 2๏ธโฃ AI์๊ฒ ์์ ๋ฌป๋ค
์ด์ AI์๊ฒ ๊ฐ์ ๊ณผ ์์ ๋์์ ๋ถํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, โ๋ฐ๋ปํ ์ปคํผ ํฅ์ด ํผ์ก๋คโ๋ ์ด๋ค ์์ผ๊น?
import openai
openai.api_key = "YOUR_API_KEY"
prompt = "๋ฌธ์ฅ '๋ฐ๋ปํ ์ปคํผ ํฅ์ด ํผ์ก๋ค'๋ฅผ ํํํ๋ HEX ์์ 3๊ฐ์ง๋ฅผ ์ถ์ฒํด์ค."
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": prompt}]
)
print(response.choices[0].message.content)
์์ ์ถ๋ ฅ
#C4A484, #FFD8A9, #8B4513
โ ๋ถ๋๋ฌ์ด ๋ธ๋ผ์ด ํค. ๋ฐ๋ปํจ๊ณผ ์์ ๊ฐ์ ์๊ฐ์ ์ผ๋ก ํํ.
๐จ 3๏ธโฃ ์์ ํ๋ ํธ ์๊ฐํ
AI๊ฐ ์ถ์ฒํ ์์ ์ฝ๋๋ฅผ ๋ง๋๊ทธ๋ํ๋ก ํํํด๋ณด์.
import matplotlib.pyplot as plt
colors = ["#C4A484", "#FFD8A9", "#8B4513"]
plt.figure(figsize=(6,2))
plt.bar(range(len(colors)), [1]*len(colors), color=colors)
plt.title("AI๊ฐ ์ ์ํ ๊ฐ์ ์์ ํ๋ ํธ")
plt.axis("off")
plt.show()
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ด๋ ๊ฒ ํ์๋ฉ๋๋ค.
์ด ๋ง๋์ ๊ฐ ์์ ๊ฐ์ ์ ํ ๋จ๋ฉด์
๋๋ค.
์ปคํผ์ ํฅ, ๋น์ ๋ฐ๋ปํจ, ๊ทธ๋ ์ ๊ณต๊ธฐ โ
์ด ๋ชจ๋ ๊ฒ ํ๋์ HEX๋ก ๋ฒ์ญ๋ ์
์
๋๋ค.
๐งฎ 4๏ธโฃ ์์๊ฐ์ ๊ฐ์ ์ธ๊ธฐ๋ก ๋ณํ
๊ฐ์ ์ด ๊ฐํ ์๋ก ์์ ์ฑ๋๋ฅผ ๋์ด๊ณ ,
์์ํ ์๋ก ํ์์ ๊ฐ๊น์์ง๋๋ก ์ค์ ํฉ๋๋ค.
import colorsys
emotion_intensity = 0.8 # 0.0 ~ 1.0
base_color = (30/360, 0.5, 0.6) # (Hue, Saturation, Value)
adjusted = colorsys.hsv_to_rgb(base_color[0], emotion_intensity, base_color[2])
rgb = tuple(int(c*255) for c in adjusted)
hex_color = '#%02x%02x%02x' % rgb
print(f"๊ฐ์ ๊ฐ๋ {emotion_intensity} โ ์์: {hex_color}")
์ถ๋ ฅ ์์:
๊ฐ์ ๊ฐ๋ 0.8 โ ์์: #cc4d4d
โ ๊ฐ๋ ฌํ ๊ฐ์ ์ผ์๋ก ๋ ์ ๋ช
ํ ๋ถ์ ํค.
๐ 5๏ธโฃ ๋ฌธ์ฅ์ ๋ฐ๋ผ ํ๋ ํธ ์๋ ์์ฑํ๊ธฐ
def generate_palette(sentence):
prompt = f"๋ฌธ์ฅ '{sentence}'์ ํํํ๋ HEX ์์ 3๊ฐ๋ฅผ ์ถ์ฒํด์ค."
res = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": prompt}]
)
return res.choices[0].message.content.split()
print(generate_palette("์ค๋์ ๋น๊ฐ ์ค์ง๋ง ๋ง์์ ํ์จํ๋ค."))
์ถ๋ ฅ ์์:
['#6D8299', '#A8C3BC', '#DDE6E8']
โ ํ์๋น ๋ธ๋ฃจ, ํ๋ฆฌ์ง๋ง ์ฐจ๋ถํ ๊ฐ์ ์ ํ๋ ํธ.
๐ฌ 6๏ธโฃ ์ค๋์ ์คํ์ ๋ง์น๋ฉฐ
AI๊ฐ ์์ ๊ณ ๋ฅผ ๋๋ง๋ค,
๋ด ๊ฐ์ ์ ๊ฒฐ์ด ํ๋ฉด ์์ ๋ฌผ๊ฐ์ฒ๋ผ ๋ฒ์ก๋ค.
์์ ์ฝ๋๋ ๋จ์ํ ์ซ์ ์กฐํฉ์ด์ง๋ง,
๊ทธ ์์๋ ๊ฐ์ ์ ์ง๋์ด ์๋ค.
๊ธฐ์ ์ด ๊ฐ์ ์ ํด์ํ๋ ๊ฒ ์๋๋ผ,
๊ฐ์ ์ ์๋ก์ด ์ธ์ด๋ก ๋ฒ์ญํ๋ ์๊ฐ์ด๋ค.
AI๋ ๋์ ๊ฐ์ ์ ์ดํดํ์ง ๋ชปํ์ง๋ง,
๋ด๊ฐ ๊ฐ์ ์ ๋ค๋ฅธ ์์ ์ผ๋ก ๋ฐ๋ผ๋ณด๊ฒ ๋ง๋ ๋ค.
์ด๊ฒ ๋ฐ๋ก ๋ชฝ๋ธ์ด ๋งํ๋ โ๋ฐ์ด๋ธ์ฝ๋ฉโ.
๊ธฐ์ ์ ๊ฐ์ ์ ๋์ฒดํ์ง ์๊ณ ,
๊ทธ ๊ฐ์ ์ ๋ ์ ๊ตํ๊ฒ ๋๋ผ๊ฒ ํ๋ค.
๐ช ๋ค์ ์คํ ์๊ณ
โAI๊ฐ ๋ด ๊ฐ์ ์ ์์
์ผ๋ก ๋ฐ๊พผ๋ค๋ฉด?โ
ํ
์คํธ โ ์ฌ์ด๋๋ก ๊ฐ์ ์ ํํํ๋ ์คํ,
ใ๋ฐ์ด๋ธ์ฝ๋ฉ #3: Sound of Moodใ์์ ์ด์ด์ง๋๋ค.
๐ ํด์ํ๊ทธ
#๋ชฝ๋ธ #๋ฐ์ด๋ธ์ฝ๋ฉ #AI์์ํ๋ ํธ #๊ฐ์ ์๊ฐํ #ํ์ด์ฌ์คํ #openai #matplotlib #colorsys #AI์ฐฝ์