[정리] OpenAI API Document

Posted by Euisuk's Dev Log on September 19, 2024

[정리] OpenAI API Document

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/정리-OpenAI-API-Document

OpenAIλŠ” μ΅œμ‹  인곡지λŠ₯(AI) λͺ¨λΈκ³Ό APIλ₯Ό μ œκ³΅ν•˜μ—¬ κ°œλ°œμžλ“€μ΄ λ‹€μ–‘ν•œ AI κΈ°λŠ₯을 μ‰½κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 톡합할 수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. λ‹€μŒμ€ μ•„λž˜ platform.openai.comμ—μ„œ μ œκ³΅ν•˜λŠ” λ¬Έμ„œλ₯Ό ν›‘μ–΄λ³΄λ©΄μ„œ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

  1. μ†Œκ°œ

OpenAIλ₯Ό ν™œμš©ν•˜λ©΄, μžμ—°μ–΄ 처리, 이미지 생성, μŒμ„± 인식 λ“± λ‹€μ–‘ν•œ AI μž‘μ—…μ„ κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•  수 있으며, μ‚¬μš©μž κ²½ν—˜μ„ ν˜μ‹ μ μœΌλ‘œ κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이제 μ—…λ¬΄μ—μ„œλ„ 슬슬 μ‚¬μš©ν•˜κ²Œ 될 것 κ°™μ•„ 이λ₯Ό μ œλŒ€λ‘œ ν•œλ²ˆ μ‚΄νŽ΄λ³΄λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄μ•˜μŠ΅λ‹ˆλ‹€ ⭐

이 κ°€μ΄λ“œλŠ” (μœ„μ— 블둝 ν‘œκΈ°ν•΄ λ‘”) OpenAI API의 μ£Όμš” μ—”λ“œν¬μΈνŠΈμ™€ 6κ°€μ§€ μ£Όμš” κΈ°λŠ₯을 μ€‘μ‹¬μœΌλ‘œ, μ΄ˆλ³΄μžλ„ μ‰½κ²Œ 따라할 수 μžˆλŠ” 단계별 μ„€λͺ…을 μ œκ³΅ν•©λ‹ˆλ‹€.


  1. OpenAI API의 기본 ꡬ쑰

OpenAI APIλŠ” 사전 ν•™μŠ΅λœ AI λͺ¨λΈμ„ ν˜ΈμΆœν•˜μ—¬ λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 있게 ν•©λ‹ˆλ‹€. APIλŠ” μ—¬λŸ¬ κ°€μ§€ μ—”λ“œν¬μΈνŠΈ(Endpoints)λ₯Ό μ œκ³΅ν•˜λ©°, 각 μ—”λ“œν¬μΈνŠΈλŠ” νŠΉμ • μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. API의 κ΅¬μ‘°λŠ” κ°„λ‹¨ν•˜μ§€λ§Œ 맀우 κ°•λ ₯ν•˜λ©°, 이λ₯Ό 톡해 AI κΈ°λŠ₯을 μ§κ΄€μ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2.1 μ—”λ“œν¬μΈνŠΈλž€?

μ—”λ“œν¬μΈνŠΈλŠ” OpenAI μ„œλ²„μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” URL둜, νŠΉμ • AI λͺ¨λΈμ„ ν˜ΈμΆœν•˜κ±°λ‚˜ κΈ°λŠ₯을 μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ²½λ‘œμž…λ‹ˆλ‹€.

  • 예λ₯Ό λ“€μ–΄, GPT λͺ¨λΈμ„ ν˜ΈμΆœν•˜λ €λ©΄ /v1/completions μ—”λ“œν¬μΈνŠΈλ‘œ μš”μ²­μ„ 보내야 ν•©λ‹ˆλ‹€.

    • openai.ChatCompletion.create()와 같은 ν•¨μˆ˜ ν˜ΈμΆœμ€ λ‚΄λΆ€μ μœΌλ‘œ OpenAI API의 /v1/completions μ—”λ“œν¬μΈνŠΈλ‘œ μš”μ²­μ„ λ³΄λ‚΄λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
    • OpenAI 라이브러리λ₯Ό μ‚¬μš©ν•  λ•Œ, 이런 ν•¨μˆ˜λ“€μ€ 각각의 μ—”λ“œν¬μΈνŠΈμ™€ λ§€ν•‘λ˜μ–΄ μžˆμ–΄μ„œ, κ°œλ°œμžλŠ” API의 μ—”λ“œν¬μΈνŠΈ URL을 μ‹ κ²½ μ“°μ§€ μ•Šκ³ λ„ νŽΈλ¦¬ν•˜κ²Œ AI κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. μ£Όμš” μ—”λ“œν¬μΈνŠΈ 및 μ—­ν• 

OpenAIλŠ” λ‹€μ–‘ν•œ AI κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” μ—¬λŸ¬ μ—”λ“œν¬μΈνŠΈλ₯Ό κ°€μ§€κ³  있으며, 각 μ—”λ“œν¬μΈνŠΈλŠ” κ³ μœ ν•œ 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. 이 ν¬μŠ€νŒ…μ—μ„œλŠ” 자주 μ‚¬μš©λ˜λŠ” μ£Όμš” μ—”λ“œν¬μΈνŠΈμ™€ κ·Έ 역할을 μ„€λͺ…ν•˜κ³ , 각 μ—”λ“œν¬μΈνŠΈμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ½”λ“œ μ˜ˆμ‹œλ₯Ό μ œκ³΅ν•˜κ² μŠ΅λ‹ˆλ‹€.

3.1 Chat Completions μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/chat/completions
  • μ—­ν• : λŒ€ν™”ν˜• AI 응닡을 μƒμ„±ν•©λ‹ˆλ‹€. ChatGPT와 μœ μ‚¬ν•˜κ²Œ λŒ€ν™”ν˜• ν”„λ‘¬ν”„νŠΈλ₯Ό λ°›μ•„ μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— λ¬Έλ§₯에 λ§žλŠ” 응닡을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ‚¬μš© 예: 챗봇, 고객 지원, λŒ€ν™”ν˜• κ°€μ΄λ“œ, 가상 λΉ„μ„œ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
12
13
import openai

openai.api_key = "your-api-key"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain the basics of quantum computing."}
    ]
)

print(response.choices[0].message['content'])

3.2 Fine-tuning μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/fine-tuning
  • μ—­ν• : 사전 ν›ˆλ ¨λœ λͺ¨λΈμ„ μ‚¬μš©μžμ˜ νŠΉμ • 데이터에 맞게 μΆ”κ°€λ‘œ ν›ˆλ ¨μ‹œν‚΅λ‹ˆλ‹€. 이λ₯Ό 톡해 νŠΉμ • λ„λ©”μΈμ΄λ‚˜ μž‘μ—…μ— λŒ€ν•œ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© 예: 의료 데이터에 νŠΉν™”λœ ν…μŠ€νŠΈ 생성, νŠΉμ • λΈŒλžœλ“œ μ–Έμ–΄ μŠ€νƒ€μΌμ„ ν•™μŠ΅ν•œ AI λͺ¨λΈ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
import openai

openai.api_key = "your-api-key"

response = openai.FineTune.create(
    training_file="file-abc123",
    model="gpt-4"
)

print(response)

3.3 Batch μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/batch
  • μ—­ν• : λŒ€λŸ‰μ˜ μš”μ²­μ„ λΉ„λ™κΈ°μ μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. λŒ€κ·œλͺ¨ 데이터셋에 λŒ€ν•œ 평가, λΆ„λ₯˜, μž„λ² λ”© 생성 μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© 예: λŒ€κ·œλͺ¨ λ¬Έμ„œ λΆ„λ₯˜, 감성 뢄석, λŒ€λŸ‰ ν…μŠ€νŠΈ μž„λ² λ”© 생성.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
import openai

openai.api_key = "your-api-key"

response = openai.Batch.create(
    model="gpt-4",
    tasks=[{"prompt": "Analyze sentiment of this text"}, {"prompt": "Summarize this document"}]
)

print(response)

3.4 Image Generation μ—”λ“œν¬μΈνŠΈ (DALLΒ·E)

  • URL: /v1/images/generations
  • μ—­ν• : ν…μŠ€νŠΈ μ„€λͺ…을 기반으둜 이미지λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 창의적이고 독창적인 이미지 μ œμž‘μ— ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© 예: λ§ˆμΌ€νŒ… 이미지 생성, κ·Έλž˜ν”½ λ””μžμΈ, μ½˜μ…‰νŠΈ μ•„νŠΈ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
12
import openai

openai.api_key = "your-api-key"

response = openai.Image.create(
    prompt="A futuristic cityscape with flying cars",
    n=1,
    size="1024x1024"
)

image_url = response['data'][0]['url']
print("Generated image URL:", image_url)

3.5 Text to Speech μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/audio/generations
  • μ—­ν• : ν…μŠ€νŠΈλ₯Ό μžμ—°μŠ€λŸ¬μš΄ μŒμ„±μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ μŒμ„±μ„ μ§€μ›ν•˜λ©°, μŒμ„±μ˜ 속도와 톀을 μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© 예: μ˜€λ””μ˜€λΆ μ œμž‘, μŒμ„± μ•ˆλ‚΄ μ‹œμŠ€ν…œ, μ ‘κ·Όμ„± ν–₯상 도ꡬ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
import openai

openai.api_key = "your-api-key"

response = openai.Audio.create(
    model="gpt-4",
    input="This is a test of the text to speech conversion."
)

print(response['data'])

3.6 Speech to Text μ—”λ“œν¬μΈνŠΈ (Whisper)

  • URL: /v1/audio/transcriptions
  • μ—­ν• : μŒμ„± νŒŒμΌμ„ ν…μŠ€νŠΈλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ 언어와 μ•…μ„ΌνŠΈλ₯Ό μ§€μ›ν•˜λ©°, 높은 μ •ν™•λ„μ˜ μŒμ„± 인식을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ‚¬μš© 예: 회의둝 μžλ™ 생성, μžλ§‰ 생성, μŒμ„± λͺ…λ Ή μ‹œμŠ€ν…œ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
import openai

openai.api_key = "your-api-key"

audio_file = open("audio.wav", "rb")
response = openai.Audio.transcribe(
    model="whisper-1",
    file=audio_file
)

print("Transcribed text:", response['text'])

3.7 Embeddings μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/embeddings
  • μ—­ν• : ν…μŠ€νŠΈλ₯Ό 고차원 λ²‘ν„°λ‘œ λ³€ν™˜ν•˜μ—¬ 의미적 μœ μ‚¬μ„±μ„ 계산할 수 μžˆμŠ΅λ‹ˆλ‹€. 검색 μ—”μ§„, μΆ”μ²œ μ‹œμŠ€ν…œ λ“±μ—μ„œ ν™œμš©λ©λ‹ˆλ‹€.
  • μ‚¬μš© 예: ν…μŠ€νŠΈ μœ μ‚¬λ„ 뢄석, 검색 μ΅œμ ν™”, μΆ”μ²œ μ‹œμŠ€ν…œ.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
import openai

openai.api_key = "your-api-key"

response = openai.Embedding.create(
    input="OpenAI provides powerful AI models",
    model="text-embedding-ada-002"
)

embedding_vector = response['data'][0]['embedding']
print("Embedding vector:", embedding_vector)

3.8 Moderation μ—”λ“œν¬μΈνŠΈ

  • URL: /v1/moderations
  • μ—­ν• : μž…λ ₯된 ν…μŠ€νŠΈμ˜ μ•ˆμ „μ„±μ„ ν‰κ°€ν•©λ‹ˆλ‹€. 혐였 λ°œμ–Έ, 폭λ ₯적 ν‘œν˜„, 성적 μ½˜ν…μΈ  등을 νƒμ§€ν•˜κ³  차단할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© 예: 온라인 ν”Œλž«νΌμ˜ μ½˜ν…μΈ  필터링, μ•ˆμ „ν•œ λŒ€ν™” ν™˜κ²½ μœ μ§€.
  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
import openai

openai.api_key = "your-api-key"

response = openai.Moderation.create(
    input="This is a sample text that might contain harmful content."
)

print(response['results'])

  1. OpenAI의 6κ°€μ§€ μ£Όμš” Capabilities

OpenAI APIλŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, 이λ₯Ό 톡해 ν…μŠ€νŠΈ 생성, 이미지 처리, μŒμ„± 인식 λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œλŠ” OpenAI의 6κ°€μ§€ μ£Όμš” Capabilities에 λŒ€ν•΄ μ„€λͺ…ν•©λ‹ˆλ‹€.

4.1 ν…μŠ€νŠΈ 생성 (Text Generation)

ν…μŠ€νŠΈ 생성은 OpenAI API의 κ°€μž₯ κΈ°λ³Έμ μ΄λ©΄μ„œλ„ κ°•λ ₯ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. GPT-4와 같은 μ–Έμ–΄ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž ν”„λ‘¬ν”„νŠΈμ— κΈ°λ°˜ν•œ λ‹€μ–‘ν•œ ν…μŠ€νŠΈλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
response = openai.Completion.create(
    model="gpt-4",
    prompt="Write a story about a brave knight who fights a dragon.",
    max_tokens=200
)

print(response.choices[0].text.strip())

4.2 이미지 처리 (Vision)

OpenAI의 DALLΒ·E λͺ¨λΈμ€ ν…μŠ€νŠΈ μ„€λͺ…을 기반으둜 이미지λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 이 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 창의적이고 독창적인 이미지λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
response = openai.Image.create(
    prompt="A painting of a futuristic landscape with mountains and flying cars.",
    n=1,
    size="1024x1024"
)

image_url = response['data'][0]['url']
print("Generated image URL:", image_url)

4.3 ν•¨μˆ˜ 호좜 (Function Calling)

OpenAI λͺ¨λΈμ€ μ™ΈλΆ€ APIλ‚˜ λ‚΄λΆ€ ν•¨μˆ˜ ν˜ΈμΆœμ„ μ§€μ›ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λͺ¨λΈμ΄ νŠΉμ • μž‘μ—…μ— ν•„μš”ν•œ 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "What is the weather like in New York?"},
    ],
    functions=[
        {
            "name": "get_current_weather",
            "description": "Gets the current weather in a given city",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "The name of the city"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                }
            }
        }
    ]
)

print(response.choices[0].message['content'])
  • μΆ”κ°€ μ˜ˆμ‹œ:

    μ•„λž˜ μ½”λ“œλŠ” DuckDuckGo 검색과 OpenAI의 ν•¨μˆ˜ 호좜(Function Calling) κΈ°λŠ₯을 κ²°ν•©ν•˜μ—¬ μ‚¬μš©μž μ§ˆλ¬Έμ— λ‹΅λ³€ν•˜λŠ” 과정을 λ³΄μ—¬μ€λ‹ˆλ‹€.

    • μ—¬κΈ°μ„œ functions νŒŒλΌλ―Έν„°λ₯Ό 톡해 duck_search ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³ , messages에 μ‹œμŠ€ν…œ μ§€μ‹œμ™€ μ‚¬μš©μž μ§ˆλ¬Έμ„ ν¬ν•¨μ‹œν‚΅λ‹ˆλ‹€.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import openai
import json
from duckpy import Client
import ast

#  DuckDuckGo ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ΄ˆκΈ°ν™”
duckduckgo_client = Client()

# DuckDuckGoμ—μ„œ 검색을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ •μ˜
def duck_search(query) -> str:
    output = duckduckgo_client.search(query)
    return str(output)

# OpenAI APIλ₯Ό ν˜ΈμΆœν•˜μ—¬ 초기 응닡
completion = client.chat.completions.create(
        model="gpt-3.5-turbo-0613",
        temperature=0,
        functions=[
            {
                "name": "duck_search",
                "description": "Used to search online",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "query": {
                            "type": "string",
                            "description": "Translate the Korean content into English input query",
                        },
                    },
                    "required": ["query"],
                },
            }
        ],
        messages=[
            {"role": "system", 
            "content": "You must use the `duck_search` function to get information."},
            {"role": "user", 
            "content": "μ‘°μ§€ ν΄λ£¨λ‹ˆ 생일이 μ–Έμ œμ•Ό?"},
        ]
    )

print(completion)

4.4 κ΅¬μ‘°ν™”λœ 좜λ ₯ (Structured Outputs)

OpenAI λͺ¨λΈμ€ JSONκ³Ό 같은 κ΅¬μ‘°ν™”λœ 데이터λ₯Ό 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 νŠΉμ • ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό 받을 수 μžˆμ–΄, ν”„λ‘œκ·Έλž¨μ—μ„œ 데이터λ₯Ό 더 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
8
9
10
11
12
13
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Give me a recipe for chocolate cake."}],
    functions=[{
        "name": "generate_recipe",
        "description": "Generates a

 recipe",
        "parameters": {"type": "object", "properties": {"ingredients": {"type": "array"}}}
    }]
)

print(response.choices[0].message['content'])

4.5 λ³΅μž‘ν•œ μΆ”λ‘  (Reasoning)

OpenAI λͺ¨λΈμ€ λ³΅μž‘ν•œ λ¬Έμ œμ— λŒ€ν•΄ λ…Όλ¦¬μ μœΌλ‘œ μΆ”λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜ν•™ 문제 ν•΄κ²°, μ½”λ“œ 디버깅 λ“± λ‹€μ–‘ν•œ μΆ”λ‘  μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
response = openai.Completion.create(
    model="gpt-4",
    prompt="Solve the equation: 5x - 3 = 12",
    max_tokens=50
)

print(response.choices[0].text.strip())

4.6 κ³ κΈ‰ μ‚¬μš©λ²• (Advanced Usage)

OpenAI APIλŠ” 토큰 μ œν•œ μ„€μ •, 슀트리밍 응닡, λͺ¨λΈμ˜ μ˜¨λ„ 쑰절과 같은 κ³ κΈ‰ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžλŠ” λͺ¨λΈμ˜ 응닡 μŠ€νƒ€μΌμ„ μ„Έλ°€ν•˜κ²Œ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ (슀트리밍 응닡):
1
2
3
4
5
6
7
8
response = openai.Completion.create(
    model="gpt-4",
    prompt="Tell me a long story about a hero's journey.",
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.get("content", ""), end="")

  1. νŒŒμΈνŠœλ‹λœ λͺ¨λΈ μ‚¬μš© 방법

OpenAI APIλŠ” 사전 ν•™μŠ΅λœ λͺ¨λΈλΏλ§Œ μ•„λ‹ˆλΌ, νŒŒμΈνŠœλ‹μ„ 톡해 νŠΉμ • μž‘μ—…μ— 맞게 λͺ¨λΈμ„ μ‘°μ •ν•˜μ—¬ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. νŒŒμΈνŠœλ‹λœ λͺ¨λΈμ€ νŠΉμ • 도메인 λ˜λŠ” μž‘μ—…μ— λŒ€ν•΄ μ„±λŠ₯을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ―Έμ„Έ μ‘°μ •λœ λͺ¨λΈμž…λ‹ˆλ‹€.

5.1 νŒŒμΈνŠœλ‹ λͺ¨λΈ 호좜

νŒŒμΈνŠœλ‹μ΄ μ™„λ£Œλ˜λ©΄ ν•΄λ‹Ή λͺ¨λΈμ—λŠ” κ³ μœ ν•œ IDκ°€ λΆ€μ—¬λ˜λ©°, model νŒŒλΌλ―Έν„°λ‘œ 이 IDλ₯Ό μ‚¬μš©ν•˜μ—¬ APIμ—μ„œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ˜ˆμ‹œ μ½”λ“œ:
1
2
3
4
5
6
7
response = openai.Completion.create(
    model="fine-tuned-model-id",  # νŒŒμΈνŠœλ‹λœ λͺ¨λΈ ID
    prompt="Summarize the article about climate change.",
    max_tokens=100
)

print(response.choices[0].text.strip())

  1. κ²°λ‘ 

OpenAI APIλŠ” λ‹€μ–‘ν•œ AI κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, ν…μŠ€νŠΈ 생성, 이미지 처리, ν•¨μˆ˜ 호좜, κ΅¬μ‘°ν™”λœ 좜λ ₯, λ³΅μž‘ν•œ μΆ”λ‘  λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ μ‰½κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 사전 ν•™μŠ΅λœ λͺ¨λΈμ„ μ‚¬μš©ν•  수 μžˆμ„ 뿐만 μ•„λ‹ˆλΌ, νŠΉμ • μš©λ„μ— 맞게 νŒŒμΈνŠœλ‹λœ λͺ¨λΈμ„ 톡해 더 λ‚˜μ€ μ„±λŠ₯을 μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μŠ΅

  1. API ν‚€ λ°œκΈ‰: OpenAI 계정에 κ°€μž…ν•˜κ³  API ν‚€λ₯Ό λ°œκΈ‰λ°›μœΌμ„Έμš”.
  2. μ—”λ“œν¬μΈνŠΈ μ‹€ν—˜: 제곡된 μ½”λ“œλ₯Ό λ°”νƒ•μœΌλ‘œ OpenAI API의 λ‹€μ–‘ν•œ μ—”λ“œν¬μΈνŠΈλ₯Ό μ‹€ν—˜ν•΄ λ³΄μ„Έμš”.
  3. νŒŒμΈνŠœλ‹ λͺ¨λΈ ꡬ좕: μžμ‹ μ˜ 데이터에 맞좰 λͺ¨λΈμ„ νŒŒμΈνŠœλ‹ν•˜κ³ , κ³ μœ ν•œ AI μ†”λ£¨μ…˜μ„ κ°œλ°œν•΄ λ³΄μ„Έμš”.

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” OpenAI API의 κΈ°λ³Έ μ‚¬μš©λ²•κ³Ό 각 μ—”λ“œν¬μΈνŠΈ, μ£Όμš” κΈ°λŠ₯에 λŒ€ν•œ μ „λ°˜μ μΈ κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό λ°”νƒ•μœΌλ‘œ AI μ†”λ£¨μ…˜μ„ λ”μš± 효과적으둜 ꡬ좕할 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

κ³„μ†ν•΄μ„œ Documents λ³΄λ©΄μ„œ μΆ”κ°€λ˜λŠ” λ‚΄μš©μ΄ 있으면 μΆ”κ°€ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€ :)



-->