research notes

OpenAI API 활용 본문

GPT/개념정의

OpenAI API 활용

forest62590 2023. 10. 29. 15:16
728x90

1. OpenAI API 정의

OpenAI API는 OpenAI가 제공하는 서비스에 액세스하기 위한 프로그래밍 인터페이스. OpenAI API를 사용하면 개발자는 GPT를 활용해 텍스트 생성, 번역, 요약, 질문 응답 등 다양한 자연어 관련 자신의 서비스를 개발할 수 있다. OpenAI API 지원 프로그래밍 언어는 공식적으로 파이썬과 Node.js이며, API 활용시 비용이 발생할 수 있으므로 이를 확인하는 것이 중요하다.

2. OpenAI API Key

OpenAI API 서비스를 사용하기 위해서는 사전에 API키 발급이 되어야 한다.

- https://openai.com/blog/openai-api 사이트 이동

- 로그인 → 계정 아이콘 클릭 → View API Keys 클릭

- Create a new secret key 클릭

- API 키 복사(API키는 한 번 창이(Create new secret key) 활성화 되면 복사를 해 놓아야 한다. 창을 종료 후에는 확인이 불가하다...)

< OpenAI API Key 생성, https://community.openai.com/t/named-api-keys-and-new-api-key-limit/157935 >

3. OpenAI API 사용 요금

- https://openai.com/pricing

- 기본적으로 OpenAI API는 유료이며, 계정 생성시 5달러 상당의 무료 크레딧이 제공 됨(단, 3개월 이내 사용 제한)

< OpenAI API 무료 빌링 발급 >

- 사용하는 프롬프트의 입력 및 출력 토큰 수에 따라 요금이 부과되는 형태 

 

< GPT-4 요금 정책 >

- Open API 현재 사용 요금은 [OpenAI 로그인 → 계정 아이콘 클릭 → Manage Account → Usage]에서 확인 할 수 있음

- 또한 [Billing → Usage limits]에서 사용량을 사전에 설정하여 조절 및 모니터링이 가능

  • Hard limit: 월 사용량이 정의한 기준치를 초과할 경우 서비스를 제한하는 기능
  • Soft limit: 월 사용량이 정의한 기준치를 초과할 경우 사전 알림 메일을 보내는 기능

4. OpanAI API 사용방법

4.1. 텍스트 생성 및 질의응답

매개변수 설명
model(required) 사용할 모델의 ID(text-davinci-003 등)
prompt(required) 입력에 사용되는 프롬프트
temperature 모델의 다음 토큰 확률분포에 변형을 가해 문장을 다양하게 생성하는 기법(0에서 2 사이 선택 가능)

0.8과 같이 값이 높을수록 출력이 더 무작위로 만들어지고, 0.2와 같이 값이 낮을수록 더 일관성 있는 문장 생성
max_tokens 생성할 최대 토큰 수
!pip install openai

import openai

openai.api_key = "발급 받은 OPENAI KEY" 

prompt = '''인공지능에 대해 알려주세요'''

response = openai.Completion.create(
    model = 'text-davinci-003',
    prompt = prompt,
    temperature = 0,
    max_tokens=500
)

print(response['choices'][0]['text'])

 

4.2. 이미지 생성

매개변수 설명
prompt 원하는 이미지에 대한 텍스트 설명(최대 길이는 1000자)
n 생성할 이미지 수(1에서 10 사이)
size 생성할 이미지 크기(256x256, 512x512, 1024x1024 중 하나)
response_format 생성할 이미지 반환 형식(url 또는 b64_json)
user 최종 사용자 ID
!pip install openai

import openai

openai.api_key = "발급받은 OPENAI API KEY"

prompt = "dog on the clouds"

response = openai.Image.create(
    prompt=prompt, ## 이미지 설명 프롬프트
    n=1, ## 생성할 이미지 수
    size='512x512' ## 이미지 크기
)

image_url = response['data'][0]['url']
print(image_url)
## print(image_url) 생성 요청한 이미지 url

 

4.3. 모더레이션

사용자 입력 또는 생성 모델이 생성한 콘텐츠가 OpenAI의 사용 정책을 준수하는지 확인하기 위해 모더레이션 API를 활용 할 수 있다. 모더레이션 API 활용 결과로 정책 위반 여부에 대한 결과를 전달한다. 아래 코드 실행 결과로 'violence=true'임을 알 수 있다.

< OpenAI 모더레이션 API 검토 범위 >

OpenAI 활용 컨텐츠 정책: https://platform.openai.com/docs/guides/moderation/overview

!pip install openai

import openai

openai.api_key = "발급받은 OPENAI API KEY"

response = openai.moderations.create(
    input = "I want to kill them."
)

print(response.results[0])
{
  "id": "modr-XXXXX",
  "model": "text-moderation-005",
  "results": [
    {
      "flagged": true, // OpenAI의 컨텐츠 정책 위반인 경우 'true'
      "categories": { // 각 카테고리별 OpenAI의 컨텐츠 정책 위반 여부(T/F)
        "sexual": false,
        "hate": false,
        "harassment": false,
        "self-harm": false,
        "sexual/minors": false,
        "hate/threatening": false,
        "violence/graphic": false,
        "self-harm/intent": false,
        "self-harm/instructions": false,
        "harassment/threatening": false,
        "violence": true,
      },
      "category_scores": { // 각 카테고리별 점수(0~1 사이의 범위)
        "sexual": 1.2282071e-06,
        "hate": 0.010696256,
        "harassment": 0.29842457,
        "self-harm": 1.5236925e-08,
        "sexual/minors": 5.7246268e-08,
        "hate/threatening": 0.0060676364,
        "violence/graphic": 4.435014e-06,
        "self-harm/intent": 8.098441e-10,
        "self-harm/instructions": 2.8498655e-11,
        "harassment/threatening": 0.63055265,
        "violence": 0.99011886,
      }
    }
  ]
}

5. OpenAI 플러그인

ChatGPT 플러그인은 현재 ChatGPT Plus 사용자만 사용할 수 있는 기능으로, 타사 서비스의 API에 연결해 ChatGPT 서비스를 활용할 수 있도록 제공하는 기능이다. 즉, ChatGPT 서비스에 Expedia(여행), Shopify(쇼핑) 등의 플러그인을 연결해 관련된 정보를 받을 수 있도록 한다.

< 설치 가능 OpenAI 플러그인 목록 >

또한, ChatGPT Retrieval Plugin을 활용해 개인이나 기업 및 조직의 고유(프라이빗) 데이터를 ChatGPT가 액세스 하여 해당 데이터에서 검색 및 답변을 할 수 있는 기능을 제공한다. 즉, 사용자는 파일, 메모, 이메일, 문서 등의 데이터에서 가장 관련성이 높은 답변을 받을 수 있다.

References:

[1] https://devocean.sk.com/blog/techBoardDetail.do?ID=164761

[2] GPT-4, ChatGPT, 라마인덱스, 랭체인을 활용한 인공지능 프로그래밍, 후루카와 히데카즈 지음/트랜스메이트 옮김

728x90
Comments