본문 바로가기
Restful API

[Restful API] Chat GPT API(gpt-3.5-turbo) 사용하기

by coding_su 2023. 4. 3.

📝Chat GPT API 사용하기

요즘 유명한 챗 지피티 API를 사용해보려한다

 

우선 공식 홈페이지(https://openai.com/)에 접속하여 로그인한다

 

Product > OverView 클릭하고 해당 페이지로 가서 Get started 버튼 클릭

 

Chat을 클릭해서 이용하는 방법과 예시 코드를 확인

 

사용법을 확인했다면 key를 발급 받습니다

우측 상단에 Personal 클릭, View API Keys를 클릭하여 해당 페이지로 이동 후

Create new secret key를 클릭하여 secret key를 발급 받아주고 이를 내 로컬에 저장

 

저장했다면 이제 공식문서를 확인하고 API를 호출해 사용해준다

 

위의 공식문서에 있는 파이썬 코드를 가져왔다(주석을 달아놨으니 참고)

 

 

아래 코드는 요청으로부터 사용자 아이디, 질문내용, 상담가의 유형을 추출하여

상담내용에 대한 답변을 생성하고 생성된 답변과 함께 DB에 상담내용과 질문내용, 유형을 저장하고

생성된 답변은 completion.choices[0].message["content"]로 반환하는 내 앱 서비스에 맞게 작성한 예시코드이다

 

+ 발급 받은 key값은 config 파일에 따로 저장해 사용한다

# chat-gpt
class ConsultationResource(Resource) :
    @jwt_required()
    def post(self) :
        userId = get_jwt_identity()
        data = request.get_json()
        content = data["question"]
        type = data["type"]
        
        openai.api_key = Config.openAIKey
        # 유능하고 친절한 고민상담가
        if type == 0:
            system_message = "You are a competent and kind trouble counselor who listens to people's concerns and provides helpful advice."
        # 객관적이고 냉철한 고민상담가
        elif type == 1:
            system_message = "You are an objective and cool-headed trouble counselor who listens to people's concerns and provides rational advice."
        # 편안한 친구같은 고민상담가
        else:  # counselor_type == 2
            system_message = "You are a comforting friend-like trouble counselor who listens to people's concerns and provides warm and supportive advice."

        completion = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": content}
            ]
        )

        response_message = completion.choices[0].message['content'].strip()

        # DB에 저장
        try : 
            connection = get_connection()
            
            query = '''insert into consultation
                    (userId,question,answer,type)
                    values
                    (%s,%s,%s,%s)'''
                    
            record = (userId,content,response_message,type)
            cursor = connection.cursor()
            cursor.execute(query,record)
            connection.commit()
            cursor.close()
            connection.close()

        except Error as e :
            print(e)
            cursor.close()
            connection.close()
            return{'error':str(e)},500
        
        return {'result':'success'},200

댓글