제퍼넷 로고

Python으로 OpenAI API 탐색 – KDnuggets

시간

Python으로 OpenAI API 탐색
다음으로 생성된 이미지 Ideogram.ai
 

OpenAI에 대해 들어보지 못한 사람이 있나요? AI 연구소는 유명한 제품인 ChatGPT로 인해 세상을 변화시켰습니다.

이는 문자 그대로 AI 구현의 환경을 변화시켰으며 이제 많은 기업이 차세대 혁신을 향해 달려가고 있습니다.

많은 경쟁에도 불구하고 OpenAI는 최고의 모델과 지속적인 지원을 갖추고 있기 때문에 여전히 모든 Generative AI 비즈니스 요구 사항을 충족하는 회사입니다. 이 회사는 이미지 생성, 텍스트 음성 변환 등 다양한 작업 기능을 갖춘 다양한 최첨단 생성 AI 모델을 제공합니다. 

OpenAI가 제공하는 모든 모델은 API 호출을 통해 사용할 수 있습니다. 간단한 Python 코드를 사용하면 이미 모델을 사용할 수 있습니다. 

이 기사에서는 OpenAI API를 Python과 함께 사용하는 방법과 수행할 수 있는 다양한 작업을 살펴보겠습니다. 이 글을 통해 많은 것을 배우셨으면 좋겠습니다.

이 기사를 따르려면 준비해야 할 몇 가지 사항이 있습니다.

키가 없으면 OpenAI 모델에 액세스할 수 없으므로 가장 중요한 것은 OpenAI의 API 키입니다. 액세스 권한을 얻으려면 OpenAI 계정에 등록하고 API 키를 요청해야 합니다. 계정 페이지. 키를 받은 후에는 OpenAI 인터페이스에 다시 나타나지 않으므로 기억할 수 있는 곳에 저장하세요.

다음으로 설정해야 할 것은 OpenAI API를 사용하기 위해 선불 크레딧을 구매하는 것입니다. 최근 OpenAI는 방법에 대한 변경 사항을 발표했습니다. 그들의 청구 작업. 월말에 결제하는 대신 API 호출에 대한 선불 크레딧을 구매해야 합니다. 당신은 방문 할 수 있습니다 OpenAI 가격 필요한 크레딧을 추정하는 페이지입니다. 당신은 또한 그들의 모델 페이지 어떤 모델이 필요한지 이해합니다.

마지막으로 환경에 OpenAI Python 패키지를 설치해야 합니다. 다음 코드를 사용하면 됩니다.

pip install openai

 

그런 다음 아래 코드를 사용하여 OpenAI 키 환경 변수를 설정해야 합니다.

import os

os.environ['OPENAI_API_KEY'] = 'YOUR API KEY'

 

모든 설정이 완료되었으면 Python을 사용하여 OpenAI 모델의 API를 탐색해 보겠습니다.

OpenAI API의 핵심은 Text Generations 모델입니다. 이러한 대형 언어 모델 제품군은 프롬프트라는 텍스트 입력에서 텍스트 출력을 생성할 수 있습니다. 프롬프트는 기본적으로 텍스트 분석, 문서 초안 생성 등과 같이 모델에서 기대하는 사항에 대한 지침입니다.

간단한 Text Generations API 호출을 실행하는 것부터 시작해 보겠습니다. OpenAI의 GPT-3.5-Turbo 모델을 기본 모델로 사용합니다. 가장 진보된 모델은 아니지만 가장 저렴한 모델로도 텍스트 관련 작업을 수행하기에 충분합니다.

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

  1. “예측 분석의 힘을 활용하여 데이터 기반 의사 결정을 내리세요!”
  2. “가치 있는 통찰력을 발견하기 위해 데이터 바다를 깊이 탐구합니다.”
  3. “고급 알고리즘을 통해 원시 데이터를 실행 가능한 인텔리전스로 변환합니다.”

텍스트 생성 모델에 대한 API 호출은 API 엔드포인트를 사용합니다. chat.completions 프롬프트에서 텍스트 응답을 생성합니다. 

텍스트 생성에는 모델과 메시지라는 두 가지 필수 매개변수가 있습니다. 

해당 모델의 경우, 해당 모델 페이지에서 사용 가능한 모델 목록을 확인하실 수 있습니다. 

메시지의 경우 역할과 콘텐츠라는 두 쌍이 포함된 사전을 전달합니다. 역할 키는 대화 모델에서 역할 발신자를 지정했습니다. 시스템, 사용자, 보조자라는 3가지 역할이 있습니다.

메시지의 역할을 사용하면 모델 동작을 설정하고 모델이 프롬프트에 어떻게 응답해야 하는지에 대한 예를 설정할 수 있습니다.

모델에 대한 지침을 제공하기 위해 역할 도우미를 사용하여 이전 코드 예제를 확장해 보겠습니다. 또한 결과를 개선하기 위해 텍스트 생성 모델에 대한 일부 매개변수를 탐색합니다.

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Generate me 3 jargons that I can use for my Social Media content as a Data Scientist content creator."},
        {"role": "assistant", "content": "Sure, here are three jargons: Data Wrangling is the key, Predictive Analytics is the future, and Feature Engineering help your model."},
        {"role": "user", "content": "Great, can you also provide me with 3 content ideas based on these jargons?"}
    ],
    max_tokens=150,
    temperature=0.7,
    top_p=1,
    frequency_penalty=0
)

print(completion.choices[0].message.content)

 

물론! 제공된 전문 용어를 기반으로 한 세 가지 콘텐츠 아이디어는 다음과 같습니다.

  1. "데이터 랭글링의 힘 발휘: 데이터 과학자를 위한 단계별 가이드" – 실제 데이터 과학 프로젝트에서 데이터 랭글링을 위한 모범 사례와 도구를 보여주는 블로그 게시물 또는 비디오 튜토리얼을 만드세요.
  1. "예측 분석의 미래: 데이터 과학의 동향과 혁신" – 예측 분석의 새로운 동향과 기술, 그리고 이것이 데이터 과학의 미래를 어떻게 형성하고 있는지에 대해 논의하는 사고 리더십 글을 작성하세요.
  1. "특성 엔지니어링 마스터하기: 모델 성능을 향상하는 기술" – 다양한 특성 엔지니어링 기술과 해당 기술이 기계 학습 모델의 정확성과 효율성 향상에 미치는 영향을 강조하는 인포그래픽 또는 소셜 미디어 시리즈를 개발합니다.

결과 출력은 모델에 제공한 예를 따릅니다. 모델이 따르기를 원하는 특정 스타일이나 결과가 있는 경우 역할 도우미를 사용하는 것이 유용합니다.

매개변수에 관해서, 우리가 사용한 각 매개변수에 대한 간단한 설명은 다음과 같습니다.

  • max_tokens: 이 매개변수는 모델이 생성할 수 있는 최대 단어 수를 설정합니다.
  • 온도: 이 매개변수는 모델 출력의 예측 불가능성을 제어합니다. 온도가 높을수록 더 다양하고 상상력이 풍부한 출력이 생성됩니다. 허용되는 범위는 0부터 무한대까지이지만 2보다 큰 값은 일반적이지 않습니다.
  • top_p: 핵 샘플링이라고도 하는 이 매개변수는 모델이 출력을 가져오는 확률 분포의 하위 집합을 결정하는 데 도움이 됩니다. 예를 들어, top_p 값이 0.1이면 모델이 샘플링을 위해 확률 분포의 상위 10%만 고려한다는 의미입니다. 값의 범위는 0에서 1까지이며, 값이 높을수록 출력 다양성이 커집니다.
  • 빈도_페널티: 모델 출력에서 ​​반복되는 토큰에 불이익을 줍니다. 페널티 값의 범위는 -2에서 2까지입니다. 여기서 양수 값은 토큰의 반복을 방지하고 음수 값은 반대의 역할을 하여 반복적인 단어 사용을 장려합니다. 0 값은 반복에 대해 페널티가 적용되지 않음을 나타냅니다.

마지막으로 다음 코드를 사용하여 모델 출력을 JSON 형식으로 변경할 수 있습니다.

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  response_format={ "type": "json_object" },
  messages=[
    {"role": "system", "content": "You are a helpful assistant designed to output JSON.."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

{
"전문 용어": [
“예측 분석을 활용하여 귀중한 통찰력 확보”,
“고급 머신러닝 알고리즘의 복잡성 탐구”,
“빅데이터의 힘을 활용하여 데이터 기반 의사결정을 추진합니다”
]
}

결과는 JSON 형식이며 모델에 입력한 프롬프트를 따릅니다.

완료 텍스트 생성 API 문서, 전용 페이지에서 확인하실 수 있습니다.

OpenAI 모델은 텍스트 생성 사용 사례에 유용하며 이미지 생성 목적으로 API를 호출할 수도 있습니다. 

DALL·E 모델을 사용하면 요청에 따라 이미지를 생성할 수 있습니다. 이를 수행하는 간단한 방법은 다음 코드를 사용하는 것입니다.

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.generate(
  model="dall-e-3",
  prompt="White Piano on the Beach",
  size="1792x1024",
  quality="hd",
  n=1,
)

image_url = response.data[0].url
Image(url=image_url)

 

Python으로 OpenAI API 탐색
DALL·E 3으로 생성된 이미지
 

매개변수에 대한 설명은 다음과 같습니다.

  • 모델: 사용할 이미지 생성 모델입니다. 현재 API는 DALL·E 3 및 DALL·E 2 모델만 지원합니다. 
  • 신속한: 모델이 이미지를 생성하는 데 기반이 되는 텍스트 설명입니다. 
  • 크기: 생성된 이미지의 해상도를 결정합니다. DALL·E 3 모델에는 세 가지 선택 사항이 있습니다(1024×1024, 1024×1792 또는 1792×1024).
  • 품질: 이 매개변수는 생성된 이미지의 품질에 영향을 미칩니다. 계산 시간이 필요한 경우 "standard"가 "hd"보다 빠릅니다.
  • n: 프롬프트에 따라 생성할 이미지 수를 지정합니다. DALL·E 3은 한 번에 하나의 이미지만 생성할 수 있습니다. DALL·E 2는 한 번에 최대 10개까지 생성할 수 있습니다.

DALL·E 2 모델에서만 가능하지만 기존 이미지에서 변형 이미지를 생성하는 것도 가능합니다. API는 4MB 미만의 정사각형 PNG 이미지도 허용합니다.

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.create_variation(
  image=open("white_piano_ori.png", "rb"),
  n=2,
  size="1024x1024"
)

image_url = response.data[0].url

Image(url=image_url)

 

이전 모델을 사용하다보니 DALL·E 3세대만큼 이미지가 좋지 않을 수도 있습니다.

OpenAI는 이미지 입력을 이해할 수 있는 모델을 제공하는 선도적인 기업입니다. 이 모델을 Vision 모델이라고 하며 때로는 GPT-4V라고도 합니다. 모델은 우리가 제공한 이미지를 바탕으로 질문에 답할 수 있습니다.

Vision 모델 API를 사용해 보겠습니다. 이 예에서는 DALL·E 3 모델에서 생성한 흰색 피아노 이미지를 사용하여 로컬에 저장합니다. 또한 이미지 경로를 사용하고 이미지 설명 텍스트를 반환하는 함수를 만들겠습니다. api_key 변수를 API 키로 변경하는 것을 잊지 마세요.

from openai import OpenAI
import base64
import requests
def provide_image_description(img_path):

    client = OpenAI()

    api_key = 'YOUR-API-KEY'
    # Function to encode the image
    def encode_image(image_path):
      with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')
   
    # Path to your image
    image_path = img_path
   
    # Getting the base64 string
    base64_image = encode_image(image_path)
   
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {api_key}"
    }
   
    payload = {
      "model": "gpt-4-vision-preview",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": """Can you describe this image? """
            },
            {
              "type": "image_url",
              "image_url": {
                "url": f"data:image/jpeg;base64,{base64_image}"
              }
            }
          ]
        }
      ],
      "max_tokens": 300
    }
   
    response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

    return response.json()['choices'][0]['message']['content']

 

이 이미지에는 고요한 해변 배경에 그랜드 피아노가 놓여 있습니다. 피아노는 흰색으로 마감되어 종종 우아함과 연관되어 있음을 나타냅니다. 악기는 부드러운 파도가 모래를 가볍게 쓰다듬고 피아노 바닥과 그에 어울리는 스툴에 닿는 거품을 만드는 해안선 가장자리에 바로 위치해 있습니다. 해변 주변은 맑고 푸른 하늘, 멀리 솜털 같은 구름, 수평선으로 펼쳐지는 잔잔한 바다가 평온함과 고립감을 암시합니다. 모래 위의 피아노 주변에는 다양한 크기와 모양의 수많은 조개껍데기가 흩어져 있어 자연의 아름다움과 주변 환경의 고요한 분위기를 강조합니다. 자연적인 해변 환경에 클래식 음악 악기가 병치되어 초현실적이고 시각적으로 시적인 구성을 만들어냅니다.

Vision 모델 요구 사항에 맞게 위 사전의 텍스트 값을 조정할 수 있습니다.

OpenAI는 또한 Text-to-Speech 모델을 기반으로 오디오를 생성하는 모델을 제공합니다. 음성 내레이션 스타일이 제한되어 있지만 사용하기는 매우 쉽습니다. 또한 이 모델은 다양한 언어를 지원합니다. 언어 지원 페이지.

오디오를 생성하려면 아래 코드를 사용할 수 있습니다.

from openai import OpenAI
client = OpenAI()

speech_file_path = "speech.mp3"
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="I love data science and machine learning"
)

response.stream_to_file(speech_file_path)

 

디렉터리에 오디오 파일이 표시되어야 합니다. 플레이해보고 자신의 표준에 맞는지 확인해보세요. 

현재 Text-to-Speech 모델에 사용할 수 있는 매개변수는 몇 가지뿐입니다.

  • model: 사용할 텍스트 음성 변환 모델입니다. 두 가지 모델만 사용할 수 있습니다(tts-1 또는 tts-1-hd). 여기서 tts-1은 속도를 최적화하고 tts-1-hd는 품질을 최적화합니다.
  • voice: 모든 음성이 영어에 최적화되어 있는 경우 사용할 음성 스타일입니다. 선택 항목은 합금, 에코, 우화, 오닉스, 노바 및 쉬머입니다.
  • response_format: 오디오 형식 파일입니다. 현재 지원되는 형식은 mp3, opus, aac, flac, wav 및 pcm입니다.
  • 속도: 생성된 오디오 속도입니다. 0.25에서 4 사이의 값을 선택할 수 있습니다. 
  • 입력: 오디오를 생성할 텍스트입니다. 현재 이 모델은 최대 4096자까지만 지원합니다.

OpenAI는 오디오 데이터를 전사하고 번역하는 모델을 제공합니다. 속삭임 모델을 사용하면 지원되는 언어의 오디오를 텍스트 파일로 복사하고 영어로 번역할 수 있습니다.

이전에 생성한 오디오 파일에서 간단한 텍스트 변환을 시도해 보겠습니다.

from openai import OpenAI
client = OpenAI()

audio_file= open("speech.mp3", "rb")
transcription = client.audio.transcriptions.create(
  model="whisper-1",
  file=audio_file
)

print(transcription.text)

 

저는 데이터 과학과 머신러닝을 좋아합니다.

오디오 파일을 영어로 번역하는 것도 가능합니다. 해당 모델은 아직 다른 언어로 번역할 수 없습니다.

from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
translate = client.audio.translations.create(
  model="whisper-1",
  file=audio_file
)

우리는 텍스트 생성, 이미지 생성, 오디오 생성, 비전, 텍스트 음성 변환 모델 등 OpenAI가 제공하는 여러 모델 서비스를 살펴보았습니다. 각 모델에는 사용하기 전에 배워야 할 API 매개변수와 사양이 있습니다.
 
 

코넬리우스 유다 위자야 데이터 과학 보조 관리자이자 데이터 작성자입니다. Allianz Indonesia에서 풀타임으로 일하는 동안 그는 소셜 미디어와 글쓰기 미디어를 통해 Python과 데이터 팁을 공유하는 것을 좋아합니다. Cornellius는 다양한 AI 및 기계 학습 주제에 대해 글을 씁니다.

spot_img

최신 인텔리전스

spot_img