Kết Nối Cân Thông Minh Với Gemini LLM Để Lập Kế Hoạch Bữa Ăn
Gần đây, tôi đã xây dựng một ứng dụng địa phương kết nối cân thông minh Withings của mình với Gemini LLM của Google và sử dụng dữ liệu cân nặng hàng ngày để tạo ra kế hoạch bữa ăn tùy chỉnh. Mục tiêu của tôi là đạt được trọng lượng cơ thể mong muốn trong khi vẫn bảo tồn càng nhiều khối lượng cơ bắp càng tốt.
Bài viết này sẽ phân tích ý tưởng, công nghệ được sử dụng và một số bài học chính — bao gồm cách mà các giá trị nhiệt độ trong LLM có thể ảnh hưởng đáng kể đến loại đầu ra mà bạn nhận được.
Tại Sao Tôi Xây Dựng Điều Này
Tôi muốn có một cách để:
- Tự động thu thập dữ liệu cân nặng hàng ngày vào mỗi buổi sáng.
- Cung cấp dữ liệu đó cho một LLM với một lời nhắc động và tùy chỉnh.
- Nhận lại một bộ món ăn phù hợp với nhu cầu calo của tôi trong ngày — tập trung vào lượng protein để bảo tồn cơ bắp.
Thay vì tính toán macros và tìm kiếm công thức nấu ăn một cách thủ công, LLM hiện tại thực hiện tất cả điều này cho tôi.
Công Nghệ Sử Dụng
Dưới đây là thiết lập:
- Cân Thông Minh Withings – Đồng bộ dữ liệu cân nặng hàng ngày (tổng số, khối lượng cơ, khối lượng mỡ).
- Python – ngôn ngữ được sử dụng để lấy dữ liệu và kết nối với LLM.
- Gemini LLM – Nhận đầu vào là trọng lượng, trọng lượng mục tiêu và một số sở thích của người dùng.
Lưu ý: API của Withings có thể nói là... không dễ sử dụng. Sau khi thấy nhiều ý kiến về điều này, tôi quyết định làm cho cuộc sống của mình dễ dàng hơn bằng cách sử dụng một applet từ IFTTT để đưa dữ liệu vào một bảng tính Google. Điều này hợp lý vì đây là một ứng dụng địa phương sử dụng một loại cân rất cụ thể.
Ví Dụ Về Đầu Ra
Điều duy nhất tôi cung cấp cho LLM hàng ngày là các loại protein mà tôi có và dự định ăn. Trong trường hợp này, bạn có thể thấy tôi đã cung cấp thịt bò xay 85/15 và đùi gà.
Tiến Trình Đến Nay
Cho đến nay, mọi thứ diễn ra rất tốt và tôi đã giảm khoảng 1,4 kg. Tôi đã thêm vào lời nhắc yêu cầu cung cấp cho tôi 2 tùy chọn cho mỗi bữa ăn để nó có thể linh hoạt hơn. Tôi cũng thêm lịch sử để nếu nó cho tôi một thực đơn hoặc món ăn mà tôi không có, tôi có thể thông báo cho nó và nó sẽ cung cấp cho tôi một tùy chọn tốt hơn như thế này...
Làm Việc Với Nhiệt Độ LLM
Một trong những phát hiện thú vị nhất là cách mà nhiệt độ ảnh hưởng đến đầu ra của LLM.
- Nhiệt độ thấp (0.0–0.3) → Kết quả rất nhất quán. LLM chủ yếu cung cấp cùng một kế hoạch bữa ăn với những biến thể nhỏ. Tốt cho việc giữ ổn định macros.
- Nhiệt độ trung bình (0.5–0.7) → Tăng thêm sự đa dạng cho các bữa ăn. Bạn nhận được các công thức khác nhau hàng ngày, nhưng chúng vẫn đáp ứng được các mục tiêu macro.
- Nhiệt độ cao (0.8–1.0) → Rất sáng tạo. Đôi khi quá sáng tạo — bạn nhận được các món ăn kỳ lạ hoặc các sự kết hợp không bình thường mà kỹ thuật vẫn đáp ứng được macros nhưng có thể không thực tế.
Tôi tìm thấy rằng 0.5 là mức lý tưởng: sự sáng tạo được cân bằng mà không đi quá xa.
Dưới đây là một ví dụ tốt về sự khác biệt trong nhiệt độ. Hình ảnh đầu tiên là ở mức 0.9 và hình thứ hai ở mức 0.1. Bạn có thể thấy ở mức 0.1, các con số nhất quán hơn với hầu như luôn tham chiếu 5oz cho kích thước khẩu phần.
Nhiệt độ @ 0.9
Nhiệt độ @ 0.1
Những Thách Thức Chính
- Tính nhất quán: Đôi khi LLM sẽ ước lượng calo quá thấp hoặc quá cao. Tôi phải thêm một kiểm tra để đảm bảo tổng calo trùng khớp với mục tiêu của tôi trước khi lưu kế hoạch.
- Sự đa dạng so với tính tuân thủ: Quá nhiều sự đa dạng về bữa ăn khiến việc mua sắm thực phẩm trở nên khó khăn hơn. Tôi đã thêm một tùy chọn để giới hạn sự đa dạng trong một vòng quay hàng tuần.
Những Bài Học Rút Ra
- Tinh chỉnh nhiệt độ LLM rất quan trọng — tìm mức độ phù hợp với trường hợp sử dụng của bạn.
- Tự động hóa kế hoạch bữa ăn tiết kiệm năng lượng tinh thần và giảm bớt mệt mỏi ra quyết định.
- Bảo tồn lịch sử cho phép cá nhân hóa sâu hơn và giúp dễ dàng thấy những gì hiệu quả theo thời gian.
Bạn có thể xem mã trong Repo này nếu bạn muốn. Cảm ơn bạn đã đọc!