[AI Hackathon] 2024 SmileGate FutureLab AI service weeklython ํšŒ๊ณ 

โ€ขProjects/Hackathon

Introduction

๋ณธ ํฌ์ŠคํŠธ๋Š” 2024๋…„ SmileGate FutureLab์—์„œ ์ฃผ์ตœํ•œ ์ œ1ํšŒ AI service weeklython์—์„œ ๋Œ€์ƒ์„ ์ˆ˜์ƒํ•œ AI-driven Game Scenario Generator์— ๋Œ€ํ•œ ๋‚ด์šฉ๊ณผ ๋Œ€ํšŒ ํšŒ๊ณ ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

AI ์œ„ํด๋ฆฌํ†ค์˜ ๊ฒฝ์šฐ, 2024๋…„ 7์›” 21์ผ์— ์—ด๋ฆฐ "์˜จ๋ณด๋”ฉ ์›Œํฌ์ˆ"์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ์ž์™€ ๊ธฐํš์ž๋“ค์ด ๋ชจ์—ฌ ํŒ€๊ตฌ์„ฑ ๋ฐ ์•„์ด๋””์–ด๋ฅผ ์„ ์ •ํ•˜์˜€์œผ๋ฉฐ, ์ฃผ์ค‘ 5์ผ๋™์•ˆ ์•„์ด๋””์–ด๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ 7์›” 26์ผ, 27์ผ์— ๊ฐœ์ตœ๋œ "์ง‘์ค‘๊ฐœ๋ฐœ๋ฐ์ด"์—์„œ ๋ชจ๋“  ํŒ€๋“ค์ด ๋ชจ์—ฌ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐœ๋ฐœํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ œ์‹œํ•จ์œผ๋กœ์„œ ๋ชจ๋“  ํŒ€๋“ค์˜ ์„œ๋น„์Šค๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์Šค๋งˆ์ผ๊ฒŒ์ดํŠธ ํ“จ์ณ๋žฉ ๊ธฐ์‚ฌ๋ฅผ ํ†ตํ•ด ๋Œ€ํšŒ ๊ด€๋ จ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์„œ๋น„์Šค๋Š” ๋‹ค์Œ Github Repository์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋กœํ† ํƒ€์ž…์˜ ์‚ฌ์ง„์€ ๋ณธ ํฌ์ŠคํŠธ ํ•˜๋‹จ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ์šฉ ๊ธฐ์ˆ  ์ •๋ฆฌ

  1. OpenAI GPT 4o Fine-tuning
  2. DALL-E3
  3. Gradio

1. OpenAI GPT 3.5 turbo & 4o Fine-tuning

OpenAI Platform - Authentication๊ณผ OpenAI Platform - Model optimization์— GPT fine-tuning๊ณผ ๊ด€๋ จํ•œ ๋‚ด์šฉ์ด ์ƒ์„ธํžˆ ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌํ•ด๋ณด์ž๋ฉด ์šฐ์„  OpenAI GPT Fine-tuning์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” OPENAI API KEY๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ํ‰์ƒ์‹œ ์‚ฌ์šฉํ•˜๋Š” ChatGPT์™€๋Š” ๋‹ฌ๋ฆฌ, ๋‹ค์Œ OpenAI Platform์—์„œ ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•˜๊ณ  billing์„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.ChatGPT ๊ตฌ๋…์„ ํ•ด๋†“์•˜๋”๋ผ๋„ ๋ณธ ์„œ๋น„์Šค๋Š” ๋ณ„๋„์˜ ๊ฒฐ์ œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!!

๋‹ค์Œ๊ณผ ๊ฐ™์ด API key๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pip install openai
from openai import OpenAI

api_key = "..."
client = OpenAI(api_key=api_key)

ํ•ด๋‹น API key๋ฅผ ํ†ตํ•ด OpenAI์—์„œ ์ œ๊ณตํ•˜๋Š” GPT Model์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋”๋‚˜์•„๊ฐ€ fine-tuning์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. OpenAI์˜ Fine-tuning ๊ณต์‹ Document๋ฅผ ๋ณด๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์„ค๋ช…์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

preparing_training_data

์ฆ‰, Fine-tuning์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

  • JSONL ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ
  • Prompt, completion ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ
  • Prompt์—์„œ๋Š” ์›ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ตฌ์„ฑ
  • Completion์—์„œ๋Š” ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์„ฑ

์ €ํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ์กด์— ๋งŒ๋“ค์–ด๋†“์€ ๋ฐ์ดํ„ฐ์…‹์„ ๋ฐ”ํƒ•์œผ๋กœ GPT 4o์— ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํฌ๋งท์„ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

import jsonlines

train_data = OrderedDict()
message_list = list()
with jsonlines.open("./data/minimal_cookie_data.jsonl") as f:
    for line in f.iter():
        message = []
        message.append({"role": "system", "content": "์ €๋Š” ์ž…๋ ฅ๋ฐ›์€ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ game scenario๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค."})
        
        prompt_content, answer_content = line['prompt'], line['completion']
        message.append({"role": "user", "content": prompt_content})
        message.append({"role": "assistant", "content": answer_content})
        
        message_dict = {"messages": message}
        
        message_list.append(message_dict)
message_list

๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋‹ค์Œ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Platform์„ ํ†ตํ•ด ํ•™์Šต์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
model finetuning

์‹ค์ œ ์„œ๋น„์Šค ํ”„๋กœํ† ํƒ€์ž…์—์„œ๋Š” ํ•™์Šตํ•ด๋†“์€ ๋ชจ๋ธ๊ณผ ๋”๋ถˆ์–ด ๋‹ค์Œ Prompt Engineering์„ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

PROMPT_ENGINEERING = "์ด์ œ๋ถ€ํ„ฐ ํŒํƒ€์ง€ rpg ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ฑฐ์•ผ. ๋ฐ‘์— ์กฐ๊ฑด๋“ค ๋ชจ๋‘ ๋”ฐ๋ผ์•ผ๋งŒํ•ด \
1. ๋งต ๋ ˆ๋ฒจ์€ ์ ์–ด๋„ 3๊ฐœ ํ•„์š”ํ•˜๊ณ  ์‰ฌ์šด๋‹จ๊ณ„๋ถ€ํ„ฐ ์–ด๋ ค์šด ๋‹จ๊ณ„์—์„œ ๋๋‚ด์•ผ๋ผ. \
2. ์ฃผ์š” ํ€˜์ŠคํŠธ์™€ ์„œ๋ธŒ ํ€˜์ŠคํŠธ๊ฐ€ ์ ์ ˆํ•œ ๋‚œ์ด๋„๋กœ ์„ค๊ณ„ํ•˜๊ธฐ. \
3. ๋ณด์ƒ์€ ๋‹ค์–‘ํ• ์ง€๋งŒ ๋‹ค์Œ ๋ ˆ๋ฒจ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ณด์ƒ์€ ๋ฌด์กฐ๊ฑด ํ•„์š”ํ•ด. \
4. ๊ฒŒ์ž„ ์„ค๋ช…์€ 50-70์ž ์ ์–ด์ค˜ \
5. ๋ฐฐ๊ฒฝ์€ ์ตœ๋Œ€ํ•œ ์ž์„ธํ•˜๊ฒŒ 50-70์ž ์ ์–ด์ฃผ๊ณ  ๋‹ค์–‘์„ฑ์ด ์ค‘์š”ํ•ด. \
6. ๋งค๋ฒˆ ๊ฒ€์ƒ‰์€ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์ธ๊ธฐ๋ฅผ ์–ป์—ˆ๋˜ ๊ทธ๋ฆฌ๊ณ  ์ตœ์‹  rpg ๊ฒŒ์ž„์„ reference๋กœ ์žก๊ณ  ํ€˜์ŠคํŠธ ๋งŒ๋“ค์–ด์ค˜. \
7. ์ถœ๋ ฅํ• ๋•Œ ์ ์–ด๋„ 50๋ฒˆ์€ ์ „ํ˜€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์œผ๋กœ ์ถœ๋ ฅํ•ด์ค˜ \
8. ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ‚ค์›Œ๋“œ๋„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์ค˜."

์ดํ›„ ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•˜์—ฌ ์œ ์ €์˜ input๊ณผ ๋”๋ถˆ์–ด prompt engineering์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›๊ณ , ๋ฐ˜ํ™˜๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒŒ์ž„์˜ ์Šคํ† ๋ฆฌ, ํ€˜์ŠคํŠธ, ๋ณด์ƒ ๋“ฑ์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” fine-tuning ๋ชจ๋ธ์ด ์•„๋‹Œ ์ผ๋ฐ˜ gpt-4o-mini๋ฅผ ์ ์šฉํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

def call_model(text, quest_item, event):
    completion = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "๋„Œ ์ฐฝ์˜์ ์ธ ํŒํƒ€์ง€ RPG ๊ฒŒ์ž„ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘๊ฐ€์•ผ."},
            {"role": "user", "content": f"{PROMPT_ENGINEERING} ๋“ฑ์žฅ์ธ๋ฌผ์€ {text} ์ด๊ณ , ์ฃผ์š” ์ด๋ฒคํŠธ๋Š” {event}์ด์•ผ. ์ด ์กฐ๊ฑด๋“ค๋กœ 3๊ฐœ ํ€˜์ŠคํŠธ ๋งŒ๋“ค์–ด์ค˜"}
        ]
    )
    answer = completion.choices[0].message.content

2. DALL-E3

์œ„์—์„œ ๋ง์”€๋“œ๋ฆฐ ๋ฐ”์™€ ๊ฐ™์ด GPT๋ฅผ fine-tuningํ•˜๊ธฐ ์œ„ํ•ด์„œ API๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  billing์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‘ ๋‹จ๊ณ„๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  platform์„ ์‚ดํŽด๋ณด๋‹ค๋ณด๋‹ˆ, Dall-E3 ๋˜ํ•œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ๋Š” ๋”ฐ๋กœ ๋ชจ๋ธ์„ ํ•™์Šตํ•  ํ•„์š”์—†์ด ์—ฐ๊ฒฐ๋œ Dall-E3 model์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

response = client.images.generate(
        model="dall-e-3",
        prompt=f'{quest_item}, ๊ฒŒ์ž„ ์—์…‹, ๊ฒŒ์ž„ ์•„์ดํ…œ, 3d ๋ชจ๋ธ ๋น„๋””์˜ค ๋ชจ๋ธ ์—์…‹, ๊ฒ€์€ ๋ฐฐ๊ฒฝ, ํ™”๋ คํ•œ ์ƒ‰์ƒ, ํŒํƒ€์ง€ ๊ฒŒ์ž„, ๊ณ ๋Œ€์˜ ์Šคํƒ€์ผ',
        size="1024x1024",
        quality="standard",
        n=1,
    )
image_url = response.data[0].url
res = request.urlopen(image_url).read()
quest_item = Image.open(io.BytesIO(res))

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋””์ž์ธ์„ prompt๋กœ ์ „๋‹ฌํ•จ์œผ๋กœ์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

3. Gradio

๋ชจ๋ธ์„ ํ•™์Šตํ–ˆ๋‹ค๋ฉด ์œ ์ €๋กœ ํ•˜์—ฌ๊ธˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก UI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋ณธ ๊ณผ์ •์€ ๊ฐ™์ด ์ฐธ์—ฌํ•œ ๊ฐœ๋ฐœ์ž ์ด์ค€ํ˜•์”จ๊ฐ€ ์ œ์‹œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค!

Gradio ์‚ฌ์šฉ๋ฒ•์€ ํŒŒ์ด์ฌ ํ™˜๊ฒฝ์—์„œ pip install gradio๋กœ ์„ค์น˜ ํ›„, import gradio as gr๋กœ ์ž„ํฌํŠธํ•˜์—ฌ gr.Interface ๋˜๋Š” gr.Blocks ํด๋ž˜์Šค์— ํ•จ์ˆ˜, ์ž…๋ ฅ(inputs), ์ถœ๋ ฅ(outputs) ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์ •ํ•ด ์›น UI๋ฅผ ๋งŒ๋“ค๊ณ  .launch() ๋ฉ”์„œ๋“œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ์€ ๋จธ์‹ ๋Ÿฌ๋‹ ํ•จ์ˆ˜๋ฅผ ์›น ์•ฑ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์Œ์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•ด ๋ชจ๋ธ ๋ฐ๋ชจ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gradio๋Š” Gradio ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด UI๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

service1

์‹œ์—ฐ์˜์ƒ

[ํ›„๊ธฐ] ๋Œ€ํšŒ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ..

ํ”„๋กœํ†  ํƒ€์ž…์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ์ง์ ‘ ์ง„ํ–‰ํ•˜๊ณ , LLM-finetuning (GPT4o API)์„ ํ†ตํ•ด ๋ชจ๋ธ์„ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. LLM Fine-tuning์€ ๋ฐ์ดํ„ฐ์˜ ์งˆ๊ณผ ๊ตฌ์„ฑ์ด ์ค‘์š”ํ•˜๊ฒŒ ์ž‘์šฉํ•˜์˜€๊ณ , ์œ ์ €๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ธ์ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Prompt Engineering์„ ์ถ”๊ฐ€๋กœ ์ ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์˜ ์งˆ์„ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธ€๋กœ๋งŒ ์œ ์ €์—๊ฒŒ ์ œ๊ณต๋œ๋‹ค๋ฉด, ์‹œ๊ฐ์ ์ธ ์š”์†Œ๊ฐ€ ๋ถ€์กฑํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”ผ๋กœ๋„๊ฐ€ ๋†’์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•ด, Dall-E3 API๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋น„์Šค์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์•ˆ์„ ์ œ์•ˆํ•˜๊ณ  ์ ์šฉํ•จ์œผ๋กœ์จ ํ‰๊ฐ€์—์„œ ์ข‹์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํšŒ๊ฐ€ ๋๋‚˜๊ณ  ๋‹ค๋ฅธ ํŒ€๋“ค๊ณผ์˜ ์งˆ์˜์‘๋‹ต์„ ํ†ตํ•ด ๋Œ€ํšŒ ๋‹น์‹œ LLM-finetuning์˜ ๋ฐฉ๋ฒ•๋ก ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ–ˆ๋˜ ๋ถ€๋ถ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ํ•™์Šต ์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, few-shot learning์„ ์ ์šฉํ•˜๋ฉด ๊ธฐ์กด GPT์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์žฅ๋ฅด ์‹œ๋‚˜๋ฆฌ์˜ค ์ƒ์„ฑํ˜• AI ์„œ๋น„์Šค๋ฅผ ๋ถ„์„ํ•ด๋ณด๊ณ  ์ธ๋””๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ํ•„์š”์„ฑ ๋ฐ ์ˆ˜์š”๋ฅผ ์กฐ์‚ฌํ•ด๋ณด์•˜์—ˆ๋Š”๋ฐ, ๊ธฐ์กด ์„œ๋น„์Šค๋“ค์ด ์กด์žฌํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์•„์ง ๋งŽ์€ ๊ฐœ์„ ์ด ํ•„์š”ํ•จ์„ ํ™•์ธํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋ณธ ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด์˜ ํƒ€๋‹น์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์€ ์œ ์ € ์ž…์žฅ์—์„œ ๊ทธ๋“ค์ด ์›ํ•˜๋Š” ์„œ๋น„์Šค๋Š” ๋ฌด์—‡์ธ์ง€, ์–ด๋– ํ•œ ์ ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž๋ฃŒ ๋ฐ ์ˆ˜์š” ์กฐ์‚ฌ๊ฐ€ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊นŠ๊ฒŒ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋” ๋‚˜์•„๊ฐ€ ๊ธฐ์ˆ ์ ์œผ๋กœ๋„ ChatGPT, Dall-E3์˜ ์‚ฌ์šฉ๋ฒ• ๋ฐ API๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ด„์œผ๋กœ์„œ AI Researcher/Engineer๋กœ์„œ์˜ ์—ญ๋Ÿ‰์„ ํ‚ค์šธ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ ์ตœ์ข…์ ์œผ๋กœ ๋ณธ ๋Œ€ํšŒ์—์„œ ๋Œ€์ƒ์„ ์ˆ˜์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. :)

๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ €์—๊ฒŒ ์—ฐ๋ฝ์„ ์ฃผ๊ณ  ์‹ถ์œผ์‹  ๊ฒƒ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด

์ฐธ๊ณ  ์ž๋ฃŒ

Share