[Day 9] OpenAI o1 ๋ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌ

Posted by Euisuk's Dev Log on December 18, 2024

[Day 9] OpenAI o1 ๋ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌ

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/Day-9-OpenAI-o1-and-dev-tools

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ 12 Days of OpenAI ์‹œ๋ฆฌ์ฆˆ์˜ ์•„ํ™‰ ๋ฒˆ์งธ ๋‚ ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

์˜ค๋Š˜์€ ChatGPT์— ์ถ”๊ฐ€๋œ ๊ฐ•๋ ฅํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ธ โ€œOpenAI o1 ๋ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌโ€œ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์‹œ์ ์—๋Š” ์˜์ƒ์ด ์•ˆ ์˜ฌ๋ผ์™”์ง€๋งŒ, ํ˜„์žฌ๋Š” ๋‹ค์‹œ ์ •์ƒ ๊ณต๊ฐœ๋œ ๊ฒƒ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‚ด๊ฐ€ ์žฌ์ด‰ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€? ใ…Žใ…Ž)

๋‹ค์Œ ๋งํฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

OpenAI o1 ๋ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„๊ตฌ ์†Œ๊ฐœ

OpenAI๋Š” AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•ด ๋”์šฑ ๊ฐ•๋ ฅํ•œ ๋ชจ๋ธ๊ณผ ์œ ์—ฐํ•œ ๋„๊ตฌ๋“ค์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์—…๋ฐ์ดํŠธ๋Š” ์„ฑ๋Šฅ, ์‚ฌ์šฉ์ž ๋งž์ถคํ™”, ๋น„์šฉ ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ์œผ๋ฉฐ, ์ฃผ์š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • o1 ๋ชจ๋ธ API: ํ•จ์ˆ˜ ํ˜ธ์ถœ, ๊ฐœ๋ฐœ์ž ๋ฉ”์‹œ์ง€, ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ, ๋น„์ „ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (๋งํฌ)
  • WebRTC ์ง€์› ๋ฐ ์‹ค์‹œ๊ฐ„ API ์—…๋ฐ์ดํŠธ: GPT-4o ์˜ค๋””์˜ค์˜ 60% ๊ฐ€๊ฒฉ ์ธํ•˜ ๋ฐ GPT-4o mini ์ง€์› (๋งํฌ)
  • Preference Fine-Tuning์„ ํ†ตํ•œ ๋ชจ๋ธ ๋งž์ถคํ™” ๊ธฐ๋Šฅ: ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„์— ๋”ฐ๋ผ ๋ชจ๋ธ์„ ์กฐ์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋ฒ•(๋งํฌ)
  • Go ๋ฐ Java SDK์˜ ๋ฒ ํƒ€ ์ถœ์‹œ (๋งํฌ)

์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ํ˜์‹ ์ ์ธ ์ œํ’ˆ์„ ๋งŒ๋“ค๊ณ , ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ์—์„œ AI ํ™œ์šฉ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


1. OpenAI o1: ์ƒˆ๋กœ์šด ๊ณ ์„ฑ๋Šฅ ์ถ”๋ก  ๋ชจ๋ธ

OpenAI o1์€ ๋ณต์žกํ•œ ๋‹ค๋‹จ๊ณ„ ์ž‘์—…์„ ๋†’์€ ์ •ํ™•๋„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๋ก  ๋ชจ๋ธ๋กœ, ์ด์ œ API์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

o1 ๋ชจ๋ธ์€ ์ด์ „์— ์ถœ์‹œ๋œ o1-preview์˜ ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์œผ๋กœ, ๊ณ ๊ฐ ์ง€์› ์ž๋™ํ™”, ๊ณต๊ธ‰๋ง ์˜์‚ฌ ๊ฒฐ์ • ์ตœ์ ํ™”, ๋ณต์žกํ•œ ๊ธˆ์œต ํŠธ๋ Œ๋“œ ์˜ˆ์ธก๊ณผ ๊ฐ™์€ ์—์ด์ „ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (o1-preview๋ฅผ ๊ฐœ์„ ํ•œ o1-2024-12-17 ๋ฒ„์ „์ด ๋ฐœํ‘œ)

(์ฐธ๊ณ ) o1 explained

OpenAI๋Š” ์ตœ๊ทผ ์ƒˆ๋กœ์šด AI ๋ชจ๋ธ์ธ o1์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ โ€˜์‚ฌ๊ณ ์˜ ์‚ฌ์Šฌ(chain of thought)โ€˜์„ ์ƒ์„ฑํ•˜์—ฌ ์‹ฌ์ธต์ ์ธ ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜ํ•™, ์ฝ”๋”ฉ, ๊ณผํ•™์  ์ถ”๋ก  ๋“ฑ์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ถ”๋ก  ํ† ํฐ(reasoning token)์€ ๋ชจ๋ธ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” โ€˜์ƒ๊ฐโ€™์„ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ํ† ํฐ์ž…๋‹ˆ๋‹ค.
    • ์ด๋Ÿฌํ•œ ์ถ”๋ก  ํ† ํฐ์„ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋ธ์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„์„ํ•˜๊ณ , ์ตœ์ข… ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์‹ฌ์ธต์ ์ธ ์‚ฌ๊ณ  ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์˜ ์ถ”๋ก  ๋Šฅ๋ ฅ์ด ํ–ฅ์ƒ๋˜๋ฉฐ, ๋ณต์žกํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถœ๋ ฅ ํ† ํฐ(output token)์€ ๋ชจ๋ธ์ด ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์‘๋‹ต์˜ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
    • o1 ๋ชจ๋ธ์€ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ๋‚ด๋ถ€์ ์œผ๋กœ ์ถ”๋ก  ํ† ํฐ์„ ํ™œ์šฉํ•˜์—ฌ ์‹ฌ์ธต์ ์ธ ์‚ฌ๊ณ  ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฏ€๋กœ, ์ตœ์ข… ์ถœ๋ ฅ ํ† ํฐ์˜ ํ’ˆ์งˆ๊ณผ ์ •ํ™•์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.์ด๋Ÿฌํ•œ ๊ณผ์ •์€ ๋ชจ๋ธ์ด ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์žˆ์–ด ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์ฐธ๊ณ  ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค:

Image Reference: reasoning model, Gรถkhan Gerdan (Medium Post)

Image Reference: Token Outputs, ArtificialAnlys (X Post)

์ด๋ฒˆ API ๋ฆด๋ฆฌ์Šค๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ, ๊ฐœ๋ฐœ์ž ๋ฉ”์‹œ์ง€, ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ, ๋น„์ „ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. (English Explanation is from OpenAI Blog Post)

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ(Function Calling): o1 ๋ชจ๋ธ์€ ์™ธ๋ถ€ API๋‚˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๋”์šฑ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฑ—๋ด‡์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Seamlessly connect o1 to external data and APIs.)
  • ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ(Structured Outputs): JSON Schema์™€ ๊ฐ™์€ ๋งž์ถคํ˜• ํ˜•์‹์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ํ†ตํ•ฉ์ด ํ›จ์”ฌ ๋” ์ˆ˜์›”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์‚ฌ์šฉ์ด ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค. (Generate responses that reliably adhere to your custom JSON Schema.)

    • ์•„๋ž˜์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ์ถœ๋ ฅ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ด์ฃผ๋ฉด,

    • ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ถœ๋ ฅ์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๊ฐœ๋ฐœ์ž ๋ฉ”์‹œ์ง€(Developer Messages): ๋ชจ๋ธ์˜ ํ–‰๋™, ๋งํˆฌ, ์Šคํƒ€์ผ์„ ์„ธ๋ถ€์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, ๋‹ค์–‘ํ•œ ์ปจํ…์ŠคํŠธ์— ๋งž๊ฒŒ ๋ชจ๋ธ์˜ ์ถœ๋ ฅ์„ ๋งž์ถคํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Specify instructions or context for the model to follow, such as defining tone, style and other behavioral guidance.)
  • ๋น„์ „ ๊ธฐ๋Šฅ(Vision Capabilities): ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•ด์ ธ ๊ณผํ•™, ์˜๋ฃŒ, ์ œ์กฐ, ์ฝ”๋”ฉ ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฐ์—… ๋ถ„์•ผ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Reason over images to unlock many more applications in science, manufacturing, or coding, where visual inputs matter.)

    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ…์ŠคํŠธ ์–‘์‹์„ ์Šค์บ”ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ด๋ฒˆ ๋ฐ๋ชจ์—์„œ๋Š” ์„ธ๊ธˆ ์‹ ๊ณ  ์–‘์‹์˜ ์ž˜๋ชป๋œ ์ˆ˜์‹๊ณผ ํ‘œ์ค€ ๊ณต์ œ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์ฐพ์•„์ฃผ์—ˆ์œผ๋ฉฐ, ์–‘์‹์˜ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•ด ์ •ํ™•ํ•œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. (Function ๊ธฐ๋Šฅ ์‚ฌ์šฉ)

    • ์ด ๊ธฐ๋Šฅ์€ ๋ฌธ์„œ ์ฒ˜๋ฆฌ, ์‹œ๊ฐ์  ๊ฒ€ํ† , ์˜ค๋ฅ˜ ๊ฒ€์ถœ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹ค๋ฌด์— ์ฆ‰์‹œ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„(Lower latency): ํ‰๊ท ์ ์œผ๋กœ o1-preview๋ณด๋‹ค 60% ์ ์€ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ์‘๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. (o1 uses on average 60% fewer reasoning tokens than o1-preview for a given request.)

์ถ”๊ฐ€๋กœ, reasoning_effort API ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์˜ ์ถ”๋ก  ์ˆ˜์ค€์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์ถ”๋ก ์˜ ๊นŠ์ด๋ฅผ ์กฐ์ •ํ•จ์œผ๋กœ์จ ๋น ๋ฅธ ์‘๋‹ต์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์™€ ๋ณต์žกํ•œ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ชจ๋‘๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฒค์น˜๋งˆํฌ ์„ฑ๋Šฅ:

  • o1-2024-12-17์€ ๋‹ค์–‘ํ•œ ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ์—์„œ ์ด์ „ ๋ชจ๋ธ์„ ๋Šฅ๊ฐ€ํ•˜๋Š” ์„ฑ๋Šฅ์„ ๊ธฐ๋กํ•˜๋ฉฐ, ํŠนํžˆ ์ˆ˜ํ•™, ์ฝ”๋”ฉ ๋ฐ ์‹œ๊ฐ์  ์˜์—ญ์—์„œ ํฐ ๊ฐœ์„ ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

  • ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด์„œ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด๋ณด์•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ํ‘œ์—์„œ SO๋Š” Strcutured Output์˜ ์ค„์ž„๋ง์ž„*

์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ†ตํ•ด o1 ๋ชจ๋ธ์€ ๋ณต์žกํ•œ ์ง€์‹ ๊ธฐ๋ฐ˜ ์ž‘์—…๊ณผ ์‹ค์‹œ๊ฐ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ฝ”๋”ฉ ๋ฐ ํ•™์ˆ  ์—ฐ๊ตฌ์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์˜ AI ๊ฐœ๋ฐœ์— ์ค‘์š”ํ•œ ๋„๊ตฌ๋กœ ์ž๋ฆฌ์žก์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.


2. ์‹ค์‹œ๊ฐ„ API ๊ฐœ์„ 

์‹ค์‹œ๊ฐ„ API๋Š” ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ฐ”ํƒ•์œผ๋กœ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์Œ์„ฑ ๋น„์„œ, ์‹ค์‹œ๊ฐ„ ๋ฒˆ์—ญ๊ธฐ, ๊ฐ€์ƒ ํŠœํ„ฐ์™€ ๊ฐ™์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : ์‹ค์‹œ๊ฐ„ API(https://platform.openai.com/docs/guides/realtime)

WebRTC ์ง€์›

WebRTC(Web Real-Time Communication, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‚ฌ์ดํŠธ๊ฐ€ ์ค‘๊ฐ„์ž ์—†์ด ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ์˜ค๋””์˜ค๋‚˜ ์˜์ƒ ๋ฏธ๋””์–ด๋ฅผ ํฌ์ฐฉํ•˜๊ณ  ๋งˆ์Œ๋Œ€๋กœ ์ŠคํŠธ๋ฆผ ํ•  ๋ฟ ์•„๋‹ˆ๋ผ, ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋„ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ) ์ง€์›์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋”์šฑ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : ์‹ค์‹œ๊ฐ„ API(https://platform.openai.com/docs/guides/realtime)

๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋ฐ”์ผ, IoT ๋””๋ฐ”์ด์Šค ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. WebRTC๋Š” ์—ฐ๊ฒฐ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋ฉด์„œ๋„ ์•ˆ์ •์ ์ธ ์Œ์„ฑ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

(์ฐธ๊ณ ) ๋ณธ ๋ธ”๋กœ๊ทธ์˜ ๋ฐ๋ชจ ์ฝ”๋“œ๋Š” OpenAI ๋ธ”๋กœ๊ทธ์˜ Demo ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์ƒ์˜ Demo ์ฝ”๋“œ๋Š” ์ด๋ฏธ์ง€๋กœ ์ฒจ๋ถ€๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • ์œ„ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด HTML ๊ธฐ๋ฐ˜ WebRTC(Web Real-Time Communication) ์ฝ”๋“œ๋กœ, PeerConnection(Peer-to-Peer) ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์ง์ ‘ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋˜ํ•œ, ๋‹ค๋ฅธ ๋ฐ๋ชจ์—์„œ๋Š” โ€˜์•„๊ธฐ ์‚ฌ์Šด ์žฅ๋‚œ๊ฐโ€˜์— WebRTC๋ฅผ ์ ์šฉํ•œ ์†Œํ˜• ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ๋ถ€์ฐฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™” ๊ฐ€๋Šฅํ•œ ์ธํ˜•์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ (์ปค์—ฝ)

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

์˜ˆ์‹œ ์ฝ”๋“œ (JavaScript):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function createRealtimeSession(localStream, remoteAudioEl, token) {
    const pc = new RTCPeerConnection();
    pc.ontrack = e => remoteAudioEl.srcObject = e.streams[0];
    pc.addTrack(localStream.getTracks()[0]);
    const offer = await pc.createOffer();
    await pc.setLocalDescription(offer);
    const resp = await fetch('https://api.openai.com/v1/realtime', {
        method: 'POST',
        headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/sdp' },
        body: offer.sdp
    });
    await pc.setRemoteDescription({ type: 'answer', sdp: await resp.text() });
    return pc;
}

์ƒˆ๋กœ์šด GPT-4o ๋ฐ GPT-4o mini ์‹ค์‹œ๊ฐ„ ์Šค๋ƒ…์ƒท ๋ฒ„์ „

OpenAI๋Š” gpt-4o๋ฅผ gpt-4o-realtime-preview-2024-12-17์œผ๋กœ ์‹ค์‹œ๊ฐ„ API ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์—…๋ฐ์ดํŠธ๋Š” ๊ฐœ์„ ๋œ ์Œ์„ฑ ํ’ˆ์งˆ, ํŠนํžˆ ์ˆซ์ž ์ž…๋ ฅ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๊ณ , ๋น„์šฉ์„ ์ ˆ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํšจ์œจ์„ฑ ๊ฐœ์„  ๋•๋ถ„์— ์˜ค๋””์˜ค ํ† ํฐ ๊ฐ€๊ฒฉ์„ 60% ๋‚ฎ์ถฐ ์ž…๋ ฅ ํ† ํฐ๋‹น $40/1M, ์ถœ๋ ฅ ํ† ํฐ๋‹น $80/1M์œผ๋กœ ์ธํ•˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์บ์‹œ๋œ ์˜ค๋””์˜ค ์ž…๋ ฅ ๋น„์šฉ์€ 87.5% ๊ฐ์†Œํ•ด ์ž…๋ ฅ ํ† ํฐ๋‹น $2.50/1M์œผ๋กœ ๋‚ฎ์•„์กŒ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ GPT-4o mini๋ฅผ gpt-4o-mini-realtime-preview-2024-12-17์œผ๋กœ ์‹ค์‹œ๊ฐ„ API ๋ฒ ํƒ€์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • GPT-4o mini๋Š” ๊ฐ€์žฅ ๋น„์šฉ ํšจ์œจ์ ์ธ ์†Œํ˜• ๋ชจ๋ธ๋กœ, GPT-4o์™€ ๋™์ผํ•œ ํ’๋ถ€ํ•œ ์Œ์„ฑ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • GPT-4o mini์˜ ์˜ค๋””์˜ค ๊ฐ€๊ฒฉ์€ ์ž…๋ ฅ ํ† ํฐ๋‹น $10/1M, ์ถœ๋ ฅ ํ† ํฐ๋‹น $20/1M์ž…๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ ํ† ํฐ ๊ฐ€๊ฒฉ์€ ์ž…๋ ฅ ํ† ํฐ๋‹น $0.60/1M, ์ถœ๋ ฅ ํ† ํฐ๋‹น $2.40/1M์œผ๋กœ ์„ค์ •๋˜์—ˆ์œผ๋ฉฐ, ์บ์‹œ๋œ ์˜ค๋””์˜ค ๋ฐ ํ…์ŠคํŠธ ๋ชจ๋‘ ํ† ํฐ๋‹น $0.30/1M์˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ƒ…์ƒท์€ ์‹ค์‹œ๊ฐ„ API์™€ Chat Completions API์—์„œ ๊ฐ๊ฐ gpt-4o-audio-preview-2024-12-17 ๋ฐ gpt-4o-mini-audio-preview-2024-12-17์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์‘๋‹ต ์ œ์–ด ๊ธฐ๋Šฅ ๊ฐ•ํ™”

OpenAI๋Š” ์‹ค์‹œ๊ฐ„ API๋ฅผ ํ†ตํ•ด ๋›ฐ์–ด๋‚œ ์Œ์„ฑ ๊ธฐ๋ฐ˜ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๋™์‹œ ์™ธ๋ถ€ ์‘๋‹ต ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž ์Œ์„ฑ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ์ฝ˜ํ…์ธ  ๋ถ„๋ฅ˜๋‚˜ ๋ชจ๋”๋ ˆ์ด์…˜ ๊ฐ™์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ž…๋ ฅ ์ปจํ…์ŠคํŠธ: ๋ชจ๋ธ ์ž…๋ ฅ์œผ๋กœ ํฌํ•จํ•  ๋Œ€ํ™”๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ๋งˆ์ง€๋ง‰ ๋ฐœ์–ธ๋งŒ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๊ณผ๊ฑฐ ์‘๋‹ต์„ ๋‹ค์‹œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‘๋‹ต ํƒ€์ด๋ฐ ์ œ์–ด: ์„œ๋ฒ„ ์ธก ์Œ์„ฑ ํ™œ๋™ ๊ฐ์ง€(VAD)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๊ณ , ๊ณ„์ • ์„ธ๋ถ€ ์ •๋ณด ๋“ฑ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•œ ํ›„ ์ˆ˜๋™์œผ๋กœ ์Œ์„ฑ ์‘๋‹ต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ธ์…˜ ๊ธธ์ด ์ฆ๊ฐ€: ์ตœ๋Œ€ ์„ธ์…˜ ๊ธธ์ด๊ฐ€ 15๋ถ„์—์„œ 30๋ถ„์œผ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

3. Preference Fine-Tuning: ์‚ฌ์šฉ์ž ๋งž์ถค ๋ชจ๋ธ ํ•™์Šต

Preference Fine-Tuning์€ ์ฃผ๊ด€์ ์ธ ํ‰๊ฐ€ ์ž‘์—…์— ํŠนํ™”๋œ ์ƒˆ๋กœ์šด ๋ชจ๋ธ ํ•™์Šต ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๊ธฐ์กด์˜ Supervised Fine-Tuning๊ณผ Preference Fine-Tuning์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Supervised Fine-Tuning

  1. ๋ชฉํ‘œ
    • Supervised Fine-Tuning์€ ๋ช…ํ™•ํžˆ ์ •๋‹ต์ด ์žˆ๋Š” ์ž‘์—…์—์„œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์Œ์„ ํ•™์Šตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ๊ณ„ ๋ฒˆ์—ญ, ์ฝ”๋“œ ํฌ๋งทํŒ…, ๋˜๋Š” ์ˆ˜ํ•™ ๋ฌธ์ œ ํ’€์ด์ฒ˜๋Ÿผ ์ •๋‹ต์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•™์Šต ๋ฐ์ดํ„ฐ
    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ์ถœ๋ ฅ ์ •๋‹ต์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ์…‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜์–ด ๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฒˆ์—ญ๋œ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ ์šฉ ๋ถ„์•ผ
    • ๋ฒˆ์—ญ ์‹œ์Šคํ…œ: ์˜์–ด-ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ, ์ฝ”๋“œ ๋ณ€ํ™˜(์˜ˆ: Python์—์„œ Java๋กœ ๋ณ€ํ™˜).
    • ์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ์š”๊ตฌํ•˜๋Š” QA ์‹œ์Šคํ…œ.
    • ์ˆ˜ํ•™ ๊ณต์‹ ๊ณ„์‚ฐ๊ธฐ ๋“ฑ.

Preference Fine-Tuning

  1. ๋ชฉํ‘œ

    • Preference Fine-Tuning์€ ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„๋ฅผ ๋ชจ๋ธ์— ๋ฐ˜์˜ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.
    • ์ฃผ์–ด์ง„ ์—ฌ๋Ÿฌ ์ถœ๋ ฅ ์ค‘์—์„œ ์„ ํ˜ธํ•˜๋Š” ์‘๋‹ต๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์‘๋‹ต์„ ๋ชจ๋ธ์ด ํ•™์Šตํ•˜๋„๋ก ํ•˜์—ฌ ๋” ๋ฐ”๋žŒ์งํ•œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋Š” ์ฐฝ์˜์  ๊ธ€์“ฐ๊ธฐ, ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง ๋“ฑ ์ฃผ๊ด€์  ํŒ๋‹จ์ด ์ค‘์š”ํ•œ ์ž‘์—…์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•™์Šต ๋ฐ์ดํ„ฐ

    • A/B ํ…Œ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์„ ํ˜ธํ•˜๋Š” ์ถœ๋ ฅ(A)๊ณผ ๋น„์„ ํ˜ธํ•˜๋Š” ์ถœ๋ ฅ(B)์„ ์ง์ง€์–ด ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๋ชจ๋ธ์€ A์™€ B์˜ ์ฐจ์ด์ ์„ ํ•™์Šตํ•˜์—ฌ ์„ ํ˜ธ๋„ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๋„๋ก ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.

  3. ์ ์šฉ ๋ถ„์•ผ

    • ์ฐฝ์˜์  ๊ธ€์“ฐ๊ธฐ: ๋” ๋งค๋„๋Ÿฝ๊ณ  ์ธ๊ฐ„์ ์ธ ๋ฌธ์ฒด๋กœ ๊ธ€์„ ์ž‘์„ฑ.
    • ์š”์•ฝ ์ž‘์—…: ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋งž๋Š” ์ •๋ณด๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์š”์•ฝ.
    • ๊ณ ๊ฐ ์ง€์›: ๊ณ ๊ฐ์˜ ํ†ค๊ณผ ์Šคํƒ€์ผ์— ๋งž์ถ˜ ๋‹ต๋ณ€ ์ƒ์„ฑ.
    • ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง: ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ถ€์ ํ•ฉํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ฑฐ.

์ฐจ์ด์ 

  • Supervised Fine-Tuning์€ ์ •๋‹ต์ด ๋ช…ํ™•ํžˆ ์ •์˜๋œ ์ž‘์—…์— ์ ํ•ฉํ•˜๋ฉฐ, ๋ชจ๋ธ์˜ ์ถœ๋ ฅ ์ •ํ™•๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Preference Fine-Tuning์€ ์ •๋‹ต์ด ์•„๋‹Œ โ€˜์„ ํ˜ธโ€™๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์œผ๋กœ, ๊ฒฐ๊ณผ๋ฌผ์˜ ์ฃผ๊ด€์  ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ์‚ฌ์šฉ์ž ์š”๊ตฌ์— ๋งž์ถ˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๋ฆฌ

    ํŠน์ง• Supervised Fine-Tuning Preference Fine-Tuning
    ๋ชฉํ‘œ ์ •๋‹ต ์ถœ๋ ฅ์„ ํ•™์Šต ์„ ํ˜ธํ•˜๋Š” ์ถœ๋ ฅ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ๋น„์„ ํ˜ธ ์ถœ๋ ฅ ๊ฐ์†Œ
    ํ•™์Šต ๋ฐ์ดํ„ฐ ์ž…๋ ฅ-์ถœ๋ ฅ ์Œ ์„ ํ˜ธ/๋น„์„ ํ˜ธ ์‘๋‹ต ์Œ (A/B ํ…Œ์ŠคํŠธ ๋“ฑ)
    ์ฃผ์š” ์ ์šฉ ๋ถ„์•ผ ์ฝ”๋“œ ํฌ๋งท, ์ •๋‹ต์ด ๋ช…ํ™•ํ•œ ์ž‘์—… ์ฐฝ์˜์  ๊ธ€์“ฐ๊ธฐ, ์š”์•ฝ ๋“ฑ ์ฃผ๊ด€์  ํ‰๊ฐ€ ์ž‘์—…
  • ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ์— ๋งž๊ฒŒ ๋ชจ๋ธ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด ์ฐฝ์˜์ ์ธ ๊ธ€์“ฐ๊ธฐ, ์š”์•ฝ, ๋ฒˆ์—ญ ๋“ฑ์—์„œ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ๋ฅผ ๋“ค์–ด, Rogo AI(https://rogo.ai/)๋Š” ๊ธˆ์œต ๋ถ„์„๊ฐ€๋ฅผ ์œ„ํ•œ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ Preference Fine-Tuning์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Rogo AI์˜ ๋ชฉํ‘œ๋Š” ์‚ฌ์šฉ์ž์˜ ์งˆ์˜ ๋‚ด์šฉ์„ ์žฌ์ž‘์„ฑ ๋ฐ ๋ฆฌํŒฉํ„ฐ๋งํ•ด ๋”์šฑ ์ •ํ™•ํ•˜๊ณ  ์œ ์˜๋ฏธํ•œ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐ์—๋Š” Supervised Fine-Tuning์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ, ์„ฑ๋Šฅ์ด ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ๋„˜์–ด์„œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Preference Fine-Tuning์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ, ๋‚ด๋ถ€ ๋ฒค์น˜๋งˆํฌ ์ •ํ™•๋„๊ฐ€ 75%์—์„œ 80% ์ด์ƒ์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    • ์ด ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด Preference Fine-Tuning์ด ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์ด ์ค‘์š”ํ•œ ๋ถ„์•ผ์—์„œ ํฐ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณ ๊ฐ ์ง€์›, ์นดํ”ผ๋ผ์ดํŒ…, ์ฐฝ์˜์  ๊ธ€์“ฐ๊ธฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์˜์—ญ์—์„œ์˜ ํ™œ์šฉ์ด ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.

4. Go ๋ฐ Java SDK ๋ฒ ํƒ€ ์ถœ์‹œ

OpenAI๋Š” Python, Node.js์— ์ด์–ด Go์™€ Java๋ฅผ ์ง€์›ํ•˜๋Š” ๊ณต์‹ SDK๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Go SDK: ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ์™€ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜, ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Java SDK: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ๊ณผ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Go SDK ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ:

๋‹ค์Œ์€ Go SDK๋ฅผ ์‚ฌ์šฉํ•ด AI ๋ชจ๋ธ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•˜์ด์ฟ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

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
package main

import (
    "context"
    "fmt"
    "github.com/openai/go-openai"
)

func main() {
    client := openai.NewClient()
    ctx := context.Background()

    prompt := "Write me a haiku about Golang."

    completion, err := client.Chat.Completions.New(ctx, openai.ChatCompletionNewParams{
        Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
            openai.UserMessage(prompt),
        }),
        Model: openai.F(openai.ChatModelGPT4o),
    })

    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Generated Haiku:", completion.Choices[0].Message.Content)
}

Java SDK ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ:

Java SDK๋ฅผ ํ™œ์šฉํ•ด ๊ฐ„๋‹จํ•œ ์ฑ—๋ด‡ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์— AI๊ฐ€ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import com.openai.api.OpenAi;
import com.openai.api.models.ChatCompletion;
import com.openai.api.models.ChatCompletionMessage;

import java.util.Arrays;

public class OpenAIExample {
    public static void main(String[] args) {
        OpenAi openAi = new OpenAi(System.getenv("OPENAI_API_KEY"));

        ChatCompletion completion = openAi.chatCompletions().create(
                chatCompletion -> chatCompletion
                        .model("gpt-4o")
                        .messages(Arrays.asList(
                                new ChatCompletionMessage("user", "Explain the concept of multithreading in Java.")))
        );

        System.out.println("Response: " + completion.choices().get(0).message().content());
    }
}

์ด์ œ ๋‹ค์–‘ํ•œ ์–ธ์–ด ํ™˜๊ฒฝ์—์„œ OpenAI์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์†์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋Œ€ํ™”ํ˜• ์ฑ—๋ด‡ ๋“ฑ ์—ฌ๋Ÿฌ ํ™œ์šฉ ์‚ฌ๋ก€์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ฒฐ๋ก 

์ด๋ฒˆ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด OpenAI๋Š” AI ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด o1 ๋ชจ๋ธ, WebRTC ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ API, Preference Fine-Tuning, Go ๋ฐ Java SDK ๊ฐœ์„ ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ˜์‹ ์  AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์ •๋ณด์™€ ๊ฐ€์ด๋“œ๋Š” OpenAI API ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OpenAI์˜ ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์€ AI ๊ฐœ๋ฐœ์˜ ๋ฌธํ„ฑ์„ ๋‚ฎ์ถ”๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๋„์ž…์„ ๋”์šฑ ๊ฐ€์†ํ™”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2024 DevDay์— ์œ ํŠœ๋ธŒ ์˜์ƒ๋„ ์˜ฌ๋ ธ๋‹ค๊ณ  ํ•˜๋Š”๊ตฐ์š”!! ๊ทธ๊ฒƒ๋„ ๋ฆฌ๋ทฐํ•˜๋Ÿฌ ๊ฐ€์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค!! ๊ทธ๋Ÿผ ์ด๋งŒ!! ์ด์ด์ด๐Ÿƒโ€โ™‚๏ธ

๋‚ด์ผ๋„ ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š”!



-->