카테고리 없음

스파르타 AI-8기 TIL(1/9)-TeamProject

kimjunki-8 2025. 1. 9. 22:17

오늘 구현 한 코드들(칼로리 계산기)

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 형식으로 실시간으로 답하게 하였습니다.