.env 파일에 OpenAI API key 저장 & GPT 채팅 완성 코드 테스트

2024. 12. 23. 18:45Project Log/학부 졸업프로젝트

.env 파일 생성

  • OpenAI 사이트에서 API Key를 발급 받는다.
  • .env 파일에 OpenAI의 API KEY를 입력한다.
OPENAI_API_KEY="{YOUR_API_KEY}"
  • dotenv 라이브러리로 API Key를 로드한다.
from dotenv import load_dotenv
load_dotenv()
import openai
import os

openai.api_key = os.getenv("OPENAI_API_KEY")

 

채팅 완성 기능 코드 테스트 1. 예제 코드

  • OpenAI의 ChatCompletion 메서드를 사용하여 채팅 완성 기능을 테스트한다.
  • 파라미터로 'gpt-3.5-turbo' 모델을 사용하였다.
  • message 객체는 role(역할)과 content(대화 메시지) 속성을 갖는다.
  • 모델의 response를 출력한다.
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",

    messages=[
        {
            "role": "system",
            "content": "You are a helpful teacher."
        },
        {
            "role": "user",
            "content": "Are there other measures than time complexity for an \
                        algorithm?",
        },
        {
            "role": "assistant",
            "content": "Yes, there are other measures besides time complexity \
                        for an algorithm, such as space complexity.",
        },
        {
            "role": "user",
            "content": "What is it?"
        },
    ]
)

print(response)
print(response['choices'][0]['message']['content'])

 

채팅 완성 기능 코드 테스트 1. 실행 결과

response를 그대로 출력하면 json 형태로 나오고, key 값으로 조회해서 응답 내용만 출력할 수 있다.

 

채팅 완성 기능 코드 테스트 2. 예제 코드

  • 위의 코드와 거의 동일한데, message 객체의 content만 수정하였다.
  • 유저의 기본 정보(질환, 걸음수 등)를 먼저 제공하고, 깊은 수면을 취하기 위한 습관을 질문한다.
# Q&A based on Fitbit data

from dotenv import load_dotenv
load_dotenv()
import openai
import os

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",

    messages=[
        {
            "role": "system",
            "content": "You are a helpful health care expert."
        },
        {
            "role": "user",
            "content": "Kim Jin-soo is 80 years old this year and \
                        has high blood pressure. He is exercising 1,000 steps \
                        today and his heart rate is 85 bpm on average. \
                        Could you please take this into account and \
                        answer the following questions?",
        },
        {
            "role": "assistant",
            "content": "Yes, I will. What is the next question?",
        },
        {
            "role": "user",
            "content": "His deep sleep time is less than 2 hours. \
                        Recommend 3 habits for deep sleep and explain them in detail."
        },
    ]
)

print(response)
print(response['choices'][0]['message']['content'])

 

채팅 완성 기능 코드 테스트 2. 실행 결과

  • 깊은 수면을 위한 습관 추천을 응답으로 받을 수 있다.

 

To do

  • 예시 문장을 직접 입력하는 게 아니라, 사용자 입력을 받아 채팅이 진행되도록 해야 한다.
  • 이전 대화 맥락을 기억하도록 해야 한다.
  • 한글로 변환하는 작업을 해야 한다.
  • 응답 정확도와 구체성을 개선할 방법을 찾아야 한다.