95 lines
4.1 KiB
Python
95 lines
4.1 KiB
Python
# 코드를 작성하기 전에 전체적인 구조를 계획해 보겠습니다.
|
|
|
|
# 1. 필요한 라이브러리를 불러옵니다.
|
|
import os
|
|
import datetime
|
|
import openai # OpenAI API를 사용하기 위한 라이브러리
|
|
|
|
# 2. ChatGPT와의 소통을 담당할 함수를 정의합니다.
|
|
def ask_chatgpt(question, api_key):
|
|
openai.api_key = api_key
|
|
response = openai.Completion.create(
|
|
model="gpt-3.5-turbo", # 이 모델은 최신 버전에서 사용됩니다.
|
|
messages=[
|
|
{"role": "system", "content": "You are a helpful assistant."},
|
|
{"role": "user", "content": question}
|
|
]
|
|
)
|
|
# 응답 형식에 따라 적절한 필드를 반환해야 합니다.
|
|
# 새로운 API에 따라, 응답 형식이 달라질 수 있으므로, 정확한 필드를 확인해야 합니다.
|
|
return response.choices[0].text.strip() # 'message' 대신 'text'를 사용
|
|
|
|
|
|
|
|
# 3. 응답을 분석하여 파일 제목을 결정하는 함수를 정의합니다.
|
|
def determine_filename(response):
|
|
"""
|
|
응답 텍스트를 분석하여 파일 제목을 결정하는 함수.
|
|
:param response: ChatGPT로부터 받은 응답 텍스트.
|
|
:return: 결정된 파일 제목.
|
|
"""
|
|
# "제목"으로 시작하는 문장을 찾습니다.
|
|
for sentence in response.split('.'):
|
|
if sentence.strip().lower().startswith("제목"):
|
|
return sentence.strip() + ".txt" # 제목이 있는 경우 파일 이름을 결정합니다.
|
|
|
|
# 제목이 없는 경우 현재 날짜로 파일 이름을 결정합니다.
|
|
current_date = datetime.datetime.now().strftime("%Y%m%d")
|
|
return f"{current_date}-Response.txt"
|
|
|
|
# 4. 응답과 이미지(있는 경우)를 저장하는 함수를 정의합니다.
|
|
def save_response_and_images(response, folder_path, filename):
|
|
"""
|
|
응답 텍스트와 이미지(있는 경우)를 파일에 저장하는 함수.
|
|
:param response: ChatGPT로부터 받은 응답 텍스트.
|
|
:param folder_path: 저장할 폴더의 경로.
|
|
:param filename: 파일 제목.
|
|
"""
|
|
# GPT_Response 폴더가 없으면 생성합니다.
|
|
if not os.path.exists(folder_path):
|
|
os.makedirs(folder_path)
|
|
|
|
# 응답을 텍스트 파일로 저장합니다.
|
|
file_path = os.path.join(folder_path, filename)
|
|
with open(file_path, 'w') as file:
|
|
file.write(response)
|
|
|
|
# TODO: 이미지 처리 로직은 사용자의 추가 요구 사항에 따라 결정되어야 합니다.
|
|
|
|
# 주석 처리된 함수 호출들을 제외하고, 이 구조를 기반으로 구체적인 구현을 진행하겠습니다.
|
|
# 참고: 실제 코드 실행은 주석 처리되어 있으므로, 여기에서는 실행되지 않습니다.
|
|
|
|
|
|
# 파이썬 코드 수정: 사용자로부터 질문을 입력 받는 기능 추가
|
|
|
|
# 함수 정의 부분은 그대로 둡니다. 주요 변경은 스크립트 실행 부분에 있습니다.
|
|
|
|
# 사용자로부터 질문을 입력 받는 코드를 추가합니다.
|
|
def main(api_key):
|
|
# 사용자로부터 질문을 입력 받습니다.
|
|
question = input("ChatGPT에게 물어볼 질문을 입력하세요: ")
|
|
|
|
# ChatGPT에게 질문을 하고 응답을 받습니다.
|
|
response = ask_chatgpt(question, api_key)
|
|
|
|
# 응답으로부터 파일 제목을 결정합니다.
|
|
filename = determine_filename(response)
|
|
|
|
# 응답과 이미지(있는 경우)를 저장합니다.
|
|
folder_path = os.path.join(os.getcwd(), "GPT_Response")
|
|
save_response_and_images(response, folder_path, filename)
|
|
|
|
# 사용자에게 응답이 저장된 위치를 알려줍니다.
|
|
print(f"응답이 {folder_path} 폴더에 저장되었습니다, 파일명: {filename}")
|
|
|
|
# 이제 main 함수를 실행할 준비가 되었습니다.
|
|
# 참고: 실제 환경에서 API 키와 함께 main 함수를 호출해야 합니다.
|
|
# 예: main('your_openai_api_key_here')
|
|
|
|
# 주석 처리된 함수 호출들을 제외하고, 이 구조를 기반으로 구체적인 구현을 진행하겠습니다.
|
|
# 참고: 실제 코드 실행은 주석 처리되어 있으므로, 여기에서는 실행되지 않습니다.
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main("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")
|