برنامه نویسی

ژنراتور تمرین ChatGPT من بهتر شد

در ماه فوریه، در مورد یک برنامه تناسب اندام نوشتم که با استفاده از ChatGPT ساخته بودم. این یک برنامه آنقدر نبود که یک ایمیل روزانه با تمرینی بود که به طور تصادفی ایجاد می شد. و ChatGPT نبود، بلکه یکی از مدل های هوش مصنوعی دیگر بود که از OpenAI در دسترس بود (ChatGPT هنوز در دسترس نبود).

به‌عنوان یک توسعه‌دهنده، نمی‌توانم به اندازه کافی تنها باشم، بنابراین تصمیم گرفتم به‌روزرسانی‌هایی را برای پروژه انجام دهم. هدف اصلی این بود که ایجاد تمرین را از بشقاب خود حذف کنم و چیزی را به من بدهم که بتوانم آن را در طول تمرینات صبحگاهی خود دنبال کنم. تکرار اصلی خوب کار می کرد، اما من به طور معمول تمرینات نامرتبط را در تمرین انجام می دادم، مانند اسکات با هالتر در روز بازو. من همچنین متوجه شدم که هر روز یک گرم کردن و خنک کردن مربوطه دارم.

بنابراین به برخی کمک کرد، اما نه به اندازه ای که ایده آل بود. می‌خواستم تمرین‌های بهتری داشته باشم، گرم کردن/خنک کردن مرتبط، و کمی راحت‌تر با دوستانم به اشتراک بگذارم. زمان تکرار فرا رسیده بود.

حرکت به ChatGPT واقعی

وقتی نسخه اصلی را ساختم، واقعاً فکر کردم که از ChatGPT استفاده می کنم. من در این فرض غلط بودم که هر مدلی که از OpenAI می آید، در واقع ChatGPT است. همانطور که بسیاری از شما به من گفتید، این نیست.

بنابراین من مدل را ارتقاء دادم text-davinci-003 به gpt-3.5-turbo. اما تغییر مدل نیاز به نقطه پایانی متفاوتی داشت که ورودی های متفاوتی را می پذیرفت. بنابراین من تابع Lambda را که پرس و جو را ایجاد می کرد به روز کردم و کشف کردم که این نقطه پایانی جدید راهی برای افزودن زمینه به جستارهای من ارائه می دهد. من می توانستم در یک عبور کنم سیستم پیکربندی که به ChatGPT می گوید که چگونه به درخواست نزدیک شود. من همچنین می‌توانم مجموعه‌ای از پیام‌ها را برای شبیه‌سازی یک مکالمه به آن ارائه کنم، دقیقاً مانند زمانی که از ChatGPT در مرورگر استفاده می‌کنید.

معرفی مفهوم چت جالب بود. من در ابتدا تابع ChatGPT خود را در یک گردش کاری Step Function گنجانده بودم که حداکثر اندازه داده نسبتاً پایینی دارد. بنابراین رد کردن مجموعه ای از پرسش ها و پاسخ ها بین ایالت ها ایده خوبی به نظر نمی رسید. با در نظر گرفتن این موضوع، تصمیم گرفتم تاریخچه مکالمه را با استفاده از سرویس گیرنده کش Node.js Momento در یک کش ذخیره کنم.

در زیر تصویری از نحوه استفاده عملکرد به روز شده لامبدا از Momento و OpenAI برای برگزاری یک مکالمه نشان داده شده است. حتی زمینه را در محیط های اجرا حفظ می کند!

نمودار کتابخانه هایی که تابع ask-chatgpt Lambda استفاده می کند

کل مکالمه به مدت یک ساعت در حافظه پنهان ذخیره می شود، سپس به طور خودکار منقضی می شود. همه پیام‌ها به صورت زمانی در یک لیست ذخیره می‌شوند و هر تماس بعدی پرسش و پاسخ را به تاریخچه مکالمه اضافه می‌کند (تا زمانی که rememberResponse پرچم ارائه شده و روی true تنظیم شده است).

این به این معنی است که در اجرای گردش کاری Step Function من، مجبور نیستم سابقه ای از چت را نگه دارم، تنها کاری که باید انجام دهم این است که یک مورد را طی کنم. conversationKey و تابع بقیه آن را مدیریت می کند.

ایجاد یک گرم کردن و سرمایش مناسب

اکنون که توانستم ChatGPT را با زمینه جستجو کنم، قابلیت گرم کردن و خنک کردن مخصوص تمرین ایجاد شده را باز کردم. اولین درخواست من از ChatGPT از آن می خواهد که با استفاده از برخی از تجهیزاتی که در دسترس دارم، برای یک گروه عضلانی خاص تمرین ایجاد کند. دو سؤال بعدی بر اساس این پاسخ است تا تمرین من را با تمرینات مرتبط غنی کند.

نمودار تابع مرحله ای که سوالات مبتنی بر زمینه را نشان می دهد

با عبور در "conversationKey": "2023.04.12-workout" در تابع، زمینه سیستم و تمرین تولید شده به طور خودکار بارگیری می شود و در جستارهای بعدی ارائه می شود. بسیار تمیز!

نتیجه این گفتگوی کوتاه با ChatGPT یک گرم کردن شدید متمرکز، ست اصلی، ست پایانی «فرسودگی» و تمرین شکمی است که همگی یک گروه عضلانی را هدف قرار می دهند. بعلاوه، برای استفاده از تجهیزات تمرینی که در باشگاه خانگی خود دارم، شخصی سازی شده است و انتخاب می کند که از کدام تجهیزات در مقیاس وزنی و تصادفی استفاده شود. بگویم تمریناتم از بین رفته است خوب به خوب به برجسته دست کم گرفتن خواهد بود.

به اشتراک گذاشتن ثمره کار من

اولین نسخه از این پروژه هر روز ساعت 7 بعد از ظهر یک ایمیل برای من ارسال می کرد تا به من اطلاع دهد که تمرین روز بعد قرار است چه باشد. این زمانی که من تنها کسی هستم که تمرین را انجام می‌دهم عالی عمل می‌کند، اما دوستانی دارم که هر هفته با من ورزش می‌کنند و می‌خواهند از قبل تمرین را بدانند. من به راحتی می توانستم آنها را به لیست توزیع اضافه کنم یا یک قانون در ایمیل خود برای فوروارد خودکار ایجاد کنم، اما مقیاس خوبی ندارد.

اگر افراد بیشتری بخواهند به من بپیوندند یا شخصی دیگر شرکت نکند، باید لیست را به روز کنم. من نمی خواهم لیست دیگری را حفظ کنم. بنابراین تصمیم گرفتم مسیر سلف سرویس بهترین راه برای رفتن باشد و یک صفحه وب برای نمایش تمرین روزانه ایجاد کردم. اکنون می‌توانم به‌جای به‌روزرسانی فهرست ایمیل، افراد را به نشانی اینترنتی نشان دهم. به علاوه، به من فرصتی می دهد تا راه حل خود را با جامعه به اشتراک بگذارم، که یکی از محرک های اصلی همه پروژه های من است.

من اخیراً با NextJS تمرین کرده‌ام تا مهارت‌های رابط کاربری خود را ایجاد کنم، بنابراین از این فرصتی برای یادگیری برخی از بهترین روش‌ها استفاده کردم. اما مشکلی وجود داشت – می‌خواستم این را تحت Ready، Set، Cloud میزبانی کنم. سایت من بر روی Hugo و Amplify ساخته شده است و از NextJS استفاده نمی کند.

کمی در کنسول Amplify جستجو کردم و متوجه شدم که می توانید به راحتی یک پروژه کاملاً جدید را تحت یک زیر دامنه ایجاد کنید. این به من اجازه می‌دهد تا وبلاگ اصلی را از برنامه تناسب اندام جدا نگه دارم، اما همچنان مارک آن‌ها یکسان باشد.

AWS برنامه‌ها و دامنه‌های مربوطه و مخازن GitHub را تقویت کنید

با کمی کار CSS، من توانستم برنامه تناسب اندام را طوری جلوه دهم که همیشه بخشی از Ready, Set, Cloud بوده است. به‌عنوان کسی که بیشتر کار خود را بر روی پایان کار متمرکز کرده است، این احتمالاً رضایت‌بخش‌ترین بخش پروژه بود.

من رابط کاربری را به یک API جدید که برای دسترسی به تمرین روزانه ساخته بودم متصل کردم. می توانید ضربه بزنید GET https://api.readysetcloud.io/fitness/workouts برای دریافت تمرین امروز اگر به دنبال تاریخ خاصی هستید، می توانید پارامتر رشته query را برای دریافت آن ارسال کنید: GET https://api.readysetcloud.io/fitness/workouts?date=2023-04-01.

بعد چه می شود؟

این به سرعت به یک پروژه پرشور من تبدیل شد. من در ابتدا می‌خواستم یک اتوماسیون سریع داشته باشم تا مقداری استرس ذهنی را صبح‌ها از من دور کند، اما این به سرعت به چیزی بیشتر تبدیل شد. این فرصتی برای من است تا یاد بگیرم، مهارت‌های بدون سرور خود را تمرین کنم، و به جامعه کمک کنم.

خب، بعدش چی؟ تمام تمرینات من بایگانی شده است، بنابراین در آینده آینده آنها را در دسترس و قابل جستجو خواهم کرد. اگر به لیستی از تمرینات بازو نیاز دارید یا می خواهید در برخی از تمرینات دایره ای مرور کنید، کافی است آرشیو را جستجو کنید.

همچنین قصد دارم قابلیت ورود به سیستم را اضافه کنم تا کاربران بتوانند تجهیزات و تمرینات خود را شخصی کنند. پس از آن، من شروع به اضافه کردن رتبه‌بندی رضایت می‌کنم تا به تنظیم تمرینات هوش مصنوعی تولید شده بر اساس ترجیحات شما کمک کنم.

این متن باز است! اگر هر یک از آن شما را هیجان زده می کند و می خواهید مشارکت کنید، لطفاً آن را در GitHub بررسی کنید! به راحتی آن را جدا کنید یا درخواست کشش را باز کنید.

اگر می خواهید نگاهی به تمرین روزانه بیندازید، می توانید آن را در fitness.readysetcloud.io پیدا کنید. مانند همه نرم افزارها، این نرم افزار کامل نیست. ممکن است چیزی در آنجا ببینید که کمی حشره دار به نظر می رسد – و احتمالاً همینطور است! به مرور زمان آن‌ها را اتو و جلا می‌کنیم.

از اینکه دنبال می کنید متشکرم اگر توصیه یا سؤالی دارید به من اطلاع دهید.

کد نویسی مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا