※ 이 글은 데이콘 새싹 해커톤의 GPTs 교육 내용을 이해하기 위해 작성한 교육자료 요약문임을 밝힙니다.
1. openAI 라이브러리 설치
- openAI 라이브러리 주요 기능:
- OpenAI 에서 제공하는 다양한 AI 모델에 접근 가능 (GPT-3, GPT-3.5, Codex 등)
- 텍스트, 이미지 생성, vision, TTS, STT
- 파일 검색
- openAI 라이브러리는 Python 패키지 관리 시스템인 pip로 설치할 수 있다.
pip install openai
2. API Key 받아오기
3. API 요청 보내기
# 모듈 불러오기
from openai import OpenAI
client = OpenAI(api_key=api_key)
# 리스트 & 내부 딕셔너리 (role(user, system), content)
# role - user: 유저의 질문, system: 챗봇 응답
messages = [
{"role": "user", "content": "안녕, 만나서 반가워."}
]
# gpt-3.5-turbo -- 고성능 대화형 AI 모델
model = "gpt-3.5-turbo"
# API 요청 보내는 부분
# client.chat.completions.create : 채팅완료요청 생성
stream = client.chat.completions.create(
model=model,
messages=messages,
stream=True,
)
# 메시지 출력
# chunk(응답)에 내용이 있으면 출력
# 응답의, 첫번째 선책지, 점진적으로 응답 받기, 실제 내용
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
4. API 요청 기능
- 3번 내용을 바탕으로 클래스 형태로 기능 정의
class GptAPI():
def __init__(self, model, client):
self.messages = []
self.model = model
self.client = client
def get_message(self, prompt):
self.messages.append({"role": "user", "content": prompt})
stream = self.client.chat.completions.create(
model=self.model,
messages=self.messages,
stream=True,
)
result = ''
for chunk in stream:
if chunk.choices[0].delta.content is not None:
string = chunk.choices[0].delta.content
print(string, end="")
result = ''.join([result, string])
self.messages.append({"role": "system", "content": result})
model = "gpt-3.5-turbo"
gpt = GptAPI(model, client)
text = '만나서 반가워!'
gpt.get_message(text)
gpt.messages
text = '' # 질문을 입력해 보세요.
gpt.get_message(text)
gpt.messages
- '만나서 반가워!'라는 프롬프트를 입력하면, 이 프롬프트가 gpt.messages에 저장
- 모델의 응답이 생성되고, 이 응답도 gpt.messages에 저장
- gpt.messages는 GptAPI 객체가 주고받은 대화의 이력을 저장하고 관리하는 역할