오늘 구현 한 코드들(칼로리 계산기)
response = '돈가스'
pdf_path = 'C:\\Users\\kevinkim\\Desktop\\Daily Calories\\Daily recommended Calories.pdf' #추후 변경 가능
pdf_file = PdfReader(pdf_path)
nutrition_file = ''
for file in pdf_file.pages:
nutrition_file += file.extract_text()
def filtered_file(text):
text = re.sub(r"\b(오전|오후)\s*\d{1,2}:\d{2}\b", "", text)
text = re.sub(r"https?://\S+", "", text)
text = re.sub(r"\s+", " ", text).strip()
return text
nutrition_file = filtered_file(nutrition_file)
chosen_language = 'Korean'
time_set = ['아침', '점심', '저녁']
# time = input('시간대:')
time = '점심' # 나중에 버튼으로 수동으로 변경 가능
client = OpenAI()
recommendation_history = []
seen_content = ""
while True:
if time == '아침':
food_time = input('혹시 아침은 몇시에 드셨나요?')
age = input('현재 나이가 어떻게 되시죠?')
is_on_diet = input('현재 다이어트 중이신가요?')
completion = client.chat.completions.create(
model = 'gpt-4o-mini',
messages = []
{'role': 'user', 'content': chosen_language},
{'role': 'user', 'content': response},
{'role': 'user', 'content': time},
{'role': 'user', 'content': food_time},
], stream = True)
for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush = True)
if time == '점심':
breakfast_time = input('아침으로는 무엇을 드셨나요?')
food_time = input('혹시 점심은 몇시에 드셨나요?')
age = input('현재 나이가 어떻게 되시죠?')
is_on_diet = input('현재 다이어트 중이신가요?')
completion = client.chat.completions.create(
model = 'gpt-4o',
messages = [],
{'role': 'user', 'content': chosen_language},
{'role': 'user', 'content': response},
{'role': 'user', 'content': time},
{'role': 'user', 'content': food_time},
{'role': 'user', 'content': breakfast_time},
], stream = True)
for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush = True)
if time == '저녁':
breakfast_time = input('아침으로는 무엇을 드셨나요?')
launch_time = input('점심으로는 무엇을 드셨나요?')
food_time = input('혹시 저녁은 몇시에 드셨나요?')
age = input('현재 나이가 어떻게 되시죠?')
is_on_diet = input('현재 다이어트 중이신가요?')
completion = client.chat.completions.create(
model = 'gpt-4o-mini',
messages = [],
{'role': 'user', 'content': chosen_language},
{'role': 'user', 'content': response},
{'role': 'user', 'content': time},
{'role': 'user', 'content': food_time},
{'role': 'user', 'content': breakfast_time},
{'role': 'user', 'content': launch_time},
], stream=True)
for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush = True)
while True:
continue_question = input('\n혹시 질문이나 궁금하신 점 있을까요? ')
client4 = OpenAI()
completion2 = client4.chat.completions.create(
model='gpt-4o-mini',
messages=[],
{'role': 'user', 'content': completion},
{'role': 'user', 'content': continue_question},
], stream= True)
for chunk in completion2:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush = True)
recommendation_history.append(completion)
사실상 프롬프트를 하나로 합치려고 하였지만, 프롬프트를 너무 길게 쓰니 다 확인하지 못하는 상황이 발생하여,
아침 전용 프롬프트,
점심 전용 프롬프트,
저녁 전용 프롬프트,
이렇게 세가지로 프롬프트를 나누었다
프롬프트는 어디있냐고 물어보신다면,
너무 길어서 생략했습니다.
각 코드를 stream 형식으로 실시간으로 답하게 하였습니다.