مهندسی سریع برای توسعه وب

در سال های آینده بدون شک تغییری در نحوه نوشتن همه کدها ایجاد خواهد شد. درک اینکه چگونه مدلهای یادگیری بزرگ (LLM) کار میکنند، و چگونه میتوان با آنها از طریق یک اعلان به بهترین شکل تعامل کرد، یک مهارت حیاتی است. بسیاری از توسعه دهندگان و غیر توسعه دهندگان در حال حاضر این کار را انجام می دهند زیرا توانایی تولید کد در صورت تقاضا بسیار ارزشمند است.
من در 2 سال گذشته با تولید کد آزمایش کرده ام و در 6 ماه گذشته، جهشی بزرگ به جلو انجام شده است. من انتظار دارم که با گذشت زمان این به یک الگوی رایج تبدیل شود، اما حتی با پیشرفت مدلها، همیشه مفاهیم اصلی اساسی برای تعامل با یک اعلان هوش مصنوعی مانند ChatGPT یا Claude وجود خواهد داشت.
این به عنوان مهندسی سریع شناخته شده است، و من برخی از رویکردها و تکنیکهایی را که در هنگام تولید کد PHP، SASS، JS و HTML برای سایتهای وردپرس مفید بودهام، به اشتراک میگذارم. همین مفاهیم می تواند به راحتی برای هر CMS دیگر یا چارچوب توسعه نیز اعمال شود.

شما آنچه را که می دهید می گیرید
مهمترین قانونی که باید هنگام تعامل با یک اعلان هوش مصنوعی برای تولید کد به خاطر بسپارید این است که کیفیت ورودی که ارائه می کنید مستقیماً با کیفیت خروجی مرتبط است. همیشه به یاد داشته باشید که شما یک کار را برای یک شخص توصیف نمی کنید، که ممکن است واضح به نظر برسد اما این یک مفهوم جدید است که ما حتی متوجه انجام آن نمی شویم.
وقتی از هوش مصنوعی مانند ChatGPT یا کلود آنتروپیک میخواهید کد بنویسد، باید کاملاً واضح باشید. یک انسان می تواند منظور شما را حدس بزند، سوال بپرسد و اشتباهات خود را برطرف کند. هوش مصنوعی این کار را نمی کند.
فقط از کلماتی که شما تایپ می کنید پیروی می کند. اگر چیزی را کنار بگذارید، هوش مصنوعی متوجه گم شدن آن نخواهد شد. ممکن است چیزهایی را بدانید و استنباط کنید که درک اساسی از جنبه های خاصی از وردپرس را فرض می کند. چیزهایی که هرگز در هنگام توصیف یک کار برای شخص دیگری شامل نمیشوید.
برای یک شخص
Can you modify post titles so that blog posts have 'Prefix: ' before them, but pages stay the same? Make sure it's properly escaped to avoid security issues
برای یک درخواست هوش مصنوعی
write a WordPress function that modifies all post titles using built-in functions using the_title filter to add 'Prefix: ' before the title. This will only be applied to posts (not pages)
این یک مثال بسیار ابتدایی است و من به هیچ وجه اعلان هوش مصنوعی بالا را خوب نمی دانم. اما هنگامی که با درخواست از یک شخص مقایسه می شود، برخی از جنبه های کلیدی به پاسخ بسیار بهتری منجر می شود:
ذکر وردپرس جزئیات مهم زمینه ای را در اختیار شما قرار می دهد
استفاده از توابع داخلی به مدل می گوید که ابتدا برای یافتن راه حل ها روی کجا تمرکز کند
ارائه قلاب the_title filter
به مدل می گوید دقیقا کجا و چگونه این کد را به بهترین شکل ممکن اجرا کند.
این سه جنبه با هم به شدت تمرکز مدل را محدود میکنند و به آن اجازه میدهند تا توجه بسیار بیشتری را روی کار اصلی متمرکز کند. نتیجه در مقایسه با کیفیت خروجی بالاتر است.
سازماندهی کد و استفاده مجدد
اولین قدم برای نوشتن دستورات هوش مصنوعی بسیار موثر برای تولید کد، داشتن درک محکمی از سیستم ها، ابزارها، APIها و رویکردهایی است که برای دستیابی به نتیجه نهایی ایده آل بهترین هستند.
اعلان های خوش ساختی که کد تولید می کنند، چه برای وردپرس یا هر چارچوب برنامه نویسی یا زبان دیگری، از پایگاه کد فعلی به ساده ترین راه ممکن به خوبی استفاده می کنند.
اگر هر تابع یا بلوک کد مستقل از بقیه کار کند، کد تولید شده توسط هوش مصنوعی می تواند به سرعت از کنترل خارج شود. شما خود را با یک پایگاه کدی خواهید دید که مملو از افزونگی است، که باعث میشود آن را پف کرده، کمتر قابل آزمایش و به طور کلی کار کردن با آن را دشوارتر کند.
در سالهای آینده من پیشبینی میکنم که کد تمیز و سازمانیافته مزیت بزرگی خواهد بود که به ندرت دیده میشود. ذاتاً، اگر هوش مصنوعی از جنبههای پایگاه کد موجود شما آگاه نباشد، مجدداً استفاده نمیکند.
در نهایت، اندازه زمینه ورودی به اندازه ای بزرگ می شود که کل یک پایگاه کد را به عنوان ورودی بپذیرد، و این کمک خواهد کرد. اما حتی در این صورت نیز پایگاه کد شما باید به خوبی سازماندهی شده و قابل درک باشد. داشتن یک طرز فکر DRY (تکرار نکنید) در مرکز برنامه نویسی مستحکم است و همیشه خواهد بود، خواه توسط انسان ها ساخته شده باشد یا هوش مصنوعی.
تولید کد با دانش اندک یا بدون دانش موضوعی کاملاً امکان پذیر است، اما نتایج به احتمال زیاد در آینده باعث ایجاد مشکل می شود. یک پایگاه کد مبتنی بر هوش مصنوعی که تکه تکه ساخته شده است، بیشتر مستعد اشکالات است و درک آن دشوارتر است. مهمتر از همه، این مسائل با گذشت زمان پیچیده تر خواهند شد.
بزرگترین توصیه من به همه توسعه دهندگان این است که سادگی و سازماندهی را در خط مقدم نگه دارند زیرا کدهای بیشتر و بیشتری توسط هوش مصنوعی تولید می شود.
اعلان خوب، اعلان بد
هنگامی که دستورالعملهای فوری بیش از حد مبهم هستند، به احتمال زیاد یک پاسخ نیمه کامل حاوی دستورالعملهایی در مورد نحوه پر کردن شکافها دریافت خواهید کرد. این معمولاً در بیشتر موارد بسیار کمتر مفید است.
در اینجا چند نمونه از دستورات که منجر به خروجی تولید کد کمتر از ایده آل می شود آورده شده است:
اخطار بد
provide code to make an api request to get my latest posts on reddit
i want it to be shown on my website as a list
ارائه این دستورالعمل به یک طراح/توسعهدهنده ممکن است برای تحقق آن همانطور که انتظار دارید کافی باشد، اما نه یک دستور هوش مصنوعی. این بسیار مبهم است و فاقد اطلاعات زمینه ای کافی برای هوش مصنوعی است تا بتواند به طور قابل اعتماد خروجی کد با کیفیت ایجاد کند.
هیچ اشاره ای به وردپرس ارائه نشده است، بنابراین به احتمال زیاد کد ارائه شده برای استفاده در سایت WP شما امکان پذیر نخواهد بود. ممکن است پایتون یا جاوا اسکریپت سمت سرور باشد.
هیچ زمینه ای برای کار با Reddit API ارائه نشده است، بنابراین به احتمال زیاد کدهای فعال را دریافت نخواهید کرد و در عوض دستورالعمل هایی در مورد نحوه کدنویسی به شما داده می شود.
هیچ جزئیاتی در مورد نوع محتوایی که باید از Reddit وارد شود: نظرات، پست ها یا هر دو؟ subreddit خاص یا همه subreddit ها؟
هیچ جزئیاتی در مورد خروجی مورد نظر شما وجود ندارد، بنابراین ممکن است برای یک افزونه یا نرم افزاری که می تواند به جای کد استفاده شود توصیه می کند
اگر درخواست هوش مصنوعی شما PHP را ارائه میدهد، که بعید است اما بسته به مکالمههای قبلی که داشتهاید ممکن است اتفاق بیفتد، همچنان کدی نخواهد بود که آنقدرها مفید باشد. از هیچ توابع WP داخلی مانند wp_remote_post
و wp_remote_retreive_body
استفاده نمی کند و در عوض از کد PHP خام برای درخواست با cURL استفاده می کند.
سینتکس حاصل در محیطهای میزبانی خاصی با احتمال بیشتری شکست میخورد، و همچنین درک و ارزشگذاری برای توسعهدهندگان و مهندسان در آینده دشوارتر خواهد بود.
از آنجایی که هیچ زمینه ای در مورد خود درخواست ارائه نشده است، هیچ کد کاری ارائه نخواهد شد. در نهایت از انتظارات کمتر خواهد بود و برای نزدیکتر شدن به محصول نهایی نیاز به پیگیری خوبی دارد.
در حالی که استفاده از اعلانهای پیگیری در حین تولید کد ممکن است و گاهی اوقات سودمند است، توصیه میکنم سعی کنید تا حد ممکن با اولین درخواست به نهایی نزدیک شوید . مکالمات طولانی با هوش مصنوعی که به عقب و جلو می روند اغلب منجر به سردرگمی، عدم دقت و در نهایت ناامیدی بیشتر می شود.
اعلان خوب
اکنون برای مثالی از یک اعلان بسیار بهتر، که به نتایج قابل توجهی بهتر منجر خواهد شد.
create a wordpress function that will make an API request using wp_remote_post() to {REDDIT API URL} using the API key {YOUR API-KEY} to generate a list of my most recent posts and comments. I always use my reddit handle, {YOUR REDDIT-USERNAME}. the function will have the following optional arguments:
- $limit (integer) defaults to 20, but accepts a number between 1 and 100. if an invalid value is provided return a WP_Error mentioning the issue - $subreddits (array) defaults to [], accepts an array of strings containing specific subreddits to include posts and comments from. when provided it will set the appropriate API parameter(s), otherwise all posts and comments are included - $type (string) defaults 'posts', but can also be passed as 'comments'. the value of this parameter determines the type of reddit content we want to list, posts or comments, and will set the appropriate API parameters/arguments to filter the returned results
the response returned by wp_remote_post() will be checked for errors, and if a non-successful response was received back a detailed WP_Error will be returned with relevant information about the error.
any arguments passed to the function will be validated for errors to verify the formats and types are correct. when issues are found a relevant WP_Error will be returned.
when a successful 200 response is received back from the API request the response body will be extracted with built-in WP core functions (wp_remote_retreive_*) and restricted to pro ide a collection of associative arrays, each one containing the following properties/keys:
- type: comment|message - subject: title/subject of the thread - content: either post or comment text depending on the value of type, which can support any HTML returned by the API - published_on: ISO datetime when the content was published subreddit - url: to either the post or a hashed URL directly to comment
this data will populate an HTML template based on this Emmet structure:
div.reddit-feed>article.reddit-feed__item>h2.reddit-feed__title+p.reddit-feed__byline+div.reddit-feed__content
the template will:
- provide a byline like this: "X days ago at /r/{subreddit}" where the subreddit is a link to the subreddit, and the days ago uses the WP human time diff function - use wp_trim_words() to shorten any lengthy content beyond 120 words, adding a ellipses when shortened - link the h2 title to either the comment or post URL on reddit - the __item will have a bem modifier identifying the type as either --post or --comment
also provide SASS/SCSS code to style the template in the following ways:
- the top level container will have a top and bottom margin between 20px and 40px, using clamp() with a viewport width measurement rule to adapt based on screen widths between 600px and 1680px - each item will have a 20px bottom margin and bottom padding, with a 1.5px border-bottom that's 20% black - the last item will have no bottom border, no padding and no margin - the h2 will have a margin only ln the bottom of 10px, and will be 1.3x the font-size of the body font-size - the byline will have a margin only on the bottom of 20px, and will be 0.9x the font-size of the body font-size. all text will be colored 60% black, including the subreddit link which will be identified as a link with only an underline - the content and any HTML within it will have no margins
once the final code has been created review it as a whole to identify any syntax or functional issues to get it as close to production ready as possible
مثال پیشرفته: دستورات WP CLI سفارشی پیچیده
عملی کردن همه اینها ممکن است چیزی شبیه به مثال زیر باشد، که نشان می دهد چگونه می توان یک اعلان پیچیده و دقیق برای ایجاد مجموعه ای قوی از دستورات WP CLI سفارشی ایجاد کرد که راه هایی برای این کار ارائه می دهد:
یک گزارش SEO برای کل سایت ایجاد کنید
با خیال راحت یک پست جدید از یک فایل علامت گذاری ایجاد کنید
هر پیوند شکسته را در محتوای پست و هر فیلد سفارشی ACF پیدا کنید و گزارش دهید
برای انجام این کار، ما نیاز به ارائه درخواست AI خود با بسیاری از جزئیات خاص داریم، و انجام این کار در قالب طرح کلی می تواند بسیار مفید باشد. وقتی این کار به خوبی انجام شود، حداقل 10 برابر سریعتر از آنچه معمولاً برای نوشتن از ابتدا نیاز است، کد تولید می کند.
این یک مثال عالی از قدرت هوش مصنوعی در هنگام استفاده درست برای تولید کد است، اما همچنین کاملاً واضح است که برای اینکه واقعاً مؤثر باشید، به سطح نسبتاً عمیقی از دانش برنامه نویسی با وردپرس نیاز دارید تا عملکردها و رویکردهای خاصی را ذکر کنید. در حالی که میتوانید بدون این دانش کد تولید کنید، کیفیت آن به طور قابلتوجهی بهتر خواهد بود و در صورت انجام این کار، کمتر در معرض خطا قرار میگیرد.
اعلان هوش مصنوعی برای تولید کد وردپرس
یک کلاس PHP برای من ایجاد کنید تا بتوانم آن را به یک افزونه عملکرد وردپرس موجود اضافه کنم.
فضای نام کلاس Kevinlearynet خواهد بود
نام کلاس WP_CLI
خواهد بود
کلاس از الگوی تکی استفاده می کند و در صورت استفاده در یک فایل قرار می گیرد
این 3 دستور WP CLI سفارشی را به سایت وردپرس ما اضافه می کند:
wp kevinlearynet create-post-from-markdown
wp kevinlearynet list-seo-metadata
wp kevinlearynet پیوندهای شکسته را پیدا کنید
هر دستور یک متد کلاس واحد خواهد بود که از زیرخط و حروف کوچک در نام خود استفاده می کند
همه دستورات خروجی بلادرنگ را در صورت نیاز برای گزارش هر گونه اقدام یا خطای موفقیت آمیز در صورت وقوع، ارائه می دهند
همه دستورات پس از تکمیل، خلاصه نهایی یا جزئیاتی در مورد خطاهای رخ داده و دلیل آن ارائه می دهند.
ایجاد یک پست از markdown:
آرگومان $title اختیاری است، پیشفرض H1 در علامتگذاری است
آرگومان markdown $ مورد نیاز است، اگر نحو علامت گذاری معتبر نباشد یا معتبر نباشد، پیام خطا ارائه می شود و اسکریپت متوقف می شود
آرگومان $slug اختیاری است، با استفاده از تابع WP sanitize_title()
به صورت پیشفرض نسخه slugified عنوان را انتخاب میکند.
اگر یک پست موجود با همان اسلاگ یا عنوان پیدا شود، یک پیام خطا ارائه می شود و اسکریپت متوقف می شود
هنگامی که یک پست با موفقیت ایجاد می شود، یک URL برای نمای ویرایش آن در مدیریت WP در خروجی موفقیت ارائه می شود
آرگومان $status اختیاری است، پیشفرض پیشنویس است، اما میتواند روی هر رشته معتبر post_status تنظیم شود
فرمان ابرداده SEO فهرست کردن:
خروجی از فرمت جدول WP CLI حاوی ستونهایی برای عنوان پست، آدرس اینترنتی، تاریخ انتشار، عنوان SEO، توضیحات سئو استفاده میکند.
از یک WP_Query
سفارشی برای دریافت پستها در خروجی با پارامترهای پیشفرض زیر استفاده کنید:
post_type صفحه یا پست است
posts_per_page 500 است
عنوان به سئو و توضیحات سئو از پلاگین رتبه بندی ریاضی یا yoast seo بسته به اینکه کدام نصب و فعال باشد برداشته می شود. اگر هیچکدام در دسترس نباشد یک پیام خطا برگردانده می شود و اسکریپت متوقف می شود
پذیرش تمام پارامترهای موجود در دستور WP CLI post list داخلی برای فیلتر کردن WP_Query
که پستهای موجود در جدول را انتخاب میکند مجاز خواهد بود.
یافتن دستور پیوندهای شکسته:
پذیرش تمام پارامترهای موجود در دستور WP CLI post list داخلی برای فیلتر کردن WP_Query
که پستهای موجود در جدول را انتخاب میکند مجاز خواهد بود.
از یک WP_Query
سفارشی برای دریافت پستها در خروجی با پارامترهای پیشفرض زیر استفاده کنید:
post_type صفحه یا پست است
posts_per_page -1 است
یافتن همه پیوندها در the_content یا هر فیلد سفارشی ACF برای هر پستی که توسط درخواست سفارشی بازگردانده شده است
اطمینان حاصل کنید که همه پیوندها معتبر هستند و با استفاده از تابع داخلی wp_http_get خطایی را برنگردانید
هر چیزی که یک پاسخ 200 نباشد را شکسته می داند، حتی 301s و 302s
هنگامی که یک یا چند پیوند شکسته یافت می شود، یک پیام خطایی خواهد بود که تعداد پیوندهای شکسته یافت شده را ذکر می کند، و همچنین یک فرمت جدول WP CLI با ستون هایی برای:
مکان پیوند (محتوا یا نام فیلد ACF)
آدرس اینترنتی
پاسخ http
خطاهای ارائه شده در طول زمان اجرای اسکریپت، اسکریپت را متوقف یا پایان نمی دهند، آنها فقط خروجی می شوند و اسکریپت به پردازش پست بعدی ادامه می دهد.
هنگامی که هیچ پیوند شکسته ای یافت نشد، تعداد کل پیوندهای با موفقیت آزمایش شده را خروجی می دهد
با اجرای اسکریپت یک به یک نتایج خروجی را نشان می دهد
پس از تکمیل، کل کلاس را آزمایش و تأیید کنید تا مطمئن شوید که هیچ خطایی وجود ندارد و کلاس آماده تولید است
یک docblock PHP به کلاس اضافه کنید که شامل:
عنوان: دستورات WP CLI سفارشی
توضیحات: قابلیت CLI سفارشی را برای انتشار سریع محتوای نشانه گذاری شده، تجزیه و تحلیل سریع سئو، و آزمایش محتوا و زمینه های سفارشی برای لینک های شکسته اضافه می کند.
نظرات php docblock را به هر متد در کلاس اضافه کنید، هر کدام با عنوان و توضیحات کوتاه و مختصر از آنچه انجام می دهد.
از نظرات درون خطی در همه روش ها به مقدار کم استفاده کنید
شامل دستورات استفاده لازم برای کار در فضای نام Kevinlearynet باشد
هزینه آسان
هیچ شکی در آن وجود ندارد، تولید کد هوش مصنوعی باعث می شود برنامه نویسی سریعتر و در دسترس افراد بیشتری قرار گیرد. این از بسیاری جهات یک چیز بسیار خوب است. اگر افراد بیشتری بدانند برنامه نویسی و کد چگونه کار می کنند، کار کردن با هم و صحبت کردن به یک زبان آسان تر خواهد بود. حداقل در تئوری.
من شک دارم که واقعیت ممکن است متفاوت باشد. ChatGPT و سایر LLM ها این امکان را برای افراد فراهم می کند تا کدی بنویسند که کارها را بدون درک درستی از نحوه عملکرد آن انجام می دهد.
از بسیاری جهات این خطرناک است، و باعث میشود به بسیاری از «برنامههای کاربردی» وردپرس با معماری ضعیف و فرانکنشتاین مانند که در طول سالها به ارث بردهام فکر کنم. من سایتهای بیشماری را دیدهام که با هم به شکلی ساختگی هک شدهاند که در دراز مدت از بین میروند.
این یک مورد کلاسیک برای پس انداز پول از قبل و پرداخت گران برای آن در دراز مدت است. این درس احتمالاً برای تولید کد هوش مصنوعی و بسیاری از زمینه های دیگر نیز کاربرد دارد. البته میتوانم از اینجا دور باشم، فقط زمان مشخص خواهد کرد.
نتیجه گیری
در حالی که ثبت یک درخواست به این روش دشوارتر و وقت گیرتر است، اما پاداش آن ارزشش را دارد. توانایی نوشتن اعلانهای با کیفیت که منجر به کد تولید شده دقیق و مؤثر میشود، مهارتی حیاتی برای توسعهدهندگان در سالهای آینده خواهد بود.
فراتر از این، تسلط به زبانی که با آن کار میکنید و وقت گذاشتن برای دانستن پایگاه کد خود در داخل و خارج بسیار مهم است.
تولید کد هوش مصنوعی همچنان انقلابی در نحوه ساخت وبسایتها و برنامهها ایجاد میکند و من گمان میکنم که پایگاههای کد به سرعت در نتیجه گسترش خواهند یافت. دانستن بهترین راهها برای معماری، ساخت و در نهایت طراحی سیستمهای خوب، مهارتی خواهد بود که برای مدتی همچنان مورد تقاضا است.
خبرکاو
ارسال نظر