๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŸ AI & ML Tech/LLM

[LLM] OpenAI GPT API ์‚ฌ์šฉ ๊ฐ€์ด๋“œ | ChatGPT ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

by ๋ญ…์ฆค 2024. 9. 15.
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” ! ์š”์ฆ˜ LLM ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๊ณ„์† ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ์žˆ๋Š” ๋ญ…์ฆค์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ OpenAI์˜ GPT API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š” ๐Ÿ”ฅ

 

OpenAI์˜ GPT API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด OpenAI LLM์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ๋ณต์žกํ•œ ์ฝ”๋”ฉ์ด๋‚˜ AI ๋ชจ๋ธ ํ•™์Šต ์—†์ด๋„ ์ฑ—๋ด‡, ๊ธ€์“ฐ๊ธฐ ๋„์šฐ๋ฏธ, ๋ฐ์ดํ„ฐ ๋ถ„์„, ๊ทธ๋ฆฌ๊ณ  ๋ฒˆ์—ญ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๋ฉด ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์— ์ง์ ‘ LLM์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ์ง€๊ธˆ๋ถ€ํ„ฐ OpenAI GPT API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๋ณผ๊ฒŒ์š”.


๐Ÿ“Œ API ์‚ฌ์šฉ ์ค€๋น„ 

OpenAI ์œ ๋ฃŒ ๊ฒฐ์ œ๋ฅผ ํ•˜์…จ๋‹ค๋ฉด, OpenAI Platform์—์„œ ๋กœ๊ทธ์ธ ํ›„, API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ์…”์•ผ ํ•ด์š”!

์ด API ํ‚ค๋Š” OpenAI์˜ ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•  ๋•Œ ํ•„์š”ํ•˜๋‹ˆ, ๋ฐœ๊ธ‰ ํ›„ ์ž˜ ์ €์žฅํ•ด ์ฃผ์„ธ์š”.

 

 

OpenAI ํ”Œ๋žซํผ ์›น ํŽ˜์ด์ง€์—์„œ Dashboard โžก๏ธ API keys์—์„œ "Create new secret key"๋ฅผ ํด๋ฆญํ•˜๋ฉด API Key๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

 

 

 

API Key๊ฐ€ ๋ฐœ๊ธ‰๋˜๋ฉด "Copy"๋ฅผ ๋ˆŒ๋Ÿฌ ๋ณธ์ธ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ์ž˜ ์ €์žฅํ•ด ์ฃผ์„ธ์š”~!

 


 

๐Ÿ“Œ API ํ˜ธ์ถœ ์˜ˆ์ œ

์ด์ œ ๋ฐœ๊ธ‰๋ฐ›์€ API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API๋ฅผ ํ˜ธ์ถœํ•ด ๋ณผ๊ฒŒ์š”. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” OpenAI์˜ GPT API๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๋Œ€ํ™”ํ˜• ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ์ œ์˜ˆ์š”. ์•„๋ž˜์— ์ฝ”๋“œ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š” ๐Ÿค—

pip install openai
from openai import OpenAI
import os
from getpass import getpass

# Colab์— API ํ‚ค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ž…๋ ฅ๋ฐ›๊ธฐ
api_key = getpass("OpenAI API ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ")

# API ํ‚ค๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅ
os.environ['OPENAI_API_KEY'] = api_key

def create_chat_completion(system_input, user_input, model="gpt-4o-mini", temperature=1.15, max_tokens=150):
    try:
        # ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์š”
        messages = [
            {"role": "system", "content": system_input},
            {"role": "user", "content": user_input}
        ]

        response = OpenAI().chat.completions.create(
            model=model,
            messages=messages,
            temperature=temperature,
            max_tokens=max_tokens  # ์ตœ๋Œ€ ํ† ํฐ ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์š”
        )
        # ์ƒ์„ฑ๋œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์š”
        return response
    except Exception as e:
        return f"Error: {str(e)}"

# ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก ์˜ˆ์‹œ
system_input = "๋„Œ AI ์ „๋ฌธ ๊ฐ•์‚ฌ์•„. AI, ๊ฐœ๋ฐœ์— ๊ด€๋ จ๋œ ์งˆ๋ฌธ์—๋งŒ ์นœ์ ˆํ•˜๊ณ  ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ต๋ณ€ํ•ด์ค˜"
user_input = "LLM์œผ๋กœ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ค˜."

# API ํ˜ธ์ถœ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
responses = create_chat_completion(system_input, user_input)
print(responses)
print(responses.choices[0].message.content)

 

1. ํ™˜๊ฒฝ ์„ธํŒ…

  • openai ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ
  • ํ•„์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ

2. API ํ‚ค ์ž…๋ ฅ๋ฐ›๊ธฐ

  • getpass๋ฅผ ์ด์šฉํ•ด API ํ‚ค๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , os.environ์„ ํ†ตํ•ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•ด์š”.

3. ์ฑ—๋ด‡ ์‘๋‹ต ์ƒ์„ฑ ํ•จ์ˆ˜ ์ •์˜

create_chat_completion ํ•จ์ˆ˜๋Š” GPT ๋ชจ๋ธ์˜ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋Œ€ํ™”ํ˜• ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • OpenAI().chat.completions.create()
    • API ์„œ๋ฒ„์— ๋ฉ”์‹œ์ง€ ๋ชฉ๋ก์„ ์ „์†กํ•˜๊ณ , ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ์‘๋‹ต์„ ๋ฐ›์•„์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    • ๋Œ€ํ™” ๋งฅ๋ฝ(์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž ์ž…๋ ฅ)์— ๋”ฐ๋ผ ์‘๋‹ต์„ ์ƒ์„ฑ
    • ์ด์ „ ๋Œ€ํ™” ๋‚ด์šฉ์€ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค
  • system_input: ์‹œ์Šคํ…œ์˜ ์—ญํ• ์ด๋‚˜ ์ง€์นจ. ์˜ˆ๋ฅผ ๋“ค์–ด, "๋„Œ AI ์ „๋ฌธ ๊ฐ•์‚ฌ์•ผ."์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • user_input: ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์งˆ๋ฌธ์ด๋‚˜ ์š”์ฒญ.
  • model: ์‚ฌ์šฉํ•  ๋ชจ๋ธ์„ ์ง€์ •. ์—ฌ๊ธฐ์„œ๋Š” "gpt-4o-mini"๋กœ ์„ค์ •
  • temperature: ์‘๋‹ต์˜ ๋‹ค์–‘์„ฑ์„ ์กฐ์ ˆ. ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ์ฐฝ์˜์ ์ด๊ณ  ๋‹ค์–‘์„ฑ์ด ์žˆ๋Š” ์‘๋‹ต์„ ์ƒ์„ฑ
  • max_tokens: ์ƒ์„ฑ๋  ์‘๋‹ต์˜ ์ตœ๋Œ€ ํ† ํฐ ์ˆ˜๋ฅผ ์ง€์ •

4. ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ

  • system_input๊ณผ user_input์„ ์ •์˜ํ•˜๊ณ , create_chat_completion ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ๋œ ์‘๋‹ต์„ responses ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ์ถœ๋ ฅํ•ด์š”.
  • ์‘๋‹ต์˜ ๋‚ด์šฉ์€ responses.choices[0].message.content์— ๋“ค์–ด ์žˆ์–ด์š”.

 


๐Ÿ“Œ  Colab ์‹ค์Šต

์ฝ”๋“œ๋ฅผ ์ญ‰~ ๋ณด๊ธฐ๋งŒ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ฐ์ด ์ž˜ ์•ˆ์˜ฌ ์ˆ˜ ์žˆ์–ด์„œ, Colab์œผ๋กœ ์‹ค์Šตํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ–ˆ์–ด์š”!

์œ„์—์„œ ์„ค๋ช…๋“œ๋ฆฐ ์ฝ”๋“œ์™€ ๋™์ผํ•˜์ง€๋งŒ, ๋‹จ๊ณ„๋ณ„๋กœ ์ˆ˜ํ–‰ํ•ด ๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•ด ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

 

 

LLM-Tutorials/OpenAI/OpenAI_API_call.ipynb at main · mov-z/LLM-Tutorials

๋‹ค์–‘ํ•œ LLM ํŠœํ† ๋ฆฌ์–ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. . Contribute to mov-z/LLM-Tutorials development by creating an account on GitHub.

github.com

 

 

์‹ค์Šต ์˜ˆ์‹œ

์‹ค์Šต ์˜ˆ์‹œ

 


์ด์ œ OpenAI GPT API๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์–ด์š”. ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” API ํ‚ค ๋ฐœ๊ธ‰๋ถ€ํ„ฐ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ์ฝ”๋“œ ์ž‘์„ฑ๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ–ˆ์œผ๋‹ˆ, ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค! ์•ž์œผ๋กœ ๋” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด ๋ณผํ…Œ๋‹ˆ ๋”ฐ๋ผ์™€์ฃผ์„ธ์š” ใ…Žใ…Ž

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š” ๐Ÿ˜Š

๋ฐ˜์‘ํ˜•