TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 Gen AI>

[Gen AI] OpenAI API 사용해보기 (로컬, 주피터노트북)

by 기록자_Recordian 2024. 12. 10.
728x90
반응형
이전 내용
 

[Gen AI] OpenAI API 키 발급하기

Open AI API란? OpenAI에서 개발한 인공지능 모델을 프로그래밍 인터페이스로 제공하며, 외부 애플리케이션에서 이를 유연하게 활용할 수 있도록 만든 API이다.즉, OpenAI에서 만든 챗GPT 같은 챗봇 기

puppy-foot-it.tistory.com


OpenAI 패키지 설치하기

 

먼저 아나콘다 프롬프트를 열고 openai 패키지를 설치하는 코드를 입력한다. (필자의 경우에는 가상 환경에 설치하였다.)

pip install openai

 

설치가 완료된 후, 주피터노트북을 실행하고 새로운 프로젝트를 실행할 노트북을 생성한다.


API 키 설치 및 호출하기

 

주피터노트북의 새로운 노트북에 openai 모듈을 사용하기 위해 client 객체를 생성한다.

API 키의 경우, 지난 번에 환경변수에 등록해놨으므로, 코드를 통해 같이 불러온다.

import os
import openai

# 환경변수에서 OpenAI API 키를 읽어옴.
openai_api_key = os.getenv('OPENAI_API_KEY')

# API 키가 환경변수에 설정되어 있는지 확인.
if not openai_api_key:
    raise ValueError("환경변수 'OPENAI_API_KEY'가 설정되지 않았습니다.")

# OpenAI API 키를 설정.
openai.api_key = openai_api_key

# OpenAI 클라이언트를 생성.
client = openai.OpenAI()

 

API를 호출하기 위해 client.chat.completions.create 함수를 작성해야 한다.

create 함수의 매개변수로는 

  • model: gpt-3.5-turbo, (다른 모델을 사용할 수도 있다)
  • meessages: 리스트와 딕셔너리 형태로 값 할당 (값을 할당할 때는 반드시 딕셔너리를 담은 리스트를 작성해야 하며, "role"과 "content"로 이루어진 2개의 키가 포함되어 있어야 한다.

출력값을 확인해본다

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "당신은 헤이마트의 상담원입니다."},
        {"role": "user", "content": "안녕하세요!"}
    ]
)

# 생성된 응답의 텍스트 출력
print(completion.choices[0].message)

 

※ "role"의 값으로 들어갈 수 있는 문자열은

  • "system": 시스템 메시지는 모델의 동작을 설정하거나 전체적인 톤을 설정하는 데 사용된다. 예를 들어, 모델에게 특정 지침을 제공하거나 대화의 컨텍스트를 설정할 때 사용된다.
  • "user": 사용자 메시지는 실제 사용자로부터 입력된 내용을 나타낸다. 이 메시지는 사용자가 모델에 묻고자 하는 질문이나 요청을 포함한다.
  • "assistant": 어시스턴트 메시지는 모델이 생성한 응답을 나타낸다. 이 메시지는 사용자 요청에 대해 모델이 반응하는 내용을 포함한다.
  • "tool" : 툴 메시지는 모델이 외부 도구와 상호 작용할 때 사용하는 역할을 한다. 이 역할을 통해 모델은 특정 기능이나 서비스에 접근할 수 있다.

[API 호출 세부 설정]

API를 호출할 때 추가할 수 있는 매개변수는 다음과 같다.

1. temperature:

- 설명: 출력의 창의성 수준을 조정. 낮은 값(0.0)은 더 집중된 결과를, 높은 값(1.0 이상)은 더 창의적이고 다양한 결과를 유도.

- 타입: float

- 범위: 0.0 ~ 2.0 (보통 0.7가 기본값)

 

2. top_p:

- 설명: 네크샌프(nucleus) 샘플링을 적용하여 결과의 다양성을 조절. 확률의 상위 토큰들만 고려.

- 타입: float

- 범위: 0.0 ~ 1.0 (기본값은 1.0)

 

3. max_tokens:

- 설명: 생성될 응답의 최대 토큰 수를 지정.

- 타입: int

- 범위: 1 ~ 설정된 한도(모델마다 다름)

 

4. presence_penalty:

- 설명: 새로운 주제를 도입하는 것을 장려하기 위해 페널티를 적용.

- 타입: float

- 범위: -2.0 ~ 2.0

 

5. frequency_penalty:

- 설명: 반복되는 단어에 대해 페널티를 적용하여 다양성을 높임.

- 타입: float

- 범위: -2.0 ~ 2.0

 

6.stop:

- 설명: 생성된 텍스트가 특정 토큰 시퀀스를 만나면 중지.

- 타입: string 또는 list of string

- 예시: "["\n", "\n\n"]"

 

7. logit_bias:

- 설명: 특정 토큰의 출현 가능성을 조절. 사용자가 특정 토큰의 로그 확률에 바이아스를 줄 수 있음.

- 타입: dictionary

- 예시: {"50256": -1.0}

 

8. user:

- 설명: 사용자 식별자를 제공하여 결과를 맞춤화.

- 타입: string

- 예시: "user-1234"

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "당신은 헤이마트의 상담원입니다."},
        {"role": "user", "content": "저녁으로 무엇을 먹을까요? 짧게 설명해주세요."}
    ],
    # 매개변수들
    temperature=0.7, # 답변에 대해 창의적일지, 정확할지 결정
    max_tokens=100, # 챗gpt가 답변할 수 있는 최대 토큰 수
    top_p=1, # 토큰의 확률 분포 제한 (응답의 다양성 제어)
    presence_penalty=0, # 이미 나온 내용을 반복하는 것에 대한 패널티 부여
    frequency_penalty=0, # 자주 나타나는 단어나 구절을 반복하는 것에 대한 패널티 부여
    n=2, # 생성할 응답 개수
    stop=None # 특정 문자열이나 문자열 목록을 만나면 응답 중단
)

for choice in completion.choices:
    print(choice.index, choice.message.content)

 


다음 내용

 

[Gen AI] 그라디오(Gradio)

이전 내용 [Gen AI] OpenAI API 사용해보기 (로컬, 주피터노트북)이전 내용 [Gen AI] OpenAI API 키 발급하기Open AI API란? OpenAI에서 개발한 인공지능 모델을 프로그래밍 인터페이스로 제공하며, 외부 애플

puppy-foot-it.tistory.com


[출처]

Hey, 파이썬! 생성형 AI 활용 앱 만들어줘

OpenAI 사이트

728x90
반응형