python에서 openai를 사용하는 방법은 생각보다 매우 간단하다.
import openai
먼저 openai를 사용하기 위해선 openai를 install 한 이후 import 해줘야 한다.
# OpenAI API 키 설정
openai.api_key = '###########'
그다음으로 api key를 얻은 이후 그 키를 api_key에 저장해야 한다.
messages = [
{"role": "system", "content": "You must answer as only 'True' or 'False'"},
{"role": "user", "content": "너는 이제부터 특정 웹사이트에 있는 안내원의 역할을 해줘야해."},
{"role": "user", "content": "일단 지금의 너는 다음의 답변을 듣고 '1. 전공 탐색하기', '2. 졸업 요건 확인하기', '3. 교수님 정보 찾기' , '4. 종료하기' 넷 중의 한 가지의 대답을 선택해서 그 대답 맨 앞에 있는 숫자를 말해줘야해. 하지만 만약 다음 답변이 저기에 있는 단어들 모두와 연관이 없다면 '다시 질문해주세요.' 라고 말해줘."},
{"role": "user", "content": "즉, 너가 대답할 수 있는거는 앞에서 들은 4가지 답변의 번호와 '다시 질문해주세요.' 밖에 없는거야."},
{"role": "user", "content": question}
]
현재 나는 chat gpt openai를 사용 중이고 chat gpt에게 질문을 하기 위한 messages를 설정하는 중이다.
messages를 좀 더 자세하게 보면 "role"에는 크게 chat gpt에게 직접 설정을 부여할 수 있는 "system"과 내가 직접 질문을 할 수 있는 "user" 2가지가 있다.
그리고 "content"에는 내가 원하는 설정 혹은 질문을 저장하면 된다.
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 사용할 모델 이름
messages=messages,
max_tokens=150, # 원하는 응답 길이 설정
n=1,
stop=None,
temperature=0.7, # 응답의 창의성 조절
)
다음으로 실제로 chat gpt를 이용하여 우리가 원하는 답을 얻을 차례이다.
chat gpt에게 질문을 하기 위해 몇 가지 세팅이 필요한데 먼저 model의 경우 내가 실제로 사용할 openai의 model을 구해야 한다. 나 같은 경우 chat gpt를 사용할 예정이기 때문에 'gpt-3.5-turbo'를 사용했다.
다음으로 messages의 경우 위에서 내가 설정한 messages를 넣으면 되고 max_tokens의 경우 chat gpt가 생성할 응답의 최대 토큰을 의미하는데 여기서 토큰은 간단하게 말해서 model이 생성하는 텍스트의 단위라고 보면 된다.
이후 요청 당 생성할 응답의 수를 n에 설정하고 응답 생성을 중단할 토큰의 시퀀스를 stop에 저장하고(나 같은 경우에는 max_token에 도달할 때까지 계속 생성할 수 있도록 None으로 설정) 마지막으로 응답의 창의성을 조절하는 temperature을 설정하면 기본적인 세팅은 끝난다.
reply = response['choices'][0]['message']['content'].strip()
마지막으로 질문을 통해 얻은 정보가 response에 저장되어 있는데 여기에 저장되어 있는 정보는 우리가 편하게 볼 수 있게 정제된 자료가 아닌 순수한 데이터 덩어리이기 때문에 이를 정제하는 작업을 해서 reply에 넣었다.
import openai
# OpenAI API 키 설정
openai.api_key = '###########'
def question_in_beginning(question):
messages = [
{"role": "system", "content": "You must answer as only 'True' or 'False'"},
{"role": "user", "content": "너는 이제부터 특정 웹사이트에 있는 안내원의 역할을 해줘야해."},
{"role": "user", "content": "일단 지금의 너는 다음의 답변을 듣고 '1. 전공 탐색하기', '2. 졸업 요건 확인하기', '3. 교수님 정보 찾기' , '4. 종료하기' 넷 중의 한 가지의 대답을 선택해서 그 대답 맨 앞에 있는 숫자를 말해줘야해. 하지만 만약 다음 답변이 저기에 있는 단어들 모두와 연관이 없다면 '다시 질문해주세요.' 라고 말해줘."},
{"role": "user", "content": "즉, 너가 대답할 수 있는거는 앞에서 들은 4가지 답변의 번호와 '다시 질문해주세요.' 밖에 없는거야."},
{"role": "user", "content": question}
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 사용할 모델 이름
messages=messages,
max_tokens=150, # 원하는 응답 길이 설정
n=1,
stop=None,
temperature=0.7, # 응답의 창의성 조절
)
reply = response['choices'][0]['message']['content'].strip()
return reply
위 코드는 실제로 현재 내가 하고 있는 프로젝트의 일부분이다. 우리가 지금까지 한 과정을 함수로 표현한 이후 우리가 원하는 질문을 question_in_begining에 넣으면 chat gpt를 통해 얻은 정답을 바로 return 할 수 있도록 만들었다.
최근 들어 openai와 llm에 대한 공부를 하고 있는데 직접 공부하면서 이제는 순수하게 코드를 공부하는 것보다 openai를 어떻게 이용해야 하는지에 대한 공부가 더 필요하다고 느끼게 되었다.
이제는 대부분의 코드는 chat gpt와 같은 인공지능이 대신해줄 수 있기 때문에 나는 이런 정보들을 부드럽게 연결하고 효율적으로 이용할 수 있는 방법에 대해서 공부하는 것이 미래에 필요한 능력이라고 생각한다.