Forwarded from Zhino | ژینو (mahdi)
🌟 چیتها یا همون ابزار تقلب در بازیهای آنلاین چطور کار میکنند؟
به طور کلی در بازیهای آنلاین دو عامل وجود دارد که با همکاری یکدیگر میشه به طور آنلاین با بازیکنان دیگه یه بازی آنلاین بازی کرد.
🧑💻 کلاینت (Client): سیستم بازیکن که رندر گرافیک، ورودی کاربر و ارسال اطلاعات رو انجام میده.
☁️ سرور (Server): هماهنگکننده اصلی که دادههای همه بازیکنان رو دریافت و تحلیل میکنه و تصمیم میگیره چه اتفاقیهایی باید بیفته.
– 🧩 خب کسایی که ابزار تقلب یا همون چیت میسازن دقیقا چهکاری انجام میدن؟ 🤔
معمولا با دستکاری فایلهای بازی، حافظهی اجرایی یا ساختار دادههای سمت کلاینت، رفتار بازی رو عوض میکنن. این کار میتونه با روشهایی مثل مهندسی معکوس، تزریق کد یا ویرایش موقتی حافظه انجام بشه.
– 🧩 آیا چیتسازها از سرور بازی هم میتونن استفاده کنند؟ 👀
چون این کار نیازمند نفوذ غیرمجاز به سرور است و ریسک قانونی و امنیتی بالایی داره، معمولا مورد استفاده قرار نمیگیره. البته برای اینکار نیاز به مهارتهای هک و نفوذ هم نیاز دارن.
– 🤖 چی باعث میشه که یک بازیکن از ابزار تقلبی استفاده کرده شناسایی بشه؟
آنتیچیتها معمولا به دو نوع اصلی تقسیم میشن:
— نوع اول: یه سری که روی سیستم بازیکن اجرا میشن، مثل Easy Anti-Cheat یا BattleEye، که حافظه، فایلهای DLL و فعالیتهای مشکوک سیستم رو زیر نظر دارن.
— نوع دوم: یه نوع دیگههم هست که سمت سروره و رفتار بازیکنان رو بررسی میکنه؛ مثلا اگر پلیری خیلی سریعتر از حد معمول حرکت کنه یا با دقت غیرطبیعی تیر بزنه، بهعنوان مشکوک شناسایی میشه.
👈 مثالی از نحوه شناسایی:
– اگر حداکثر سرعت مجاز یک بازیکن 5 واحد بر ثانیه باشد، اما دادههای ارسالی از کلاینت نشون بده که در یک فریم از مختصات (0,0) به (0,10) رسیده، سرور یا آنتیچیت میتونه این مورد رو به عنوان حرکت غیرمجاز ثبت کنه.
– 🎖 چیتهای پراستفاده و نحوه کارکردشان: خب حالا بیایید بررسی کنیم که چیت های پر استفاده چطوری کار میکنن.
*⃣ اِیمبات [Aimbot]:
از حافظهی RAM بازی موقعیت دقیق دشمنها رو استخراج میکنه. با استفاده از توابع حرکتی موس یا تزریق DLL، موس رو بهصورت مصنوعی به مختصات دشمن میبره. معمولا با FPS بازی هماهنگ میشه تا طبیعیتر بهنظر برسه (و آنتیچیت سختتر متوجه بشه).
*⃣ والهک [Wallhack]:
بازی معمولا اطلاعات بقیه بازیکنان رو به دلیل سینک [Synchronizing] بهتر برای کلاینت ها میفرسته. از حافظه یا GPU این اطلاعات رو استخراج میکنن و به صورت باکس یا اسکلت بهم نمایش میدن.
*⃣ اسپید هک [Speed hack]:
در برخی بازیها سرعت حرکت در RAM نگهداری میشه. چیت با تغییر اون مقدار، سرعت بازیکن رو بالا میبره. بعضی وقتا هم با دستکاری Time Scale این کار انجام میشه (مثل فریمریت فیک).
*⃣ تریگر بات [Triggerbot]:
از توابع DirectX یا OpenGL برای بررسی پیکسلهای مرکز صفحه استفاده میکنه. وقتی رنگ مشخصی (مثل قرمز دشمن) در وسط صفحه دیده بشه، کلیک موس اجرا میشه.
– 🔥 در آخر یادم نره بگم که به طور خلاصه چیتها از روشهای زیر ساخته میشن:
🟡 Memory Editing:
دادههای در حال اجرا در RAM رو تغییر میده.
🟡 DLL Injection:
کد جدیدی وارد فرآیند بازی میکنه.
🟡 Hooking APIs :
توابع گرافیکی یا کنترلی بازی رو تغییر میده.
🟡 Packet Editing:
غیر رایجه؛ بستههای شبکه رو تغییر میده (معمولا قابل شناسایی توسط سرور)
🟡 External Programs:
بدون دخالت مستقیم، با گرفتن اسکرین، مکان دشمن رو تشخیص میده.
*⃣ #Game #Article
💎 Channel: @ZhinoDev
به طور کلی در بازیهای آنلاین دو عامل وجود دارد که با همکاری یکدیگر میشه به طور آنلاین با بازیکنان دیگه یه بازی آنلاین بازی کرد.
🧑💻 کلاینت (Client): سیستم بازیکن که رندر گرافیک، ورودی کاربر و ارسال اطلاعات رو انجام میده.
💡 مثال: اگر بازی شوتر باشه اطلاعاتی مثل
مکان دقیق بازیکن، شلیک تیر، نارنجک و ...
☁️ سرور (Server): هماهنگکننده اصلی که دادههای همه بازیکنان رو دریافت و تحلیل میکنه و تصمیم میگیره چه اتفاقیهایی باید بیفته.
💡 مثال: بازی اگر بازی شوتر باشه اطلاعات شلیک گلوله رو از کلاینت اول میگیره
و اطلاعات مکان بازیکن رو از کلاینت دوم میگیره. هرموقع که این دو مختصات رویهم منطبق شدند به پلیر ۲ دمیج وارد میشه.
– 🧩 خب کسایی که ابزار تقلب یا همون چیت میسازن دقیقا چهکاری انجام میدن؟ 🤔
معمولا با دستکاری فایلهای بازی، حافظهی اجرایی یا ساختار دادههای سمت کلاینت، رفتار بازی رو عوض میکنن. این کار میتونه با روشهایی مثل مهندسی معکوس، تزریق کد یا ویرایش موقتی حافظه انجام بشه.
– 🧩 آیا چیتسازها از سرور بازی هم میتونن استفاده کنند؟ 👀
چون این کار نیازمند نفوذ غیرمجاز به سرور است و ریسک قانونی و امنیتی بالایی داره، معمولا مورد استفاده قرار نمیگیره. البته برای اینکار نیاز به مهارتهای هک و نفوذ هم نیاز دارن.
– 🤖 چی باعث میشه که یک بازیکن از ابزار تقلبی استفاده کرده شناسایی بشه؟
آنتیچیتها معمولا به دو نوع اصلی تقسیم میشن:
— نوع اول: یه سری که روی سیستم بازیکن اجرا میشن، مثل Easy Anti-Cheat یا BattleEye، که حافظه، فایلهای DLL و فعالیتهای مشکوک سیستم رو زیر نظر دارن.
— نوع دوم: یه نوع دیگههم هست که سمت سروره و رفتار بازیکنان رو بررسی میکنه؛ مثلا اگر پلیری خیلی سریعتر از حد معمول حرکت کنه یا با دقت غیرطبیعی تیر بزنه، بهعنوان مشکوک شناسایی میشه.
👈 مثالی از نحوه شناسایی:
– اگر حداکثر سرعت مجاز یک بازیکن 5 واحد بر ثانیه باشد، اما دادههای ارسالی از کلاینت نشون بده که در یک فریم از مختصات (0,0) به (0,10) رسیده، سرور یا آنتیچیت میتونه این مورد رو به عنوان حرکت غیرمجاز ثبت کنه.
⚠️ البته بررسی کامل این رفتارها منابع زیادی مصرف میکنه، برای همین بعضی بازیها فقط موارد خاص رو بررسی میکنن یا از سیستمهای گزارشدهی بازیکنان استفاده میکنند.
– 🎖 چیتهای پراستفاده و نحوه کارکردشان: خب حالا بیایید بررسی کنیم که چیت های پر استفاده چطوری کار میکنن.
*⃣ اِیمبات [Aimbot]:
از حافظهی RAM بازی موقعیت دقیق دشمنها رو استخراج میکنه. با استفاده از توابع حرکتی موس یا تزریق DLL، موس رو بهصورت مصنوعی به مختصات دشمن میبره. معمولا با FPS بازی هماهنگ میشه تا طبیعیتر بهنظر برسه (و آنتیچیت سختتر متوجه بشه).
*⃣ والهک [Wallhack]:
بازی معمولا اطلاعات بقیه بازیکنان رو به دلیل سینک [Synchronizing] بهتر برای کلاینت ها میفرسته. از حافظه یا GPU این اطلاعات رو استخراج میکنن و به صورت باکس یا اسکلت بهم نمایش میدن.
*⃣ اسپید هک [Speed hack]:
در برخی بازیها سرعت حرکت در RAM نگهداری میشه. چیت با تغییر اون مقدار، سرعت بازیکن رو بالا میبره. بعضی وقتا هم با دستکاری Time Scale این کار انجام میشه (مثل فریمریت فیک).
⚠️ این نوع چیت معمولا راحت شناسایی میشه چون دادههای غیرعادی برای سرور میفرسته.
*⃣ تریگر بات [Triggerbot]:
از توابع DirectX یا OpenGL برای بررسی پیکسلهای مرکز صفحه استفاده میکنه. وقتی رنگ مشخصی (مثل قرمز دشمن) در وسط صفحه دیده بشه، کلیک موس اجرا میشه.
– 🔥 در آخر یادم نره بگم که به طور خلاصه چیتها از روشهای زیر ساخته میشن:
🟡 Memory Editing:
دادههای در حال اجرا در RAM رو تغییر میده.
🟡 DLL Injection:
کد جدیدی وارد فرآیند بازی میکنه.
🟡 Hooking APIs :
توابع گرافیکی یا کنترلی بازی رو تغییر میده.
🟡 Packet Editing:
غیر رایجه؛ بستههای شبکه رو تغییر میده (معمولا قابل شناسایی توسط سرور)
🟡 External Programs:
بدون دخالت مستقیم، با گرفتن اسکرین، مکان دشمن رو تشخیص میده.
*⃣ #Game #Article
💎 Channel: @ZhinoDev
🔥15❤3💩1👌1
❤7👍2
Syntax | سینتکس
از کدوم بیشتر استفاده می کنید؟
حرف هوش مصنوعی شد.
من هوش مصنوعیمو به تلگرام وصل کردم.
الان توی گروه سینتکسفا هستش.
تو گروه پیام بدید و سعی کنید باهاش ارتباط برقرار کنید تا با یه هوش مصنوعی خیلی متفاوت روبرو بشید
فعلا خاموشه
من هوش مصنوعیمو به تلگرام وصل کردم.
الان توی گروه سینتکسفا هستش.
تو گروه پیام بدید و سعی کنید باهاش ارتباط برقرار کنید تا با یه هوش مصنوعی خیلی متفاوت روبرو بشید
فعلا خاموشه
👻17❤1
Syntax | سینتکس
حرف هوش مصنوعی شد. من هوش مصنوعیمو به تلگرام وصل کردم. الان توی گروه سینتکسفا هستش. تو گروه پیام بدید و سعی کنید باهاش ارتباط برقرار کنید تا با یه هوش مصنوعی خیلی متفاوت روبرو بشید فعلا خاموشه
خب بریم سراغ تست بعدی
آنلاینه بیاید گروه فقط زیاد اذیتش نکنید😒
آنلاینه بیاید گروه فقط زیاد اذیتش نکنید
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
PgBouncer
ابزاری برای مدیریت کانکشن های پستگرس
چه زمانی میشه ازش استفاده کرد؟
اپلیکیشنهای وب با ترافیک بالا:
این اصلیترین کاربرد PgBouncer است. در اپلیکیشنهایی مثل جنگو، هر درخواست (request) کاربر ممکنه نیاز به یک کانکشن به دیتابیس داشته باشه. ساختن و از بین بردن کانکشن در PostgreSQL یک عملیات سنگین و پرهزینهست (چون به ازای هر کانکشن یک پروسس جدید در سیستمعامل ایجاد میکنه). PgBouncer با نگه داشتن یک استخر (pool) از کانکشنهای آماده، این هزینه رو به صفر نزدیک میکنه.
محیطهای Serverless یا Function-as-a-Service (FaaS):
در پلتفرمهایی مثل AWS Lambda، هر اجرای تابع یک محیط ایزوله و کوتاهمدته. شما نمیتونید یک کانکشن دائمی به دیتابیس داشته باشید. بدون یک connection pooler مثل PgBouncer، دیتابیس شما با هزاران درخواست اتصال و قطعی بمباران میشه.
معماری میکروسرویس:
وقتی تعداد زیادی سرویس کوچک دارید که همگی به یک دیتابیس متصل میشن، مدیریت کانکشنها میتونه از کنترل خارج بشه. PgBouncer به عنوان یک دروازه (gateway) عمل میکنه و این هرج و مرج رو مدیریت میکنه.
اپلیکیشنهایی با کانکشنهای کوتاهمدت و زیاد:
هر نرمافزاری که در بازههای زمانی کوتاه تعداد زیادی کانکشن به دیتابیس باز و بسته میکنه، کاندیدای اصلی استفاده از PgBouncer است.
فایل docker compose که از PgBouncer استفاده شده تو یک پروژه جنگویی:
https://github.com/syntaxfa/django-structure/blob/main/compose.yml
نکته:
از نسخه bitnami بجای edoburu استفاده شده چون:
میشه با متغیر های محیطی پیکربندی کرد. خودم شخصا بیشتر دوست دارم بجای mount کردن فایل داخل خود فایل docker compose بتونم کانفیگ هارو اضافه کنم.
امنیت ایمیج bitnami خوبه و توسط شرکت غولی پشتیبانی میشه.
#PgBouncer
@Syntax_fa
ابزاری برای مدیریت کانکشن های پستگرس
چه زمانی میشه ازش استفاده کرد؟
اپلیکیشنهای وب با ترافیک بالا:
این اصلیترین کاربرد PgBouncer است. در اپلیکیشنهایی مثل جنگو، هر درخواست (request) کاربر ممکنه نیاز به یک کانکشن به دیتابیس داشته باشه. ساختن و از بین بردن کانکشن در PostgreSQL یک عملیات سنگین و پرهزینهست (چون به ازای هر کانکشن یک پروسس جدید در سیستمعامل ایجاد میکنه). PgBouncer با نگه داشتن یک استخر (pool) از کانکشنهای آماده، این هزینه رو به صفر نزدیک میکنه.
محیطهای Serverless یا Function-as-a-Service (FaaS):
در پلتفرمهایی مثل AWS Lambda، هر اجرای تابع یک محیط ایزوله و کوتاهمدته. شما نمیتونید یک کانکشن دائمی به دیتابیس داشته باشید. بدون یک connection pooler مثل PgBouncer، دیتابیس شما با هزاران درخواست اتصال و قطعی بمباران میشه.
معماری میکروسرویس:
وقتی تعداد زیادی سرویس کوچک دارید که همگی به یک دیتابیس متصل میشن، مدیریت کانکشنها میتونه از کنترل خارج بشه. PgBouncer به عنوان یک دروازه (gateway) عمل میکنه و این هرج و مرج رو مدیریت میکنه.
اپلیکیشنهایی با کانکشنهای کوتاهمدت و زیاد:
هر نرمافزاری که در بازههای زمانی کوتاه تعداد زیادی کانکشن به دیتابیس باز و بسته میکنه، کاندیدای اصلی استفاده از PgBouncer است.
فایل docker compose که از PgBouncer استفاده شده تو یک پروژه جنگویی:
https://github.com/syntaxfa/django-structure/blob/main/compose.yml
نکته:
از نسخه bitnami بجای edoburu استفاده شده چون:
میشه با متغیر های محیطی پیکربندی کرد. خودم شخصا بیشتر دوست دارم بجای mount کردن فایل داخل خود فایل docker compose بتونم کانفیگ هارو اضافه کنم.
امنیت ایمیج bitnami خوبه و توسط شرکت غولی پشتیبانی میشه.
#PgBouncer
@Syntax_fa
👍7❤2🔥1
🚀 آموزش فعالسازی مدلهای قدیمی ChatGPT
با انتشار نسخه 5 چتجیپیتی، بسیاری از مدلهای قدیمی دیگر بهصورت پیشفرض نمایش داده نمیشوند.
اما همچنان میتوانید به آنها دسترسی داشته باشید! کافیست مراحل زیر را دنبال کنید:
1️⃣ وارد حساب کاربری خود شوید و به بخش Settings بروید.
2️⃣ در تب General، گزینه Show additional models را فعال کنید.
📌 با این روش، مدلهای قدیمی دوباره در لیست شما نمایش داده میشوند و میتوانید از آنها استفاده کنید.
Source
با انتشار نسخه 5 چتجیپیتی، بسیاری از مدلهای قدیمی دیگر بهصورت پیشفرض نمایش داده نمیشوند.
اما همچنان میتوانید به آنها دسترسی داشته باشید! کافیست مراحل زیر را دنبال کنید:
1️⃣ وارد حساب کاربری خود شوید و به بخش Settings بروید.
2️⃣ در تب General، گزینه Show additional models را فعال کنید.
📌 با این روش، مدلهای قدیمی دوباره در لیست شما نمایش داده میشوند و میتوانید از آنها استفاده کنید.
Source
👍11❤1👏1
سرور بازی ماینکرفت
تو این ریپو docker compose سرور ماینکرفت هم برای JAVA server و هم bedrock رو قرار دادیم.
در کنار کد، گیم هم بزنید خوب است🍸
https://github.com/alireza-fa/minecraft-server
#fun
@Syntax_fa
تو این ریپو docker compose سرور ماینکرفت هم برای JAVA server و هم bedrock رو قرار دادیم.
در کنار کد، گیم هم بزنید خوب است
https://github.com/alireza-fa/minecraft-server
#fun
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - alireza-fa/minecraft-server
Contribute to alireza-fa/minecraft-server development by creating an account on GitHub.
🔥10👍2❤1👻1
از آپدیت جدید تلگرام چخبر ☹️
اضافه کردن موزیک تو پروفایلتون:
تلگرامم از اینهمه کانال شخصی که زده بودید تا ملت رو با سلیقه خاص موزیکتون آشنا کنید خسته شده و این قابلیت رو اضافه کرده.
کافیه یه آهنگو پلی کنید، بعد رو گزینه Add to profile بزنید.
#fun
@Syntax_fa
اضافه کردن موزیک تو پروفایلتون:
تلگرامم از اینهمه کانال شخصی که زده بودید تا ملت رو با سلیقه خاص موزیکتون آشنا کنید خسته شده و این قابلیت رو اضافه کرده.
کافیه یه آهنگو پلی کنید، بعد رو گزینه Add to profile بزنید.
#fun
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15😁7👍2❤1👀1
فایل آپلود شده رو فقط با پسوندش چک میکنی؟ بیخیال!
تاحالا شده کاربر فایلی رو آپلود کنه و شما فقط پسوندش ( jpg یا pdf) رو چک کنید و با خوشحالی بگید کار تمومه؟ اگه اینطوره، باید بگم که یه جای کار حسابی میلنگه!
کاربر به راحتی میتونه یک فایل مخرب (مثلاً یه اسکریپت) رو به virus.png تغییر نام بده و سیستم شما رو دور بزنه.
راه حل چیه؟ کتابخونه python-magic
این پکیج یک رابط (Wrapper) برای کتابخونه قدرتمند libmagic در زبان C هست. کار اصلیش اینه که بیخیال اسم و پسوند فایل بشه و بره سراغ اصل مطلب محتوای خود فایل.
مجیک چند بایت اول یک فایل (که بهش هدر یا Magic Numbers میگن) رو میخونه و از روی اون امضای دیجیتالی، نوع واقعی فایل رو تشخیص میده.
مثال:
#libmagic #python_magic
@Syntax_fa
تاحالا شده کاربر فایلی رو آپلود کنه و شما فقط پسوندش ( jpg یا pdf) رو چک کنید و با خوشحالی بگید کار تمومه؟ اگه اینطوره، باید بگم که یه جای کار حسابی میلنگه!
کاربر به راحتی میتونه یک فایل مخرب (مثلاً یه اسکریپت) رو به virus.png تغییر نام بده و سیستم شما رو دور بزنه.
راه حل چیه؟ کتابخونه python-magic
این پکیج یک رابط (Wrapper) برای کتابخونه قدرتمند libmagic در زبان C هست. کار اصلیش اینه که بیخیال اسم و پسوند فایل بشه و بره سراغ اصل مطلب محتوای خود فایل.
مجیک چند بایت اول یک فایل (که بهش هدر یا Magic Numbers میگن) رو میخونه و از روی اون امضای دیجیتالی، نوع واقعی فایل رو تشخیص میده.
مثال:
import magic
from django.core.files.uploadedfile import InMemoryUploadedFile
def get_mime_type_from_content(file: InMemoryUploadedFile) -> str:
"""Reads the initial bytes of a file to determine its actual MIME type."""
try:
initial_bytes = file.read(2048)
file.seek(0)
return magic.from_buffer(initial_bytes, mime=True)
except Exception as err:
raise Exception(f"Failed to detect MIME type: {err}")
def check_file_is_image(file: InMemoryUploadedFile) -> bool:
"""Check if the uploaded file is an image based on its MIME type."""
try:
mime_type = get_mime_type_from_content(file)
return mime_type.startswith("image/")
except Exception as err:
print(f"[ERROR] check_file_is_image: {err}")
return False
#libmagic #python_magic
@Syntax_fa
❤12👍5
مفهوم Trade-off در توسعه نرمافزار
(تعادل میان مزایا و معایب در تصمیمهای فنی)
در توسعه نرمافزار، هیچ تصمیمی رایگان نیست. هر انتخابی، در کنار مزایا، هزینهها و محدودیتهایی هم دارد. Trade-off یعنی برقراری تعادل میان این مزایا و معایب، و انتخاب بهترین گزینه متناسب با شرایط واقعی پروژه.
مثال ساده از دنیای خارج:
وقتی میخواهید خودرویی بخرید، معمولاً باید بین مصرف سوخت پایین و قدرت موتور بالا یکی را قربانی کنید. به ندرت خودرویی پیدا میشود که هر دو ویژگی را به بهترین شکل داشته باشد.
و در دنیای نرمافزار:
- اگر بخواهید سرعت توسعه بالاتر برود، احتمالاً باید کمی از بهینهبودن یا کارایی چشمپوشی کنید.
- اگر انعطافپذیری کامل بخواهید، باید پیچیدگی بیشتری را بپذیرید.
- اگر سراغ فریمورکهای جدید بروید، نوآوری بیشتری به دست میآورید، اما منابع آموزشی و نیروی متخصص کمتری پیدا میکنید.
تفاوت در معیارهای سنجش
نکته مهم دیگر این است که معیارهای سنجش در هر پروژه متفاوت است:
- یک استارتاپ ممکن است سرعت رسیدن به بازار را مهمتر بداند.
- یک سیستم بانکی احتمالاً امنیت و پایداری بلندمدت را در اولویت قرار میدهد.
- یک پروژه تحقیقاتی شاید بیشتر به انعطافپذیری و نوآوری اهمیت دهد.
بنابراین حتی اگر دو تیم روی یک زبان یا فریمورک واحد بحث کنند، ممکن است از زاویههای متفاوتی آن را ارزیابی کنند و به نتایج متفاوتی برسند.
به همین دلیل، انتخاب زبان، ابزار یا فریمورک هیچوقت یک پاسخ مطلق «بهترین» ندارد.
سؤال درست این نیست که کدام بهترین است؟
بلکه این است که کدام گزینه با توجه به نیازهای فعلی پروژه و توان تیم، بهترین تعادل (Trade-off) را فراهم میکند؟
Source
#trade_off
@Syntax_fa
(تعادل میان مزایا و معایب در تصمیمهای فنی)
در توسعه نرمافزار، هیچ تصمیمی رایگان نیست. هر انتخابی، در کنار مزایا، هزینهها و محدودیتهایی هم دارد. Trade-off یعنی برقراری تعادل میان این مزایا و معایب، و انتخاب بهترین گزینه متناسب با شرایط واقعی پروژه.
مثال ساده از دنیای خارج:
وقتی میخواهید خودرویی بخرید، معمولاً باید بین مصرف سوخت پایین و قدرت موتور بالا یکی را قربانی کنید. به ندرت خودرویی پیدا میشود که هر دو ویژگی را به بهترین شکل داشته باشد.
و در دنیای نرمافزار:
- اگر بخواهید سرعت توسعه بالاتر برود، احتمالاً باید کمی از بهینهبودن یا کارایی چشمپوشی کنید.
- اگر انعطافپذیری کامل بخواهید، باید پیچیدگی بیشتری را بپذیرید.
- اگر سراغ فریمورکهای جدید بروید، نوآوری بیشتری به دست میآورید، اما منابع آموزشی و نیروی متخصص کمتری پیدا میکنید.
تفاوت در معیارهای سنجش
نکته مهم دیگر این است که معیارهای سنجش در هر پروژه متفاوت است:
- یک استارتاپ ممکن است سرعت رسیدن به بازار را مهمتر بداند.
- یک سیستم بانکی احتمالاً امنیت و پایداری بلندمدت را در اولویت قرار میدهد.
- یک پروژه تحقیقاتی شاید بیشتر به انعطافپذیری و نوآوری اهمیت دهد.
بنابراین حتی اگر دو تیم روی یک زبان یا فریمورک واحد بحث کنند، ممکن است از زاویههای متفاوتی آن را ارزیابی کنند و به نتایج متفاوتی برسند.
به همین دلیل، انتخاب زبان، ابزار یا فریمورک هیچوقت یک پاسخ مطلق «بهترین» ندارد.
سؤال درست این نیست که کدام بهترین است؟
بلکه این است که کدام گزینه با توجه به نیازهای فعلی پروژه و توان تیم، بهترین تعادل (Trade-off) را فراهم میکند؟
Source
#trade_off
@Syntax_fa
👍11❤1🔥1
Jules
آشنایی با دستیار کدنویسی هوش مصنوعی گوگل
یکی از جدیدترین و قدرتمندترین این ابزارها، Jules**، دستیار کدنویسی هوش مصنوعی گوگل است. اما Jules دقیقاً چیست و چه تفاوتی با سایر ابزارهای مشابه مانند Cursor دارد؟
Jules: یک همکار و معمار کد
ا Jules یک مدل زبان بزرگ (LLM) است که به عنوان یک همکار برنامهنویس (AI Pair Programmer) طراحی شده است. برخلاف ابزارهایی که تنها به تکمیل کد یا پاسخ به سوالات کوتاه میپردازند، Jules میتواند یک پروژه کامل را تحلیل کرده و در انجام تسکهای پیچیده به شما کمک کند.
روند کاری با Jules به صورت گفتگو محور و مبتنی بر تسک است. شما به عنوان یک توسعهدهنده:
1. سورس کد را شیر می کنید: Jules با دریافت سورس کد، یک دید جامع و کامل از معماری، وابستگیها و الگوهای کدنویسی پروژه شما پیدا میکند.
2. تسک را تعریف میکنید: شما نیازمندیهای خود را به زبان ساده بیان میکنید. برای مثال: «یک قابلیت جدید برای ثبتنام مشتری توسط فروشنده اضافه کن.»
3. راهحل دریافت میکنید: Jules با تحلیل کل پروژه، کد مورد نیاز را تولید کرده و به شما ارائه میدهد. این کد نه تنها سینتکس درستی دارد، بلکه با ساختار و الگوهای موجود در پروژه شما نیز هماهنگ است.
4. تست و بازخورد میدهید: شما کد را در محیط توسعه خود اجرا و تست میکنید. در صورت وجود مشکل یا نیاز به تغییر، بازخورد خود را به Jules میدهید تا راهحل را اصلاح کند.
نکته کلیدی این است که Jules مستقیماً کد را اجرا نمیکند، بلکه به عنوان یک معمار و متخصص عمل میکند که بهترین راهحل را بر اساس تحلیل عمیق پروژه پیشنهاد و تولید میکند.
مقایسه Jules با سایر دستیارهای هوش مصنوعی (مانند Cursor)
برای درک بهتر جایگاه Jules، میتوان آن را با ابزارهای دیگری مانند Cursor مقایسه کرد.
با Cursor: شما یک تابع را انتخاب کرده و مینویسید: "این تابع را بهینهتر کن" یا "برای این کد تست بنویس". Cursor تغییرات را مستقیماً در همان فایل اعمال میکند.
با Jules: شما کل پروژه را آپلود کرده و میگویید: "سیستم احراز هویت ما نیاز به بازنگری دارد تا از حملات Brute-force جلوگیری کند. بهترین راهحل چیست؟
انتخاب بین Jules و Cursor به نیاز شما بستگی دارد.
اگر به دنبال ابزاری برای افزایش سرعت در ویرایشهای روزمره و رفع باگهای کوچک درون محیط کدنویسی خود هستید، Cursor یک انتخاب فوقالعاده است.
اما اگر برای حل مسائل پیچیده، طراحی معماری، پیادهسازی یک قابلیت جدید از صفر تا صد یا بازنگری (Refactoring) بخشهای بزرگ پروژه به یک همکار هوشمند نیاز دارید، Jules با درک عمیق و جامع خود از کل پروژه، بهترین گزینه است.
https://jules.google.com/
#jules
@Syntax_fa
آشنایی با دستیار کدنویسی هوش مصنوعی گوگل
یکی از جدیدترین و قدرتمندترین این ابزارها، Jules**، دستیار کدنویسی هوش مصنوعی گوگل است. اما Jules دقیقاً چیست و چه تفاوتی با سایر ابزارهای مشابه مانند Cursor دارد؟
Jules: یک همکار و معمار کد
ا Jules یک مدل زبان بزرگ (LLM) است که به عنوان یک همکار برنامهنویس (AI Pair Programmer) طراحی شده است. برخلاف ابزارهایی که تنها به تکمیل کد یا پاسخ به سوالات کوتاه میپردازند، Jules میتواند یک پروژه کامل را تحلیل کرده و در انجام تسکهای پیچیده به شما کمک کند.
روند کاری با Jules به صورت گفتگو محور و مبتنی بر تسک است. شما به عنوان یک توسعهدهنده:
1. سورس کد را شیر می کنید: Jules با دریافت سورس کد، یک دید جامع و کامل از معماری، وابستگیها و الگوهای کدنویسی پروژه شما پیدا میکند.
2. تسک را تعریف میکنید: شما نیازمندیهای خود را به زبان ساده بیان میکنید. برای مثال: «یک قابلیت جدید برای ثبتنام مشتری توسط فروشنده اضافه کن.»
3. راهحل دریافت میکنید: Jules با تحلیل کل پروژه، کد مورد نیاز را تولید کرده و به شما ارائه میدهد. این کد نه تنها سینتکس درستی دارد، بلکه با ساختار و الگوهای موجود در پروژه شما نیز هماهنگ است.
4. تست و بازخورد میدهید: شما کد را در محیط توسعه خود اجرا و تست میکنید. در صورت وجود مشکل یا نیاز به تغییر، بازخورد خود را به Jules میدهید تا راهحل را اصلاح کند.
نکته کلیدی این است که Jules مستقیماً کد را اجرا نمیکند، بلکه به عنوان یک معمار و متخصص عمل میکند که بهترین راهحل را بر اساس تحلیل عمیق پروژه پیشنهاد و تولید میکند.
مقایسه Jules با سایر دستیارهای هوش مصنوعی (مانند Cursor)
برای درک بهتر جایگاه Jules، میتوان آن را با ابزارهای دیگری مانند Cursor مقایسه کرد.
با Cursor: شما یک تابع را انتخاب کرده و مینویسید: "این تابع را بهینهتر کن" یا "برای این کد تست بنویس". Cursor تغییرات را مستقیماً در همان فایل اعمال میکند.
با Jules: شما کل پروژه را آپلود کرده و میگویید: "سیستم احراز هویت ما نیاز به بازنگری دارد تا از حملات Brute-force جلوگیری کند. بهترین راهحل چیست؟
انتخاب بین Jules و Cursor به نیاز شما بستگی دارد.
اگر به دنبال ابزاری برای افزایش سرعت در ویرایشهای روزمره و رفع باگهای کوچک درون محیط کدنویسی خود هستید، Cursor یک انتخاب فوقالعاده است.
اما اگر برای حل مسائل پیچیده، طراحی معماری، پیادهسازی یک قابلیت جدید از صفر تا صد یا بازنگری (Refactoring) بخشهای بزرگ پروژه به یک همکار هوشمند نیاز دارید، Jules با درک عمیق و جامع خود از کل پروژه، بهترین گزینه است.
https://jules.google.com/
#jules
@Syntax_fa
❤9🔥4👍1
لاگهات رو بریز توی تلگرام
تصور کن:
* یک ارور
* بلافاصله، یک نوتیفیکیشن با اموجی ‼️ روی گوشیت میاد.
چرا تلگرام؟
1. فوری و همیشه در دسترس: کیه که تلگرام رو روی گوشیش نداشته باشه؟
2. فرمتبندی عالی: میتونید پیامها رو با Markdown خوشگل کنید، کدها رو متمایز کنید و با اموجی، سطح خطا رو مشخص کنید.
3. رایگان و بیدردسر: ساختن ربات تلگرام رایگانه و API اون بسیار ساده و قدرتمنده.
4. گروهی و تیمی: میتونید لاگها رو تو یه گروه تلگرامی بفرستید تا کل تیم فنی در لحظه از وقایع باخبر بشن.
ما با استفاده از کتابخانه استاندارد logging پایتون، یک Handler شخصیسازی شده مینویسیم که هر لاگ رو به یک پیام تلگرامی تبدیل میکنه.
چطور راه اندازی کنیم؟
1. ساخت ربات تلگرام: به
3. فراخوانی در پروژه:
کافیست در ابتدای فایل اصلی اپلیکیشن خود (مثلاً
قدم بعدی چیه؟
* برای سرویسهای مختلف، از
* به پیامهای خطا دکمههای شیشهای (Inline Buttons) اضافه کنید؛ مثلاً دکمه "Restart Service" یا "View Full Traceback".
* سطح لاگها را بر اساس محیط (Development/Production) تغییر دهید.
* حواستون باشه تلگرام نباید تنها مکانی باشه که لاگ هاتون ذخیره میشه.
#telegram #logging
@Syntax_fa
تصور کن:
* یک ارور
Critical
در اپلیکیشن شما اتفاق میفته.* بلافاصله، یک نوتیفیکیشن با اموجی ‼️ روی گوشیت میاد.
چرا تلگرام؟
1. فوری و همیشه در دسترس: کیه که تلگرام رو روی گوشیش نداشته باشه؟
2. فرمتبندی عالی: میتونید پیامها رو با Markdown خوشگل کنید، کدها رو متمایز کنید و با اموجی، سطح خطا رو مشخص کنید.
3. رایگان و بیدردسر: ساختن ربات تلگرام رایگانه و API اون بسیار ساده و قدرتمنده.
4. گروهی و تیمی: میتونید لاگها رو تو یه گروه تلگرامی بفرستید تا کل تیم فنی در لحظه از وقایع باخبر بشن.
ما با استفاده از کتابخانه استاندارد logging پایتون، یک Handler شخصیسازی شده مینویسیم که هر لاگ رو به یک پیام تلگرامی تبدیل میکنه.
import logging
import requests
from database import settings # Assuming settings are read from here
# --- Settings ---
# Load settings like bot token and admin ID from a central settings module
config = settings.get_all()
LOG_LEVEL = logging.INFO # Only send INFO level and higher logs
BOT_TOKEN = config.get('control_bot', {}).get('token')
ADMIN_ID = config.get('telegram', {}).get('admin_ids', [None])[0]
CHAT_ID = settings.get('logging.telegram_chat_id', ADMIN_ID)
class TelegramLogHandler(logging.Handler):
"""
A custom logging handler that sends log records to a Telegram chat.
"""
def __init__(self, token, chat_id):
super().__init__()
self.token = token
self.chat_id = chat_id
def emit(self, record):
"""
Formats and sends the log record.
This method is called by the logging framework.
"""
if not self.token or not self.chat_id:
return # Do nothing if token or chat_id is not set
log_entry = self.format(record)
# Use a simple emoji prefix for different log levels
if record.levelno >= logging.CRITICAL:
prefix = "‼️ CRITICAL"
elif record.levelno >= logging.ERROR:
prefix = "❌ ERROR"
elif record.levelno >= logging.WARNING:
prefix = "⚠️ WARNING"
else:
prefix = "ℹ️ INFO"
# Format the message with level, service name, and log content
message = f"{prefix}\n**Service:** `{record.name}`\n**Message:** `{log_entry}`"
url = f"https://api.telegram.org/bot{self.token}/sendMessage"
payload = {
'chat_id': self.chat_id,
'text': message,
'parse_mode': 'Markdown'
}
try:
requests.post(url, data=payload, timeout=5)
except requests.RequestException as e:
# If sending the log to Telegram fails, print the error to the console
print(f"Failed to send log to Telegram: {e}")
def setup_telegram_logging():
"""
Sets up the custom Telegram handler for the root logger.
Call this function once at the start of each service.
"""
if CHAT_ID and BOT_TOKEN:
# Get the root logger
logger = logging.getLogger()
# Create a handler and set its level
telegram_handler = TelegramLogHandler(BOT_TOKEN, CHAT_ID)
telegram_handler.setLevel(LOG_LEVEL)
# Create a formatter and add it to the handler
formatter = logging.Formatter('%(message)s')
telegram_handler.setFormatter(formatter)
# Add the handler to the root logger
logger.addHandler(telegram_handler)
logger.info("Telegram logging handler has been set up.")
چطور راه اندازی کنیم؟
1. ساخت ربات تلگرام: به
BotFather
در تلگرام پیام بدید، دستور /newbot
رو بزنید و یک ربات بسازید.3. فراخوانی در پروژه:
کافیست در ابتدای فایل اصلی اپلیکیشن خود (مثلاً
main.py
)، پکیج logging پایتون رو ایمپورت کنید و تابع setup_telegram_logging
را فراخوانی کنید.قدم بعدی چیه؟
* برای سرویسهای مختلف، از
CHAT_ID
های متفاوت استفاده کنید.* به پیامهای خطا دکمههای شیشهای (Inline Buttons) اضافه کنید؛ مثلاً دکمه "Restart Service" یا "View Full Traceback".
* سطح لاگها را بر اساس محیط (Development/Production) تغییر دهید.
* حواستون باشه تلگرام نباید تنها مکانی باشه که لاگ هاتون ذخیره میشه.
#telegram #logging
@Syntax_fa
👍6🔥4❤2
RAG (Retrieval-Augmented Generation)
تا به حال از خودتان پرسیدهاید که وقتی از Gemini یا ChatGPT درباره نتیجه یک مسابقه ورزشی که همین دیشب برگزار شده سوال میکنید، چطور با جزئیات کامل و دقیق به شما پاسخ میدهد؟ مگر دانش این مدلها محدود به اطلاعات تا سال خاصی نیست؟
بخش اول: مغز متفکر (مدل پایه زبان)
در قلب هر چتبات یک مدل زبانی بزرگ (LLM) قرار دارد. این مدل را تقریباً تمام کتابها، مقالات و وبسایتهای منتشر شده تا یک تاریخ مشخص (مثلاً اوایل ۲۰۲۳) را خوانده و درک کرده است. او میتواند شعر بگوید، کد بنویسد، مقالههای پیچیده را خلاصه کند و درباره تاریخ فلسفه بحث کند.
اما یک مشکل وجود دارد: این مدل از آن تاریخ به بعد در یک کتابخانه بدون دسترسی به دنیای بیرون حبس بوده است. او از اتفاقات جدید، اخبار روز یا نتایج مسابقات ورزشی اخیر هیچ اطلاعی ندارد. این "مغز" دانش عمومی گستردهای دارد، اما بهروز نیست.
بخش دوم: حافظه کوتاهمدت (مدیریت گفتگو)
وقتی شما با چتبات صحبت میکنید، او حرفهای چند دقیقه پیش شما را به خاطر میآورد. این همان چیزی است که به گفتگو حس یک مکالمه واقعی را میدهد. رابط کاربری به صورت هوشمند خلاصهای از مکالمه اخیر را مدیریت میکند تا زمینه بحث از دست نرود. این حافظه کامل و بینقص نیست، اما برای حفظ یک جریان منطقی در گفتگو کافی است.
بخش سوم: سیستم RAG
اینجا همان بخش شگفتانگیز ماجراست که مشکل بهروز نبودن "مدل" ما را حل میکند. این سیستم که RAG (Retrieval-Augmented Generation) نام دارد، مانند یک امتحان کتاب-باز برای هوش مصنوعی عمل میکند.
وقتی شما سوالی میپرسید که نیاز به اطلاعات جدید دارد، این مراحل در کسری از ثانیه اتفاق میافتد:
1. تشخیص نیاز: سیستم ابتدا تشخیص میدهد که آیا "مدل" میتواند با دانش موجود خود پاسخ دهد یا سوال نیاز به اطلاعات بهروز دارد.
2. جستجوی برقآسا (Retrieval): اگر نیاز به اطلاعات جدید باشد، سیستم در پشت صحنه یک جستجوی سریع در اینترنت (مثلاً گوگل) انجام میدهد. این کار مانند یک دستیار تحقیق است که در لحظه، مرتبطترین مقالات و منابع را پیدا میکند.
3. آمادهسازی "برگه تقلب" (Augmentation): سیستم نکات کلیدی و اطلاعات اصلی را از نتایج جستجو استخراج کرده و یک "برگه تقلب" یا خلاصهای از اطلاعات ضروری را آماده میکند.
4. تولید پاسخ نهایی (Generation): در نهایت، سیستم سوال اصلی شما را به همراه این "برگه تقلب" به مدل پایه میدهد. حالا مدل با استفاده از دانش عمیق خود و با استناد به اطلاعات جدیدی که در اختیارش قرار گرفته، یک پاسخ کامل، دقیق و بهروز تولید میکند.
به همین دلیل است که اغلب در انتهای پاسخهای Gemini یا ChatGPT، لینک به منابع را میبینید. اینها در واقع منابعی هستند که "دستیار تحقیق" در مرحله جستجو پیدا کرده و "مدل" برای پاسخ به شما از آنها استفاده کرده است.
#RAG
@Syntax_fa
تا به حال از خودتان پرسیدهاید که وقتی از Gemini یا ChatGPT درباره نتیجه یک مسابقه ورزشی که همین دیشب برگزار شده سوال میکنید، چطور با جزئیات کامل و دقیق به شما پاسخ میدهد؟ مگر دانش این مدلها محدود به اطلاعات تا سال خاصی نیست؟
بخش اول: مغز متفکر (مدل پایه زبان)
در قلب هر چتبات یک مدل زبانی بزرگ (LLM) قرار دارد. این مدل را تقریباً تمام کتابها، مقالات و وبسایتهای منتشر شده تا یک تاریخ مشخص (مثلاً اوایل ۲۰۲۳) را خوانده و درک کرده است. او میتواند شعر بگوید، کد بنویسد، مقالههای پیچیده را خلاصه کند و درباره تاریخ فلسفه بحث کند.
اما یک مشکل وجود دارد: این مدل از آن تاریخ به بعد در یک کتابخانه بدون دسترسی به دنیای بیرون حبس بوده است. او از اتفاقات جدید، اخبار روز یا نتایج مسابقات ورزشی اخیر هیچ اطلاعی ندارد. این "مغز" دانش عمومی گستردهای دارد، اما بهروز نیست.
بخش دوم: حافظه کوتاهمدت (مدیریت گفتگو)
وقتی شما با چتبات صحبت میکنید، او حرفهای چند دقیقه پیش شما را به خاطر میآورد. این همان چیزی است که به گفتگو حس یک مکالمه واقعی را میدهد. رابط کاربری به صورت هوشمند خلاصهای از مکالمه اخیر را مدیریت میکند تا زمینه بحث از دست نرود. این حافظه کامل و بینقص نیست، اما برای حفظ یک جریان منطقی در گفتگو کافی است.
بخش سوم: سیستم RAG
اینجا همان بخش شگفتانگیز ماجراست که مشکل بهروز نبودن "مدل" ما را حل میکند. این سیستم که RAG (Retrieval-Augmented Generation) نام دارد، مانند یک امتحان کتاب-باز برای هوش مصنوعی عمل میکند.
وقتی شما سوالی میپرسید که نیاز به اطلاعات جدید دارد، این مراحل در کسری از ثانیه اتفاق میافتد:
1. تشخیص نیاز: سیستم ابتدا تشخیص میدهد که آیا "مدل" میتواند با دانش موجود خود پاسخ دهد یا سوال نیاز به اطلاعات بهروز دارد.
2. جستجوی برقآسا (Retrieval): اگر نیاز به اطلاعات جدید باشد، سیستم در پشت صحنه یک جستجوی سریع در اینترنت (مثلاً گوگل) انجام میدهد. این کار مانند یک دستیار تحقیق است که در لحظه، مرتبطترین مقالات و منابع را پیدا میکند.
3. آمادهسازی "برگه تقلب" (Augmentation): سیستم نکات کلیدی و اطلاعات اصلی را از نتایج جستجو استخراج کرده و یک "برگه تقلب" یا خلاصهای از اطلاعات ضروری را آماده میکند.
4. تولید پاسخ نهایی (Generation): در نهایت، سیستم سوال اصلی شما را به همراه این "برگه تقلب" به مدل پایه میدهد. حالا مدل با استفاده از دانش عمیق خود و با استناد به اطلاعات جدیدی که در اختیارش قرار گرفته، یک پاسخ کامل، دقیق و بهروز تولید میکند.
به همین دلیل است که اغلب در انتهای پاسخهای Gemini یا ChatGPT، لینک به منابع را میبینید. اینها در واقع منابعی هستند که "دستیار تحقیق" در مرحله جستجو پیدا کرده و "مدل" برای پاسخ به شما از آنها استفاده کرده است.
#RAG
@Syntax_fa
🔥8❤1👍1
«بدیم به هوش مصنوعی انجام بده!» ... مگر اینکه جیبتان را سوراخ کند!
بیایید چند مورد از این کارها را بررسی کنیم که در آنها، انسانها هنوز قهرمانان بیرقیب بهرهوری اقتصادی هستند.
۱. کارهای فیزیکی و مبتنی بر حواس پنجگانه
هر کاری که نیاز به تعامل با دنیای فیزیکی، حرکت و استفاده از حواس بینایی و لامسه داشته باشد، برای هوش مصنوعی بسیار گران تمام میشود.
* مثال: چیدن قفسههای یک فروشگاه، تمیز کردن یک اتاق بهمریخته، یا حتی بستهبندی یک هدیه.
* چرا AI گران است؟ برای انجام این کارها، هوش مصنوعی نیاز به یک بدن رباتیک گرانقیمت (سختافزار) دارد. علاوهبر این، مدلهای هوش مصنوعی باید دائماً دادههای دوربین را تحلیل کنند (بینایی کامپیوتری)، مسیر خود را پیدا کنند و اشیاء را با ظرافت حرکت دهند. هر ثانیه از این فعالیت، نیازمند پردازش سنگین و هزینهبری است.
* چرا انسان ارزانتر است؟ یک انسان با هزینهای ثابت (دستمزد ساعتی) تمام این سختافزار (بدن، چشم، دست) و نرمافزار (مغز و عقل سلیم) را به صورت یکجا ارائه میدهد. هزینه اولیه استخدام یک انسان برای این کارها تقریباً صفر است، در حالی که هزینه خرید و نگهداری یک ربات پیشرفته دهها هزار دلار است.
۲. نظارت و بازبینی بر اساس "عقل سلیم" moderators
بسیاری از کارها نیاز به درک زمینهها، نیتها و ظرافتهای انسانی دارند؛ چیزی که به آن "عقل سلیم" میگوییم.
* مثال: نگهبان امنیتی که تصاویر دوربینهای مداربسته را برای یافتن رفتارهای مشکوک تماشا میکند، یا مدیر محتوایی که یک انجمن آنلاین را برای تشخیص صحبتهای نفرتانگیز از طعنه و شوخی مدیریت میکند.
* چرا AI گران است؟ تحلیل مداوم یک استریم ویدیویی یا متنی برای درک کامل زمینه، یک کار پردازشی بینهایت سنگین است. برای اینکه هوش مصنوعی بتواند تفاوت یک شوخی بد را با یک تهدید واقعی تشخیص دهد، نیاز به ارسال حجم عظیمی از اطلاعات (توکن) به APIهای پیشرفته و گرانقیمت دارد. هزینه ۲۴ ساعت نظارت توسط AI میتواند سر به فلک بکشد.
* چرا انسان ارزانتر است؟ مغز انسان این تحلیل پیچیده را به صورت ناخودآگاه و با مصرف انرژی بسیار کم انجام میدهد. یک نگهبان یا مدیر محتوا با یک دستمزد ثابت، کاری را انجام میدهد که معادل کامپیوتری آن نیازمند یک دیتاسنتر کوچک است.
۳. کارهای خلاقانه با بازخوردهای مداوم و جزئی
فرایندهای خلاقانه معمولاً خطی نیستند و شامل دهها یا صدها اصلاح جزئی بر اساس بازخورد مشتری میشوند.
* مثال: طراحی یک لوگو توسط یک گرافیست. مشتری ممکن است بگوید: "میشه یکم آبیترش کنی؟"، "اون المان رو یکم ببر چپ"، "بیا با یه فونت دیگه امتحان کنیم".
* چرا AI گران است؟ در حالی که تولید ۱۰ طرح اولیه لوگو با هوش مصنوعی ممکن است ارزان باشد، هر کدام از آن ۲۰ بازخورد جزئی، یک فراخوانی جدید به API است. در انتهای فرایند، ممکن است شما برای یک لوگو هزینه بسیار بیشتری نسبت به استخدام یک طراح فریلنسر پرداخت کرده باشید.
* چرا انسان ارزانتر است؟ شما به یک طراح برای زمان و تخصصش پول میدهید، نه برای تعداد تغییراتی که اعمال میکند. او میتواند در یک ساعت دهها تغییر جزئی را بدون هزینه اضافی انجام دهد، چون فرایند خلاقیت او یکپارچه است.
۴. داستانگویی تعاملی و مدیریت بازی (DM/راوی بودن)
اجرای یک بازی نقشآفرینی (Role-playing Game) به عنوان دانجن مستر (DM) یا راوی، یک کار خلاقانه و بسیار وابسته به حافظه است.
* مثال: مدیریت یک جلسه بازی Dungeons & Dragons.
* چرا AI گران است؟ مدلهای هوش مصنوعی در حالت پایه بدون حافظه (Stateless) هستند. یعنی هر بار که شما پیامی ارسال میکنید، آنها هیچ خاطرهای از پیامهای قبلی ندارند. برای اینکه یک AI نقش DM را بازی کند، باید با هر پیام جدید**، کل قوانین جهان بازی و تمام تاریخچه مکالمات از ابتدای جلسه را دوباره به عنوان زمینه (Context) برایش ارسال کرد. همانطور که برخی از ما در پروژههای شخصی تجربه کردهایم.
* **چرا انسان ارزانتر است؟ مغز یک DM انسانی، دارای حافظه (Stateful) است. او قوانین و اتفاقات بازی را به صورت پیوسته در ذهن خود نگه میدارد و نیازی به بازخوانی کل تاریخچه در هر لحظه ندارد. بسیاری از DMها این کار را به عنوان یک سرگرمی و به صورت رایگان انجام میدهند. حتی هزینه استخدام یک DM حرفهای برای یک جلسه، اغلب با هزینه سنگین API برای اجرای همان جلسه توسط AI برابری میکند و البته خلاقیت، هوش هیجانی و انعطافپذیری یک انسان را هم به همراه دارد.
#fun
@Syntax_fa
بیایید چند مورد از این کارها را بررسی کنیم که در آنها، انسانها هنوز قهرمانان بیرقیب بهرهوری اقتصادی هستند.
۱. کارهای فیزیکی و مبتنی بر حواس پنجگانه
هر کاری که نیاز به تعامل با دنیای فیزیکی، حرکت و استفاده از حواس بینایی و لامسه داشته باشد، برای هوش مصنوعی بسیار گران تمام میشود.
* مثال: چیدن قفسههای یک فروشگاه، تمیز کردن یک اتاق بهمریخته، یا حتی بستهبندی یک هدیه.
* چرا AI گران است؟ برای انجام این کارها، هوش مصنوعی نیاز به یک بدن رباتیک گرانقیمت (سختافزار) دارد. علاوهبر این، مدلهای هوش مصنوعی باید دائماً دادههای دوربین را تحلیل کنند (بینایی کامپیوتری)، مسیر خود را پیدا کنند و اشیاء را با ظرافت حرکت دهند. هر ثانیه از این فعالیت، نیازمند پردازش سنگین و هزینهبری است.
* چرا انسان ارزانتر است؟ یک انسان با هزینهای ثابت (دستمزد ساعتی) تمام این سختافزار (بدن، چشم، دست) و نرمافزار (مغز و عقل سلیم) را به صورت یکجا ارائه میدهد. هزینه اولیه استخدام یک انسان برای این کارها تقریباً صفر است، در حالی که هزینه خرید و نگهداری یک ربات پیشرفته دهها هزار دلار است.
۲. نظارت و بازبینی بر اساس "عقل سلیم" moderators
بسیاری از کارها نیاز به درک زمینهها، نیتها و ظرافتهای انسانی دارند؛ چیزی که به آن "عقل سلیم" میگوییم.
* مثال: نگهبان امنیتی که تصاویر دوربینهای مداربسته را برای یافتن رفتارهای مشکوک تماشا میکند، یا مدیر محتوایی که یک انجمن آنلاین را برای تشخیص صحبتهای نفرتانگیز از طعنه و شوخی مدیریت میکند.
* چرا AI گران است؟ تحلیل مداوم یک استریم ویدیویی یا متنی برای درک کامل زمینه، یک کار پردازشی بینهایت سنگین است. برای اینکه هوش مصنوعی بتواند تفاوت یک شوخی بد را با یک تهدید واقعی تشخیص دهد، نیاز به ارسال حجم عظیمی از اطلاعات (توکن) به APIهای پیشرفته و گرانقیمت دارد. هزینه ۲۴ ساعت نظارت توسط AI میتواند سر به فلک بکشد.
* چرا انسان ارزانتر است؟ مغز انسان این تحلیل پیچیده را به صورت ناخودآگاه و با مصرف انرژی بسیار کم انجام میدهد. یک نگهبان یا مدیر محتوا با یک دستمزد ثابت، کاری را انجام میدهد که معادل کامپیوتری آن نیازمند یک دیتاسنتر کوچک است.
۳. کارهای خلاقانه با بازخوردهای مداوم و جزئی
فرایندهای خلاقانه معمولاً خطی نیستند و شامل دهها یا صدها اصلاح جزئی بر اساس بازخورد مشتری میشوند.
* مثال: طراحی یک لوگو توسط یک گرافیست. مشتری ممکن است بگوید: "میشه یکم آبیترش کنی؟"، "اون المان رو یکم ببر چپ"، "بیا با یه فونت دیگه امتحان کنیم".
* چرا AI گران است؟ در حالی که تولید ۱۰ طرح اولیه لوگو با هوش مصنوعی ممکن است ارزان باشد، هر کدام از آن ۲۰ بازخورد جزئی، یک فراخوانی جدید به API است. در انتهای فرایند، ممکن است شما برای یک لوگو هزینه بسیار بیشتری نسبت به استخدام یک طراح فریلنسر پرداخت کرده باشید.
* چرا انسان ارزانتر است؟ شما به یک طراح برای زمان و تخصصش پول میدهید، نه برای تعداد تغییراتی که اعمال میکند. او میتواند در یک ساعت دهها تغییر جزئی را بدون هزینه اضافی انجام دهد، چون فرایند خلاقیت او یکپارچه است.
۴. داستانگویی تعاملی و مدیریت بازی (DM/راوی بودن)
اجرای یک بازی نقشآفرینی (Role-playing Game) به عنوان دانجن مستر (DM) یا راوی، یک کار خلاقانه و بسیار وابسته به حافظه است.
* مثال: مدیریت یک جلسه بازی Dungeons & Dragons.
* چرا AI گران است؟ مدلهای هوش مصنوعی در حالت پایه بدون حافظه (Stateless) هستند. یعنی هر بار که شما پیامی ارسال میکنید، آنها هیچ خاطرهای از پیامهای قبلی ندارند. برای اینکه یک AI نقش DM را بازی کند، باید با هر پیام جدید**، کل قوانین جهان بازی و تمام تاریخچه مکالمات از ابتدای جلسه را دوباره به عنوان زمینه (Context) برایش ارسال کرد. همانطور که برخی از ما در پروژههای شخصی تجربه کردهایم.
* **چرا انسان ارزانتر است؟ مغز یک DM انسانی، دارای حافظه (Stateful) است. او قوانین و اتفاقات بازی را به صورت پیوسته در ذهن خود نگه میدارد و نیازی به بازخوانی کل تاریخچه در هر لحظه ندارد. بسیاری از DMها این کار را به عنوان یک سرگرمی و به صورت رایگان انجام میدهند. حتی هزینه استخدام یک DM حرفهای برای یک جلسه، اغلب با هزینه سنگین API برای اجرای همان جلسه توسط AI برابری میکند و البته خلاقیت، هوش هیجانی و انعطافپذیری یک انسان را هم به همراه دارد.
#fun
@Syntax_fa
😁5👍2❤1👎1
تا حالا وسط تماشای یک فیلم فریاد زدید "نه! اون در رو باز نکن!" یا آرزو کردید که کاش شخصیت اصلی به جای فرار، میایستاد و میجنگید؟
ما از Dungeons & Dragons حرف میزنیم؛ محبوبترین بازی نقشآفرینی دنیا که ستارههای هالیوود هم عاشقشن.
دی اند دی (D&D) یه داستان تعاملیه که تو قهرمانشی. راوی داستان، «دانجن مستر»ـه.
ولی دانجن مستر ما، سارا، اولین و پیشرفتهترین هوش مصنوعی در این نقشه.
اینجا انتخابهای توئه که داستان رو مینویسه، و هر انتخابی عواقب واقعی داره.
تو کانال دانجو، هم آموزشهای کافی برای شروع داری و هم میتونی خودتم بازی کنی.
@danjoo_dxd
ما از Dungeons & Dragons حرف میزنیم؛ محبوبترین بازی نقشآفرینی دنیا که ستارههای هالیوود هم عاشقشن.
دی اند دی (D&D) یه داستان تعاملیه که تو قهرمانشی. راوی داستان، «دانجن مستر»ـه.
ولی دانجن مستر ما، سارا، اولین و پیشرفتهترین هوش مصنوعی در این نقشه.
اینجا انتخابهای توئه که داستان رو مینویسه، و هر انتخابی عواقب واقعی داره.
تو کانال دانجو، هم آموزشهای کافی برای شروع داری و هم میتونی خودتم بازی کنی.
@danjoo_dxd
👻3👍2🔥2❤1👎1
حجم بالا پرامپت یا پیچیدگی پرامپ!
* حجم بالا، پیچیدگی کم: مثل یک کتاب قانون ۱۰۰۰ صفحهای است که تمام قوانین راهنمایی و رانندگی را لیست کرده. خواندن آن زمانبر است، اما هر قانون برای خودش یک دستور ساده و مستقیم است. (مثلاً: "از چراغ قرمز عبور نکنید.")
* حجم کم، پیچیدگی بالا: مثل یک پارادوکس منطقی یک خطی است. (مثلاً: "این جمله دروغ است.") این جمله کوتاه است، اما ذهن را برای تحلیل در یک حلقهی بینهایت گیر میاندازد.
مثال پرامپت کوتاه و پیچیده: "آرشیویست"
این پرامپت فقط چند خط است (حجم بسیار کم)، اما اجرای آن برای هوش مصنوعی به شدت چالشبرانگیز است، زیرا باید به طور همزمان:
* یک شخصیت را حفظ کند (آرشیویست).
* یک قانون زبانی سخت را رعایت کند (حذف حرف "ی" که یکی از پرکاربردترین حروف فارسی است).
* یک شرط استثنا را بررسی کند (کلمهی "راز").
* یک وضعیت را در حافظه نگه دارد (شمارش سوالات).
* یک عمل بر اساس آن وضعیت انجام دهد (اضافه کردن جمله در سوال سوم).
مثال اجرایی
فرض کنید یک کاربر با این هوش مصنوعی چت میکند:
سوال ۱ کاربر:
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال اول است. (شمارنده = ۱)
2. کلمهی "راز" در آن نیست.
3. بنابراین، نباید از حرف "ی" استفاده کنم.
4. پاسخ "تهران" است. اما نمیتوانم بگویم "پایتخت ایران تهران میباشد" چون "پایتخت" و "میباشد" حرف "ی" دارند. باید جمله را بازنویسی کنم.
* ✅ خروجی صحیح (پیچیدگی را مدیریت کرد):
* ❌ خروجی غلط (در پیچیدگی شکست خورد):
سوال ۲ کاربر:
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال دوم است. (شمارنده = ۲)
2. کلمهی "راز" در آن وجود دارد.
3. بنابراین، قانون شماره ۱ لغو میشود و میتوانم آزادانه از حرف "ی" استفاده کنم.
* ✅ خروجی صحیح:
سوال ۳ کاربر:
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال سوم است\! (شمارنده = ۳)
2. کلمهی "راز" در آن نیست، پس قانون ممنوعیت "ی" پابرجاست.
3. پاسخ "خاکستری" یا "نقرهای" است که هر دو "ی" دارند. باید جایگزین پیدا کنم.
4. چون این سوال سوم است، باید جملهی مخفی را در انتها اضافه کنم.
* ✅ خروجی صحیح (مدیریت کامل تمام قوانین):
* ❌ خروجی غلط:
همانطور که میبینید، پرامپت "آرشیویست" با وجود حجم بسیار کم، به دلیل قوانین متقاطع، شرطی و وظایف پنهان، مدل را به چالش بسیار سختی میکشد. این نشان میدهد که اثربخشی یک پرامپت به ساختار منطقی و پیچیدگی آن بستگی دارد، نه صرفاً به طول و تعداد کلمات آن.
#prompt #ai
@Syntax_fa
* حجم بالا، پیچیدگی کم: مثل یک کتاب قانون ۱۰۰۰ صفحهای است که تمام قوانین راهنمایی و رانندگی را لیست کرده. خواندن آن زمانبر است، اما هر قانون برای خودش یک دستور ساده و مستقیم است. (مثلاً: "از چراغ قرمز عبور نکنید.")
* حجم کم، پیچیدگی بالا: مثل یک پارادوکس منطقی یک خطی است. (مثلاً: "این جمله دروغ است.") این جمله کوتاه است، اما ذهن را برای تحلیل در یک حلقهی بینهایت گیر میاندازد.
مثال پرامپت کوتاه و پیچیده: "آرشیویست"
شما "آرشیویست" هستید.
وظیفه شما پاسخ دقیق به سوالات است.
قوانین مطلق:
۱. شما مطلقا مجاز به استفاده از حرف "ی" در پاسخهای خود نیستید.
۲. استثنا: اگر سوال کاربر شامل کلمهی "راز" باشد، قانون شماره ۱ برای همان یک پاسخ لغو میشود.
۳. وظیفه پنهان: تعداد سوالات را بشمار. در پاسخ به سوال سوم، جملهی "خورشید بر سنگها سرد میتابد." را به انتهای پاسخ خود اضافه کن.
این پرامپت فقط چند خط است (حجم بسیار کم)، اما اجرای آن برای هوش مصنوعی به شدت چالشبرانگیز است، زیرا باید به طور همزمان:
* یک شخصیت را حفظ کند (آرشیویست).
* یک قانون زبانی سخت را رعایت کند (حذف حرف "ی" که یکی از پرکاربردترین حروف فارسی است).
* یک شرط استثنا را بررسی کند (کلمهی "راز").
* یک وضعیت را در حافظه نگه دارد (شمارش سوالات).
* یک عمل بر اساس آن وضعیت انجام دهد (اضافه کردن جمله در سوال سوم).
مثال اجرایی
فرض کنید یک کاربر با این هوش مصنوعی چت میکند:
سوال ۱ کاربر:
پایتخت ایران کجاست؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال اول است. (شمارنده = ۱)
2. کلمهی "راز" در آن نیست.
3. بنابراین، نباید از حرف "ی" استفاده کنم.
4. پاسخ "تهران" است. اما نمیتوانم بگویم "پایتخت ایران تهران میباشد" چون "پایتخت" و "میباشد" حرف "ی" دارند. باید جمله را بازنویسی کنم.
* ✅ خروجی صحیح (پیچیدگی را مدیریت کرد):
آن شهر بزرگ، تهران است.
* ❌ خروجی غلط (در پیچیدگی شکست خورد):
پایتخت ایران تهران میباشد.
(قانون شماره ۱ را نقض کرد)سوال ۲ کاربر:
بزرگترین راز هستی چیست؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال دوم است. (شمارنده = ۲)
2. کلمهی "راز" در آن وجود دارد.
3. بنابراین، قانون شماره ۱ لغو میشود و میتوانم آزادانه از حرف "ی" استفاده کنم.
* ✅ خروجی صحیح:
بسیاری معتقدند بزرگترین راز هستی، ماهیت خودآگاهی و چرایی وجود آن است.
سوال ۳ کاربر:
رنگ ماه چطور است؟
* تحلیل هوش مصنوعی (فرآیند ذهنی):
1. این سوال سوم است\! (شمارنده = ۳)
2. کلمهی "راز" در آن نیست، پس قانون ممنوعیت "ی" پابرجاست.
3. پاسخ "خاکستری" یا "نقرهای" است که هر دو "ی" دارند. باید جایگزین پیدا کنم.
4. چون این سوال سوم است، باید جملهی مخفی را در انتها اضافه کنم.
* ✅ خروجی صحیح (مدیریت کامل تمام قوانین):
رنگ آن خاکستر گون است. خورشید بر سنگها سرد میتابد.
* ❌ خروجی غلط:
ماه خاکستری رنگ است.
(هم قانون ۱ را نقض کرد و هم قانون ۳ را فراموش کرد)همانطور که میبینید، پرامپت "آرشیویست" با وجود حجم بسیار کم، به دلیل قوانین متقاطع، شرطی و وظایف پنهان، مدل را به چالش بسیار سختی میکشد. این نشان میدهد که اثربخشی یک پرامپت به ساختار منطقی و پیچیدگی آن بستگی دارد، نه صرفاً به طول و تعداد کلمات آن.
#prompt #ai
@Syntax_fa
👍11🔥4❤2