Nguyen Trong Lap
Recreate history without binary blobs
eeb0f9c
import os
import json
from config.settings import client, MODEL
rules_file = os.path.join(os.path.dirname(__file__), 'rules.json')
def get_basic_recommendations(user_data, rules_file=rules_file):
with open(rules_file, 'r', encoding='utf-8') as f:
rules_data = json.load(f)
recommendations = []
for cond in user_data.get('health_conditions', []):
if cond.lower() in rules_data.get('conditions', {}):
recommendations.extend(rules_data['conditions'][cond.lower()])
goal = user_data.get('goal', '').lower()
for key, recs in rules_data.get('goals', {}).items():
if key in goal:
recommendations.extend(recs)
level = user_data.get('fitness_level', 'beginner').lower()
if level in rules_data.get('fitness_level', {}):
recommendations.extend(rules_data['fitness_level'][level])
return recommendations
def generate_exercise_plan(user_data):
rules = get_basic_recommendations(user_data)
system_prompt = f"""
Bạn là huấn luyện viên cá nhân vui tính 💪🔥.
Thông tin người dùng:
- Tuổi: {user_data.get('age', 'chưa biết')}
- Giới tính: {user_data.get('gender', 'chưa biết')}
- Cân nặng: {user_data.get('weight', 'chưa biết')}
- Chiều cao: {user_data.get('height', 'chưa biết')}
- Thể lực hiện tại: {user_data.get('fitness_level', 'nhẹ')}
- Mục tiêu: {user_data.get('goal', 'cải thiện sức khỏe')}
- Thời gian rảnh mỗi ngày: {user_data.get('available_time', 30)} phút
- Bệnh nền: {', '.join(user_data.get('health_conditions', []))}
Rule cần tuân theo:
{chr(10).join(f"- {r}" for r in rules)}
Yêu cầu:
- Tạo kế hoạch 7 ngày dạng bảng
- Friendly intro trước khi xuất plan
- Mỗi ngày có: Tên buổi tập, thời gian, danh sách bài tập, số hiệp, số lần / thời gian, lưu ý an toàn
- Không hỏi lại thông tin, nếu thiếu dùng default
- Không nhét link hoặc placeholder
"""
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Hãy tạo kế hoạch 7 ngày theo yêu cầu."}
],
temperature=0.7,
max_tokens=3000
)
return response.choices[0].message.content