본문 바로가기
Python/[Project] Guide_Bright

[Guide_Bright] 1. Python 뼈대 개발

by 한PU 2024. 1. 11.
728x90
반응형

뼈대라고 하는게 맞나.

단어를 잘 모르겠다.

 

지난 글 : 2024.01.11 - [Python/[Project] Guide_Bright] - [Guide Bright] 0. 아이디어

 

[Guide Bright] 0. 아이디어

서론 또 이상한거 생각나서 프로젝트 진행하려고 한다. math photo는 cv를 배우면서 다시 하는걸로... Guide Bright 라는 이름의 프로젝트를 진행하려한다. 경계선 지능 장애 친구들이 chat-gpt를 통해 조

han-pu.tistory.com

 

본론

Draw

Draw 내용 중 아래 표시된 부분을 진행했다.

 

한 것

 

파일 내용

노트북을 한달에 두 번씩 바꿔버려서 Git이 좀 엉망이다.

Git Bash 때문에 깔긴했는데 아직 Git graph도 안깔려있다 ㅋㅋ

 

파일 설명

.env

GPT API를 포함한다. 이거 털리면 내 지갑이 털린다. 코드는 아래와 같다.

// .env

OPENAI_API_KEY=[Your_API_KEY]

별거 없다. 보안용으로 파일을 분리한 것 뿐.

 

config.py

이름에서 감이 오게쬬?

python_dotenv, os 패키지를 이용해서 .env 파일을 안전하게 분리한다. 코드는 아래와 같다.

// config.py

from dotenv import load_dotenv
import os

load_dotenv()

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

 

main.py

별거없다. 입력받고, 함수 호출, 출력 끝

코드는 아래와 같다.

from chatgpt_client import get_response

def main():
    print("Welcome to the Chat Assistant for Individuals with Borderline Intelligence Disabilities.")
    print("Please type your message and press Enter. Type 'exit' to quit the application.")

    while True:
        user_input = input("You: ")
        if user_input.lower() == 'exit':
            print("Exiting the application. Goodbye!")
            break

        response = get_response(user_input)
        print(f"Assistant: {response}\n I'm glad I could help you")

if __name__ == "__main__":
    main()

 

chatgpt_client.py

실질적인 몸통.

제일 중요한게 get_response() 라고 생각한다.

 

근데 이게 gpt-3 모델에서 gpt-4 모델로 넘어가면서

openai.Completion.create() 함수가 openai.ChatCompletion.create()로 바뀌었다는데,

prompt 변수 설정이 조금 귀찮아졌다.

코드는 아래와 같다.

import openai
from config import OPENAI_API_KEY

def get_response(user_input):
    """
    Sends the user input to ChatGPT and returns the response.
    """

    role = """
    // 여기에 경계성 지능 장애에 대한 내용과 GPT의 역할을 심었다. (비밀임 ㅎㅎ)
    """
    openai.api_key = OPENAI_API_KEY
    try:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=[{"role": "system", "content": role},
                      {"role": "user", "content": user_input}]
        )
    except Exception as e:
        return f"An error occurred: {e}"

    return response.choices[0].message['content'].strip()

 

결론

python main.py 실행하면 잘 된다.

문제(?)는 지금 쓰는 패키지들이 python3.12를 못 받는다는것.

python 3.11 쓰십셔

 

test prompt

아래는 내용 번역이다.


메시지를 입력하고 Enter 키를 눌러 응용 프로그램을 종료하십시오. exit을 입력하십시오.


너: 집에 토스트 빵이 있는데 데우려면 어떻게 해야 해? 


따뜻한 토스트 한 조각을 만들어 먹으려는 당신의 노력은 훌륭합니다. 당신이 할 수 있는 일은 다음과 같습니다:

1. 집에 토스터기가 있는지 확인하세요. 있다면 정말 좋습니다!
2. 빵 조각을 토스터 슬롯에 넣으세요.
4. 몇 분만 기다려. 아무데도 가지 말고 토스터기를 봐.
5. 빵이 준비되면 빵이 튀어나올 거예요.

절대로 토스터기에 손이나 금속 같은 것을 넣지 말아야 한다는 것을 기억하세요. 만약 문제가 생기면 부모님이나 주방에서 도와줄 수 있는 사람에게 전화하세요.      
 제가 당신을 도울 수 있어서 기쁩니다.


 

728x90
반응형

'Python > [Project] Guide_Bright' 카테고리의 다른 글

[Guide Bright] 1.5. 저장용  (0) 2024.01.11
[Guide Bright] 0. 아이디어  (0) 2024.01.11