๐ŸŽจ ๊ฐ์ •์„ ์ƒ‰์œผ๋กœ ๋ฒˆ์—ญํ•˜๋‹คโ€“ AI Mood Colors

๐ŸŽจ ๊ฐ์ •์„ ์ƒ‰์œผ๋กœ ๋ฒˆ์—ญํ•˜๋‹ค โ€“ 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์ฐฝ์ž‘

๋Œ“๊ธ€ ๋‚จ๊ธฐ๊ธฐ