آموزش به حداقل رساندن داده ها با یک فیلتر کوچک Python Health-Record

تحول مورد انتظار: مینیمسازی دادههای سلامت با پایتون
این مطلب الگوئی برنامهنویسی برای مینیمسازی دادهها (Data Minimization) را بر اساس اصل «حداقل دسترسی لازم» توضیح میدهد. بốiقهی آن، معرفی ویژگی «سلامت در ChatGPT» توسط OpenAI (ژولای ۲۰۲۶) است که دادههای اپلهلث را پردازش میکند، با تعهدی مبنی بر عدم استفاده از دادهها برای آموزش مدل یا تبلیغات.
پیادهسازی اصلی: یک تابع minimize با استفاده از دیکشنری POLICY که «مقاصد» (مانند activity_summary) را به «فیلدهای مجاز» (مانند date، steps) نگاشت میدهد. دو تصمیم کلیدی معماری وجود دارد: ۱) استفاده از لیستهای مجاز (Allow-lists) به جای لیستهای ممنوعه، و ۲) Fail-closed (بازگشت خطا برای مقاصد ناشناخته) به جای بازگشت داده کامل.
استراتژی تست: تستهای واحد (unittest) سه قانون حریم خصوصی را الزام میکنند: خروجی دقیق فیلدهای اعلامشده، عدم تغییر ورودی اصلی (Immutability با deepcopy)، و شکست مطمئن برای مقاصد نامعتبر. تستهای منفی (افزودن فیلدهای اضافی یا تایپ اشتباهPolicy) رگرسیون را شناسایی میکنند.
محدودیتها: این کد تنها روی دیکشنریهای تخت کار میکند و شامل نمیشود: پاکسازی مقادیر، درک فرمتهای بالینی، ناشناسسازی، تأیید دقت، امنیت فایل، اجرای حذف، یا یکپارچهسازی با سرویسهای واقعی. این یک «اسباببازی آموزشی» است و باید از استفاده در تولید بدون بازبینی جامع حریم خصوصی و امنیتی خودداری کرد.
تحول مورد انتظار:
input keys: date, steps, sleep_minutes, medication, note
purpose: activity_summary
output keys: date, steps
سوال یادگیری این نیست که “چگونه داده های سلامتی را تجزیه و تحلیل کنم؟” “چگونه یک برنامه می تواند ثابت کند که یک هدف فیلدهای کمتری نسبت به رکورد اصلی دریافت می کند؟” این به حداقل رساندن داده است: جمع آوری یا ارسال تنها آنچه یک وظیفه اعلام شده به آن نیاز دارد.
این تمرین به موقع است زیرا OpenAI Health را در ChatGPT در 23 ژوئیه 2026 اعلام کرد. OpenAI میگوید که این نسخه شامل کاربران واجد شرایط ایالات متحده است که وارد سیستم شدهاند، بالای 18 سال و از وب یا iOS استفاده میکنند. می گوید اتصالات پشتیبانی شده شامل سوابق پزشکی و سلامت اپل است و داشبورد ممکن است آزمایشگاه ها، داروها، فعالیت، خواب و سایر اطلاعات سلامتی را پوشش دهد. OpenAI همچنین بیان میکند که دادههای متصل و مکالمات مرتبط برای آموزش مدلهای بنیادی یا هدفیابی تبلیغات استفاده نمیشوند. اینها اظهارات شرکت از منبع اصلی هستند، نه نتایج این درس.
برنامه پیش نیاز و کوچک
از Python 3.11 یا جدیدتر و فقط از کتابخانه استاندارد استفاده کنید. کد و خروجی های زیر برچسب گذاری شده اند نمونه های اجرا نشده.
from copy import deepcopy
POLICY = {
"activity_summary": {"date", "steps"},
"sleep_summary": {"date", "sleep_minutes"},
}
def minimize(record: dict, purpose: str) -> dict:
if purpose not in POLICY:
raise ValueError(f"unknown purpose: {purpose}")
allowed = POLICY[purpose]
return {key: deepcopy(value) for key, value in record.items()
if key in allowed}
دو انتخاب مهم وجود دارد. این خط مشی به جای حفظ یک لیست غول پیکر “ایمن”، اهداف را به فیلدها ترسیم می کند. همچنین، یک هدف ناشناخته به جای بازگرداندن ورودی کامل، یک خطا ایجاد می کند. این رفتار دوم بسته شده است.
تست ها قانون حفظ حریم خصوصی را بیان می کنند
این را در کنار تابع در قرار دهید test_minimize.py، نام واردات را به فایل خود تنظیم کنید:
import unittest
from minimizer import minimize
RECORD = {
"date": "2026-07-20",
"steps": 4200,
"sleep_minutes": 395,
"medication": ["example-only"],
"note": "private free text",
}
class MinimizerTests(unittest.TestCase):
def test_activity_keeps_exact_fields(self):
out = minimize(RECORD, "activity_summary")
self.assertEqual(out, {"date": "2026-07-20", "steps": 4200})
def test_input_is_not_changed(self):
before = RECORD.copy()
minimize(RECORD, "sleep_summary")
self.assertEqual(RECORD, before)
def test_unknown_purpose_fails_closed(self):
with self.assertRaises(ValueError):
minimize(RECORD, "personalization")
if __name__ == "__main__":
unittest.main()
دستور مورد نظر است python3 -m unittest -v. از آنجایی که برای این مقاله اجرا نشده است، خوانندگان باید سه آزمایش موفقیت آمیز مورد انتظار را به عنوان یک هدف در نظر بگیرند، نه شواهد مشاهده شده.
ابتدا ورودی بد را امتحان کنید
اضافه کنید "location_history": [...] به RECORD. آزمون فعالیت هنوز باید دقیقاً دو فیلد خروجی را انتظار داشته باشد. اگر یک ویرایش آینده پیادهسازی را برای بازگرداندن همه فیلدها تغییر دهد، این ادعای برابری بهطور مشهودی با شکست مواجه میشود. بعد، یک اشتباه تایپی خط مشی مانند activity_summry; آزمایش با هدف نامعلوم توضیح می دهد که چرا حدس زدن بی سر و صدا خطرناک است.
اشتباهات رایج شامل حذف کلیدها از فرهنگ لغت اصلی، با استفاده از record.get() برای یک خط مشی ناشناخته، و فقط آن را آزمایش می کند steps به جای بررسی کل خروجی وجود دارد. یک تست مینیمینه کننده باید اطلاعات اضافی را شناسایی کند، نه صرفاً اطلاعات از دست رفته را.
این چه چیزی را آموزش می دهد – و چه چیزی را نمی دهد
پس از تمرین، یادگیرنده باید بتواند محدودیت های هدف، لیست های مجاز میدانی، رفتارهای بدون شکست و تست های منفی را توضیح دهد. تمدید این است که هر خط مشی را با یک مالک و تاریخ انقضا نشان می دهد، سپس خط مشی های منقضی شده را رد می کند.
این اسباب بازی فقط لغت نامه های تخت را کنترل می کند. ارزشها را پاکسازی نمیکند، قالبهای بالینی تودرتو را درک نمیکند، افراد را ناشناس میکند، دقت را تأیید نمیکند، فایلها را ایمن نمیکند، حذف را اجرا میکند، یا با هر سرویس اعلامشده یکپارچه نمیشود. مقادیر نمونه تخیلی هستند و هیچ معنای پزشکی ندارند. هرگز از عملکرد به عنوان کنترل داده های سلامت تولید بدون بررسی حریم خصوصی و امنیتی گسترده تر استفاده نکنید.
OpenAI میگوید ویژگی سلامتی آن برای پشتیبانی و نه جایگزینی مراقبتهای پزشکی طراحی شده است و برای تشخیص یا درمان در نظر گرفته نشده است. این درس برنامه نویسی نیز هیچ توصیه پزشکی ارائه نمی دهد و هیچ ادعای بالینی ندارد.
افشای کمک هوش مصنوعی: این مقاله با کمک هوش مصنوعی تهیه شده و بر اساس منبع اصلی ذکر شده بررسی شده است.



