chatgpt 명령한것과 똑같은 효과를 두는
open api chatCompletion 호출 사용의 예제이다. 매~우 간단함
다만, 챗gpt는 원래 대화방 단위로 사용자와의 대화이력을 이어갈수 있다.
그러면 앞서 나누던 대화의 맥락을 이어갈수 있다.
message에 role:user와 role:assistant에 대화를 누적해가며 계속 호출하면되는데
대화방 컨텍스트에 따른 대화이력 저장방식이 필요함으로
여기서는 단순 1회성 호출만 소개한다.
import os
import openai
import datetime
openai.api_key = os.getenv("OPENAI_API_KEY") #부여 받은 api key, 이걸 기준으로 과금된다.
로컬에 환경변수에 저장된 key를 가져오도록 해놨다.
#openai.organization = "org-cT1P어쩌고L" #api key의 계정-조직의 id,
#지금처럼 주석으로 막아놓듯이 선언을 따로 안하면 open ai에 세팅된 디폴트 organizaion을 사용한다.
inputPrompt = "자기 소개서 잘 쓰는법 알려줘" # reqeust 문장
model = "gpt-3.5-turbo" # 모델선택 gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301
# massage는 복수형 array인데, user와 assistant의 대화 히스토리를 통째로 보내서
요청할수 있는 구조이다. 여기선 1회성 호출만 하도록 role user의 명렁 1개만 넣어 호출한다
completion = openai.ChatCompletion.create(
model=model,
temperature=0,
messages=[
{"role": "user", "content": inputPrompt}
]
)
result = completion.choices[0]
# 결과는 복수개를 돌려준다, 이중에 최상단 1개값만 가져온다
#print (result)
# 결과값은 obect로 되어있다. 주석처리하여 따로 보지않도록 해놨고 보고싶으면 주석해제하면됨
print (result.message.content)
# 결과값에서 assistant 응답메세지만 가져온다
print(datetime.datetime.now())
# 그냥 현재 시간 표시용
*openai.api_key는 open ai에서 발급받아 사용하며, 유료 호출이다. gpt-3.5의 경우 매우 저렴하기에 딱히 별 이슈가 없다.
*api_key는 local에 저장된 환경변수를 가져다 쓰는 방식이 스탠다드다, 윈도우는 환경변수로 key를 넣는게 매우 쉽고, MAC은 터미널로 좀 까다로운 작업이 필요함, 잘 모르겠으면 그냥 open ai의 api key 를 그대로 = 뒤에다가 string으로 붙여서 써도 된다.
다만 이럴경우 스크립트를 온라인으로 그대로 공유할때 api key가 공개됨으로 남이 막 쓸수있다. 유료라서 과금이 되니 문제가됨
message의 role user의 content에 명령어를 넣고,
결과는 completion이 복수형으로 나오는데, 이중에 만앞에꺼면 뽑아서 message.content를 출력하면 된다.
'취미로 하는 프로그래밍 > 머리아픈 인공지능' 카테고리의 다른 글
Open API를 기반으로 한 LLM의 프롬프팅은 놀랍다. 하지만 (0) | 2023.09.23 |
---|---|
파이썬 머신러닝 sklearn 지도학습 초보샘플1 (0) | 2018.06.16 |