1. openai 라이브러리 설치
pip를 이용해 openai 라이브러리를 설치
!pip install openai
2. API Key 받아오기
2.1. OpenAI 접속 및 로그인
2.2. API 키 생성
- 'create new secret key' 눌러 키 생성
- 키값 복사해 저장
2.3. 키값 반영하기
파이썬에서 문자열로 사용
api_key = '키 값'
3. API 요청 보내보기
3.1. 모듈 불러오기
- OpenAI 모듈을 불러와 API 키를 적용
- 인증키 전달
from openai import OpenAI
client = OpenAI(api_key=api_key)
3.2. 질문 만들기
- role : 'user (유저의 질문)', 'system (챗봇의 응답)' 두가지가 올 수 있음
- content : 메세지의 실제 내용
messages = [
{"role": "user", "content": "안녕, 만나서 반가워."}
]
3.3. 요청 보내기
- 사용할 모델 설정 : 아래 예시의 모델은 고성능 대화형 AI 모델
- client.chat.completions.create : OpenAI의 클라이언트 객체 client를 사용해 채팅 완료 요청을 생성하는 메서드
model = "gpt-3.5-turbo"
stream = client.chat.completions.create(
model=model,
messages=messages,
stream=True,
)
3.4. 메세기 출력하기
각 chunk(응답의 조각)에 내용이 있는 지 확인 후, 있으면 출력
- chunk.choices[0]
: 응답의 첫번째 선택지
- chunk.choices[0].delta
: 스트리밍된 응답의 변화(delta)를 의미
: 스트리밍 방식에서는 전체 응답을 한 번에 받지 않고, 점진적으로 변화하는 내용을 받음
- chunk.choices[0].delta.content
: 스트리밍된 응답 조각의 실제 내용(content)을 나타냄
: 내용이 None이 아닌 경우(실제 텍스트 포함 경우) 그 내용을 출력
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
⬇️ 위의 코드 실행 결과 ⬇️
안녕하세요! 저도 만나서 반가워요. 무엇을 도와드릴까요?
4. API 요청 기능 만들기
ChatGPT API를 사용하는 클래스(Class) 생성 후, 클래스에 정의한 메소드를 실행해 ChatGPT API를 실행
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
⬇️ 위의 코드 실행 결과 ⬇️
[{'role': 'user', 'content': '만나서 반가워!'}, {'role': 'system', 'content': '반가워요! 어떻게 도와드릴까요?'}]
text = '오늘 날씨가 너무 우중충해. 기분전환을 하고 싶은데, 저녁 메뉴 추천해줄 수 있어?' # 질문을 입력해 보세요.
gpt.get_message(text)
⬇️ 위의 코드 실행 결과 ⬇️
그럴 때 있죠! 기분전환을 위해 특별한 저녁 메뉴를 추천해드릴게요. 어떤 종류의 음식을 좋아하시나요? 아시아 음식이나 이탈리아 음식, 혹은 어떤 스타일의 요리를 좋아하시나요?
gpt.messages
⬇️ 위의 코드 실행 결과 ⬇️
[{'role': 'user', 'content': '만나서 반가워!'}, {'role': 'system', 'content': '반가워요! 어떻게 도와드릴까요?'}, {'role': 'user', 'content': '오늘 날씨가 너무 우중충해. 기분전환을 하고 싶은데, 저녁 메뉴 추천해줄 수 있어?'}, {'role': 'system', 'content': '그럴 때 있죠! 기분전환을 위해 특별한 저녁 메뉴를 추천해드릴게요. 어떤 종류의 음식을 좋아하시나요? 아시아 음식이나 이탈리아 음식, 혹은 어떤 스타일의 요리를 좋아하시나요?'}]
'다양한 활동 > 대회 참가' 카테고리의 다른 글
[대회/데이콘-새싹톤🌱] pre. 챗봇 만들기 학습(6) : 스트림릿을 활용한 LLM 모델 실행 - LLM모델과 스트림릿(Streamlit) (0) | 2024.07.19 |
---|---|
[대회/데이콘-새싹톤🌱] pre. 챗봇 만들기 학습(5) : 스트림릿을 활용한 LLM 모델 실행 - 스트림릿(Streamlit) 사용법 (0) | 2024.07.19 |
[대회/데이콘-새싹톤🌱] pre. 챗봇 만들기 학습(4) : 챗봇 만들기 실습(Langchain 과 맞춤형 챗봇 만들기) (0) | 2024.07.19 |
[대회/데이콘-새싹톤🌱] pre. 챗봇 만들기 학습(3) : LangChain 기본 (0) | 2024.07.13 |
[대회/데이콘-새싹톤🌱] pre. 챗봇 만들기 학습(2) : 채팅 로봇 활동 (0) | 2024.07.13 |