Meal-Guide-LLM / ai_functions.py
B2gan's picture
Update ai_functions.py
5d73533 verified
from openai import OpenAI
client = None
Meal2Json = """
對於每道菜的描述,請提取關鍵資訊並轉化為JSON格式。請確保輸出包含菜品名稱、主要成分、估計的卡路里含量,以及可能的飲食限制。飲食限制請基於成分進行推斷,如海鮮過敏、紅肉限制、乳糖不耐症、麩質過敏等。如果沒有特別的飲食限制,請標注為"無"。在評估卡路里時,請考慮到菜品的主要成分和準備方式,提供一個合理的估計值。
例如,給定菜品描述:
"櫻花漂浮壽司 - 描述:精選當季最新鮮的生魚片,搭配上以櫻花葉醃製的特製醋飯,壽司表面點綴以食用櫻花花瓣,呈現春天的氣息與美麗。"
根據以上描述,請生成以下JSON輸出:
```Json
{
"name": "櫻花漂浮壽司",
"ingredients": ["生魚片", "醋飯", "櫻花葉", "食用櫻花花瓣"],
"calories": 200,
"dietary_restrictions": ["海鮮過敏"]
}
```
請直接輸出 Json 本體 不需要多餘的內容,並且請確保輸出的Json格式是正確的。請注意,輸出的Json格式必須與上述範例一致,並且
請依此格式處理以下菜品描述:
"""
AnylizeJson = """
給定一位使用者的個人信息、飲食偏好、健康目標和餐飲計畫,請計算推薦的每日卡路里攝入量。然後根據使用者的飲食偏好和餐飲計畫,推薦一個合適的餐點。請確保推薦的餐點遵守使用者的飲食限制並考慮其偏好。最後,請提供營養上的注意事項和建議,幫助使用者達成其健康目標。
請使用以下格式輸出結果:
```json
{
"recommended_daily_calories": "XXXX kcal",
"meal_recommendation": "推薦的配餐",
"nutrition_notes": "根據使用者的目標和限制,這裡是一些營養上的注意事項和建議。"
}
```
請注意,輸出的Json格式必須與上述範例一致,並且請確保輸出的Json格式是正確的。不要包含多餘的內容。尤其是,meal_recommendation 必須是具體的菜品名稱。並且請確保輸出僅有Json。根據這些使用者資訊和菜品資料,請首先計算出適合該使用者的每日推薦卡路里攝入量。接著,從菜品資料中選擇符合使用者需求的單一餐點,並提出具體推薦。最後,提出一些營養上的注意事項和建議,幫助使用者達成其健康目標。
"""
def ai_function(Mode, Description):
system_message = {
"role": "system",
"content": (
"You are an AI that assists the user in generating meal recommendations."
)
}
user_message = {
"role": "user",
"content": (
f"{Mode == 'Meal2Json' and Meal2Json or AnylizeJson} {Description}"
)
}
messages = [system_message, user_message]
response = client.chat.completions.create(model="gpt-4",
messages=messages,
temperature=0.2,
max_tokens=2000)
return response.choices[0].message.content