اگر میخواهید در بحث طراحی سیستم (System Design) به شدت قوی شوید، این ۸ پروتکل شبکه را عمیقاً یاد بگیرید:
به نظر شما چه پروتکلهای کلیدی دیگری باید به این لیست اضافه شوند؟ مثلاً بحثهای مربوط به WebSocket برای ارتباطات دوطرفه، یا gRPC/HTTP2 برای میکروسرویسها؟
ء1️⃣ HTTPS (Hypertext Transfer Protocol Secure)
◽️ کاربرد: ارتباطات امن در بستر اینترنت.
🔹 ترافیک HTTP را با استفاده از TLS رمزنگاری میکند؛ اما به مدیریت گواهیهای TLS و فرآیند دستتکانی (Handshake) اولیه نیاز دارد.
ء2️⃣ UDP (User Datagram Protocol)
◽️ کاربرد: بازیهای آنلاین، ویدیوکال و استریمهای زنده.
🔹 بستهها را بدون منتظر ماندن برای تاییدیه (ACK) و با حداکثر سرعت میفرستد؛ اما ریسک گم شدن یا جابهجا رسیدن دادهها را دارد.
ء3️⃣ TCP (Transmission Control Protocol)
◽️ کاربرد: وبسایتها، ایمیل و دانلود فایل.
🔹 یک اتصال پایدار ایجاد کرده و سلامت و ترتیب تحویل تکتک بستهها را تضمین میکند؛ اما تاخیر (Latency) و اورهد بالاتری دارد.
ء4️⃣ IP (Internet Protocol)
◽️ کاربرد: مسیریابی و ارسال بستههای داده در اینترنت.
🔹 آدرس مبدا و مقصد را به هر بسته اضافه میکند؛ سریع است اما خودش به تنهایی تحویل یا ترتیب درست بستهها را تضمین نمیکند.
ء5️⃣ SFTP (Secure File Transfer Protocol)
◽️ کاربرد: انتقال امن فایل بین سیستمها.
🔹 بر بستر SSH اجرا میشود و کل سشن را رمزنگاری میکند؛ اما با ابزارهای FTP معمولی سازگار نیست.
ء6️⃣ SMTP (Simple Mail Transfer Protocol)
◽️ کاربرد: ارسال ایمیل بین میلسرورها.
🔹 وظیفه هدایت و انتقال ایمیل را دارد؛ اما کارهایی مثل مدیریت و دسترسی به اینباکس (مثل IMAP/POP3) را انجام نمیدهد.
ء7️⃣ SSH (Secure Shell)
◽️ کاربرد: دسترسی و مدیریت امن سرورهای راه دور.
🔹 یک کانال رمزنگاریشده با استفاده از کلیدها یا پسوردها باز میکند؛ اما نیاز به مدیریت دقیق و امن کلیدها (Key Management) دارد.
ء8️⃣ DNS (Domain Name System)
◽️ کاربرد: نگاشت نام دامنهها به آدرسهای IP.
🔹 با کوئری زدن به سرورهای DNS، اینترنت را برای انسانها قابلفهم میکند؛ اما به اولین درخواست کمی تاخیر (Latency) اضافه میکند.
به نظر شما چه پروتکلهای کلیدی دیگری باید به این لیست اضافه شوند؟ مثلاً بحثهای مربوط به WebSocket برای ارتباطات دوطرفه، یا gRPC/HTTP2 برای میکروسرویسها؟
❤3🔥1
انتخاب بین Claude Code یا Codex، صورتمسئله اشتباهی است؛ شما در واقع میتوانید از هر دو استفاده کنید.
به جای آن، این ۴ سوال کلیدی را از خود بپرسید. هر دو ابزار ریپازیتوری شما را میخوانند، فایلها را ادیت میکنند و دستورات را مینویسند؛ اما تنظیمات پیشفرض و معماری آنهاست که مرزها را مشخص میکند:
🎯 خلاصه سناریوهای انتخاب:
← اگر در ترمینال زندگی میکنید: Claude Code
← اگر به محیطها و پلتفرمهای بیشتری نیاز دارید: Codex
← اگر قابلیت Pairing و اجرای همزمان در بکگراند را میخواهید: هر دو!
ترکیب پیشنهادی: استفاده همزمان از هر دو ابزار؛ Claude Code سیستم را میسازد و Codex آن را به چالش میکشد. با افزونه رسمی Codex در کلود کد، به راحتی با دستورات زیر میتوانید آن را فعال کنید:
به جای آن، این ۴ سوال کلیدی را از خود بپرسید. هر دو ابزار ریپازیتوری شما را میخوانند، فایلها را ادیت میکنند و دستورات را مینویسند؛ اما تنظیمات پیشفرض و معماری آنهاست که مرزها را مشخص میکند:
1️⃣ محیط کاری شما کجاست؟
◽️ ابزار Claude Code کاملاً روی ترمینال متمرکز است.
◽️ ابزار Codex به صورت پیشفرض بین اپلیکیشن، IDE، کلود و گیتهاب در جریان است.
🚀 محیطی را انتخاب کنید که همین حالا هم بیشتر وقت خود را در آن میگذرانید.
2️⃣ تقسیم کارها به چه شکل انجام میشود؟
◽️ ابزار Claude Code کارها را در یک سشن واحد به سابایجنتها واگذار میکند (ساختار تو در تو).
◽️ ابزار Codex تسکها را به تِردها میفرستد تا شما بر آنها نظارت کنید (ساختار موازی و خطی).
3️⃣ قوانین جریان کاری را کجا کدگذاری میکنید؟
◽️ ابزار Claude Code به صورت پیشفرض فایل CLAUDE.md را میخواند.
◽️ ابزار Codex به صورت پیشفرض فایل AGENTS.md را ملاک قرار میدهد.
🔌 البته هر دو پروتکل MCP را کاملاً پشتیبانی میکنند. قوانینی را بنویسید که تیم شما توانایی نگهداریاش را داشته باشد.
4️⃣ تسکهای طولانیمدت کجا اجرا میشوند؟
◽️ ابزار Claude Code به صورت Headless در شل و CI شما اجرا میشود.
◽️ ابزار Codex بیشتر به جابهای کلود و صفهای کامنت و بررسی (Review Queue) متکی است.
💻 کارهای سنگین و طولانی را به CI یا کلود بسپارید، نه لپتاپ خودتان.
🎯 خلاصه سناریوهای انتخاب:
← اگر در ترمینال زندگی میکنید: Claude Code
← اگر به محیطها و پلتفرمهای بیشتری نیاز دارید: Codex
← اگر قابلیت Pairing و اجرای همزمان در بکگراند را میخواهید: هر دو!
ترکیب پیشنهادی: استفاده همزمان از هر دو ابزار؛ Claude Code سیستم را میسازد و Codex آن را به چالش میکشد. با افزونه رسمی Codex در کلود کد، به راحتی با دستورات زیر میتوانید آن را فعال کنید:
/plugin marketplace add openai/codex-plugin-cc/plugin install codex@openai-codex👍2❤1
همه دارند نحوه کار با هوش مصنوعی را یاد میگیرند، اما مزیت رقابتی واقعی جای دیگری است!
مهارتهای فنی کار با AI هر روز ارزانتر و عمومیتر میشوند، اما قدرت تحلیل و تصمیمگیری درست (Good Judgment) روزبهروز باارزشتر میشود.
وقتی مجمع جهانی اقتصاد از کارفرمایان پرسید چه مهارتهایی در این دهه بیشترین اهمیت را دارند، هوش مصنوعی و Big Data در صدر قرار گرفتند؛ اما مهارتهای بعدی را ببینید، همهشان کاملاً انسانی هستند:
◽️ تفکر تحلیلی و خلاقانه
◽️ حل مسئله و تفکر سیستمی
◽️ رهبری و خودآگاهی
◽️ تابآوری و کنجکاوی
هوش مصنوعی فقط یک ابزار است و ابزارها به تنهایی نتیجه نمیسازند. مزیت اصلی شما داشتن پیشرفتهترین مدل AI نیست، بلکه توانایی شما در این سه بخش است:
1️⃣ اجرای سریعتر و باکیفیتتر (Execution)
2️⃣ تصمیمگیری با شفافیت کامل در شرایط مبهم
3️⃣ هدایت تیم و سیستم در میان تغییرات مداوم
ابزارهای هوش مصنوعی هر روز قدرتمندتر میشوند، اما لایه اصلی که تعیین میکند خروجی نهایی یک سیستم چه باشد، هنوز هم لایه تصمیمگیری انسانی است.
مهارتهای فنی کار با AI هر روز ارزانتر و عمومیتر میشوند، اما قدرت تحلیل و تصمیمگیری درست (Good Judgment) روزبهروز باارزشتر میشود.
وقتی مجمع جهانی اقتصاد از کارفرمایان پرسید چه مهارتهایی در این دهه بیشترین اهمیت را دارند، هوش مصنوعی و Big Data در صدر قرار گرفتند؛ اما مهارتهای بعدی را ببینید، همهشان کاملاً انسانی هستند:
◽️ تفکر تحلیلی و خلاقانه
◽️ حل مسئله و تفکر سیستمی
◽️ رهبری و خودآگاهی
◽️ تابآوری و کنجکاوی
هوش مصنوعی فقط یک ابزار است و ابزارها به تنهایی نتیجه نمیسازند. مزیت اصلی شما داشتن پیشرفتهترین مدل AI نیست، بلکه توانایی شما در این سه بخش است:
1️⃣ اجرای سریعتر و باکیفیتتر (Execution)
2️⃣ تصمیمگیری با شفافیت کامل در شرایط مبهم
3️⃣ هدایت تیم و سیستم در میان تغییرات مداوم
ابزارهای هوش مصنوعی هر روز قدرتمندتر میشوند، اما لایه اصلی که تعیین میکند خروجی نهایی یک سیستم چه باشد، هنوز هم لایه تصمیمگیری انسانی است.
❤6❤🔥1
یک دوره کامل و ۴۳۵ درسِ مهندسی هوش مصنوعی روی گیتهاب رایگان شد!
تفاوت اصلی این دوره با بقیه دورهها در یک قانون ساده است: هر الگوریتم قبل از ایمپورت کردن هرگونه فریمورکی، ابتدا از روی ریاضیات پایه پیادهسازی میشود. شما مفاهیمی مثل Backpropagation، Tokenizer، Attention Mechanism و Agent Loop را کاملاً از صفر کد میزنید؛ بنابراین وقتی سراغ PyTorch میروید، دقیقاً میدانید زیر لایه نرمافزار چه خبر است.
ساختار ۵ مرحلهای هر درس:
1️⃣ خواندن مسئله
2️⃣ استخراج و حل فرمولهای ریاضی
3️⃣ کدنویسی از صفر
4️⃣ اجرای تستها
5️⃣ ذخیره خروجی کاربردی
در انتهای مسیر، شما فقط «دانش تئوری» ندارید؛ بلکه خروجیهای قابل دیپلوی و واقعی ساختهاید: از فایلهای SKILL.md و تعاریف ایجنتها گرفته تا سرورهای MCP که خودتان از صفر پیاده کردهاید.
این دوره با ۴ زبان جلو میرود:
◽️ پایتون برای پایپلاینهای یادگیری ماشین
◽️ تایپاسکریپت برای ابزارهای ایجنتی
◽️ راست (Rust) برای بخشهای حساس به پرفورمنس
◽️ جولیا (Julia) برای محاسبات عددی
پوشش مباحث هم کاملاً جامع است؛ از جبر خطی شروع میشود و تا سیستمهای ایجنتی خودمختار (Autonomous Swarms)، معماری Multi-Agent، زیرساخت پروداکشن و ایمنی هوش مصنوعی جلو میرود.
https://github.com/rohitg00/ai-engineering-from-scratch
تفاوت اصلی این دوره با بقیه دورهها در یک قانون ساده است: هر الگوریتم قبل از ایمپورت کردن هرگونه فریمورکی، ابتدا از روی ریاضیات پایه پیادهسازی میشود. شما مفاهیمی مثل Backpropagation، Tokenizer، Attention Mechanism و Agent Loop را کاملاً از صفر کد میزنید؛ بنابراین وقتی سراغ PyTorch میروید، دقیقاً میدانید زیر لایه نرمافزار چه خبر است.
ساختار ۵ مرحلهای هر درس:
1️⃣ خواندن مسئله
2️⃣ استخراج و حل فرمولهای ریاضی
3️⃣ کدنویسی از صفر
4️⃣ اجرای تستها
5️⃣ ذخیره خروجی کاربردی
در انتهای مسیر، شما فقط «دانش تئوری» ندارید؛ بلکه خروجیهای قابل دیپلوی و واقعی ساختهاید: از فایلهای SKILL.md و تعاریف ایجنتها گرفته تا سرورهای MCP که خودتان از صفر پیاده کردهاید.
این دوره با ۴ زبان جلو میرود:
◽️ پایتون برای پایپلاینهای یادگیری ماشین
◽️ تایپاسکریپت برای ابزارهای ایجنتی
◽️ راست (Rust) برای بخشهای حساس به پرفورمنس
◽️ جولیا (Julia) برای محاسبات عددی
پوشش مباحث هم کاملاً جامع است؛ از جبر خطی شروع میشود و تا سیستمهای ایجنتی خودمختار (Autonomous Swarms)، معماری Multi-Agent، زیرساخت پروداکشن و ایمنی هوش مصنوعی جلو میرود.
https://github.com/rohitg00/ai-engineering-from-scratch
❤3🔥1🆒1
مسیر شغلیتان شلوغ و پر از تغییر است؟
این متن را بخوانید:
وقتی به فید لینکدین نگاه میکنیم، مسیر شغلی همه بینقص و مثل یک خط مستقیم به سمت موفقیت به نظر میرسد.
اما همه ما خیلی چیزها را پنهان میکنیم:
- پروژههایی که شکست خوردند
- تغییر مسیرهای ناگهانی
- لحظاتی که با خودمان میگوییم «پیش خودت چه فکری میکردی؟»
واقعیت این است که همه ما در حال یادگیری و آزمون و خطا هستیم و این اتفاق کاملاً طبیعی است. حتی پذیرش این موضوع یک مزیت محسوب میشود؛ چون جذابترین فرصتها دقیقاً از جاهایی غیرمنتظره پیدا میشوند و مهارتهایی که امروز غیرمرتبط به نظر میرسند، ممکن است فردا برگ برنده شما باشند.
با این حال هنوز هم:
- شکستهایمان را پنهان میکنیم.
- عنوانهای شغلی قدیمی را پاک میکنیم.
- وانمود میکنیم هر تغییری کاملاً استراتژیک بوده است.
کافی است! این نکات را یادمان باشد:
- هر تغییر مسیری، ابزار جدیدی به جعبهابزار مهندسی و کاری شما اضافه میکند.
- هر شکست، تابآوری شما را بالاتر میبرد.
- هر پیچیدگی در مسیر، یادگیری عمیقتری به همراه دارد.
افراد موفق، کارهایشان را بینقص انجام ندادهاند؛ بلکه از هر پیچوخمی درس گرفتهاند، موقع شک بقیه ساختهاند و نقاطی را به هم وصل کردهاند که دیگران ندیدهاند.
مسیر شغلی غیرمستقیم و شلوغ شما یک Bug نیست، دقیقاً یک Feature است!
این متن را بخوانید:
وقتی به فید لینکدین نگاه میکنیم، مسیر شغلی همه بینقص و مثل یک خط مستقیم به سمت موفقیت به نظر میرسد.
اما همه ما خیلی چیزها را پنهان میکنیم:
- پروژههایی که شکست خوردند
- تغییر مسیرهای ناگهانی
- لحظاتی که با خودمان میگوییم «پیش خودت چه فکری میکردی؟»
واقعیت این است که همه ما در حال یادگیری و آزمون و خطا هستیم و این اتفاق کاملاً طبیعی است. حتی پذیرش این موضوع یک مزیت محسوب میشود؛ چون جذابترین فرصتها دقیقاً از جاهایی غیرمنتظره پیدا میشوند و مهارتهایی که امروز غیرمرتبط به نظر میرسند، ممکن است فردا برگ برنده شما باشند.
با این حال هنوز هم:
- شکستهایمان را پنهان میکنیم.
- عنوانهای شغلی قدیمی را پاک میکنیم.
- وانمود میکنیم هر تغییری کاملاً استراتژیک بوده است.
کافی است! این نکات را یادمان باشد:
- هر تغییر مسیری، ابزار جدیدی به جعبهابزار مهندسی و کاری شما اضافه میکند.
- هر شکست، تابآوری شما را بالاتر میبرد.
- هر پیچیدگی در مسیر، یادگیری عمیقتری به همراه دارد.
افراد موفق، کارهایشان را بینقص انجام ندادهاند؛ بلکه از هر پیچوخمی درس گرفتهاند، موقع شک بقیه ساختهاند و نقاطی را به هم وصل کردهاند که دیگران ندیدهاند.
مسیر شغلی غیرمستقیم و شلوغ شما یک Bug نیست، دقیقاً یک Feature است!
👍4🐳2
اگر میخواهید به یک مهندس نرمافزار همهچیتمام تبدیل شوید، خواندن این ۱۲ کتاب را حتماً در برنامه خود بگذارید:
ء1️⃣ The Pragmatic Programmer
↳ آموزش فرآیند و هسته اصلی توسعه نرمافزار و ذهنیت یک مهندس واقعی.
ء2️⃣ Designing Data-Intensive Applications
↳ مرجع اصلی درک سیستمهای توزیعشده (Distributed Systems) و معماری داده.
ء3️⃣ The Mythical Man-Month
↳ توصیههای کاربردی برای مدیریت پروژهها و تیمهای نرمافزاری بزرگ.
ء4️⃣ Refactoring
↳ تکنیکهای عملی برای بازنویسی ساختار کد و بهبود قابلیت نگهداری آن.
ء5️⃣ Software Architecture: The Hard Parts
↳ نحوه ارزیابی بدهبستانها (Trade-offs) و گرفتن بهترین تصمیمات معمارانه.
ء6️⃣ Working Effectively with Legacy Code
↳ استراتژیهای رام کردن و ریفکتور کردن کدهای قدیمی و پیچیده.
ء7️⃣ A Philosophy of Software Design
↳ فلسفه و دیدگاه عمیق برای کاهش پیچیدگی و نوشتن کدهای تمیز.
ء8️⃣ Clean Code
↳ اصول و تمرینهای پایهای برای نوشتن کدهای خوانا و قابل فهم.
ء9️⃣ Why Programs Fail
↳ آموزش روشهای سیستماتیک و اصولی برای دیباگ کردن برنامهها.
ء🔟 Never Split the Difference
↳ تاکتیکهای مذاکره از زبان مذاکرهکننده ارشد FBI (مهارت نرم حیاتی برای مهندسان ارشد).
ء1️⃣1️⃣ 7 Rules of Power
↳ درک نحوه جریان قدرت، نفوذ و مدیریت ارتباطات در سازمانها.
ء1️⃣2️⃣ On Writing Well
↳ تکنیکهای نوشتن متنهای شفاف و ساده (برای داکیومنتنویسی و ارتباطات متنی قوی).
❤🔥5🔥3
کتاب Prompt Engineering for LLMs
نویسندگان: John Berryman & Albert Ziegler
انتشارات: O'Reilly
این کتاب یک راهنمای کاربردی و مهندسی برای ساخت برنامههای واقعی با تمامی مدلهای زبانی بزرگ (مثل Claude، Gemini، Llama و GPT) است.
نویسندگان کتاب با تکیه بر تجربه خلق GitHub Copilot، یاد میدهند که چطور مدلهای زبانی را به لایهای قابل اتکا از معماری نرمافزار خود تبدیل کنید؛ لایهای که مسائل سیستم را بفهمد، ابزارها را فراخوانی کند و اکشنهای واقعی انجام دهد.
سطح: متوسط تا پیشرفته
زمان پیشنهادی: ۴ تا ۶ هفته
فایل PDF کتاب در پیام بعدی قرار گرفته است. نکات کلیدی و کاربردی این کتاب را بهزودی در کانال بررسی میکنیم.
نویسندگان: John Berryman & Albert Ziegler
انتشارات: O'Reilly
این کتاب یک راهنمای کاربردی و مهندسی برای ساخت برنامههای واقعی با تمامی مدلهای زبانی بزرگ (مثل Claude، Gemini، Llama و GPT) است.
نویسندگان کتاب با تکیه بر تجربه خلق GitHub Copilot، یاد میدهند که چطور مدلهای زبانی را به لایهای قابل اتکا از معماری نرمافزار خود تبدیل کنید؛ لایهای که مسائل سیستم را بفهمد، ابزارها را فراخوانی کند و اکشنهای واقعی انجام دهد.
سرفصلهای اصلی:
• نحوه کارکرد زیرکاپوت ترنسفورمرها و توکنسازی
• تکنیکهای چندنمونهای (Few-Shot) و زنجیره افکار (Chain-of-Thought)
• پیادهسازی معماری بازیابی اطلاعات (RAG)
• فراخوانی ابزارها (Tools) و ساخت ایجنتهای هوشمند
• ارزیابی و تست خروجی مدلها در محیط واقعی
سطح: متوسط تا پیشرفته
زمان پیشنهادی: ۴ تا ۶ هفته
فایل PDF کتاب در پیام بعدی قرار گرفته است. نکات کلیدی و کاربردی این کتاب را بهزودی در کانال بررسی میکنیم.
👍1🔥1👏1
John_Berryman_Albert_Ziegler_Prompt_Engineering_for_LLMs_The_Ar.pdf
12.1 MB
Prompt Engineering for LLMs
❤🔥5
چطور بدون بلد بودن زبان Rust، در ۴۰ دقیقه با هوش مصنوعی کد زدیم؟
تصور کنید میخواهید کدی بنویسید اما با زبان برنامهنویسی هدف هیچ آشنایی قبلی ندارید. جان بریمن یکی از نویسندگان کتاب این آزمایش را روی خودش انجام داد: او بدون هیچ تجربهای در زبان Rust، تصمیم گرفت تابعی بنویسد که اعداد بزرگ را به معادل متنیشان در زبان انگلیسی تبدیل کند (مثلاً تبدیل عدد ۱۰ به "ten").
او به جای خواندن آموزشهای طولانی Rust، فقط صورت مسئله را در قالب کامنت Docstring نوشت. دستیار هوش مصنوعی بلافاصله دست به کار شد؛ نهتنها ورودیها و انواع دادهها را مشخص کرد، بلکه ساختار برنامهنویسی مثل Vectorها و حلقه ها را در حین کار به او آموزش داد. چند دقیقه بعد، مدل به یکباره ۳۰ خط کد کاملاً سالم و قابل کامپایل تولید کرد! کاری که بدون هوش مصنوعی ساعتها زمان میبرد، در ۴۰ دقیقه به سرانجام رسید.
با وجود تمام قدرت شگفتانگیز این ابزارها، مدلهای زبانی بزرگ در بنیادیترین سطح خود فقط یک کار انجام میدهند: پیشبینی کلمه بعدی Next-Word Prediction.
چیزی به اسم تفکر انسانی یا درک عمیق در زیرکاپوت مدل وجود ندارد؛ مدل فقط احتمال کلمه بعدی را بر اساس متن قبلی حدس میزند—درست مثل نوار پیشنهادی بالای کیبورد گوشی، اما در ابعادی بسیار بزرگتر و پیچیدهتر!
مهندسی پرامپت دقیقاً یعنی هنر و علم ساختن متنی ورودی که مدل را هدایت کند تا دقیقترین و منطقیترین کلمات بعدی را تولید کند.
در پست بعدی بررسی میکنیم که مدلهای زبانی چطور از فرمولهای ساده به معماری ترنسفورمر رسیدند و چرا مدلهای قدیمی خیلی زود دچار فراموشی میشدند.
تصور کنید میخواهید کدی بنویسید اما با زبان برنامهنویسی هدف هیچ آشنایی قبلی ندارید. جان بریمن یکی از نویسندگان کتاب این آزمایش را روی خودش انجام داد: او بدون هیچ تجربهای در زبان Rust، تصمیم گرفت تابعی بنویسد که اعداد بزرگ را به معادل متنیشان در زبان انگلیسی تبدیل کند (مثلاً تبدیل عدد ۱۰ به "ten").
او به جای خواندن آموزشهای طولانی Rust، فقط صورت مسئله را در قالب کامنت Docstring نوشت. دستیار هوش مصنوعی بلافاصله دست به کار شد؛ نهتنها ورودیها و انواع دادهها را مشخص کرد، بلکه ساختار برنامهنویسی مثل Vectorها و حلقه ها را در حین کار به او آموزش داد. چند دقیقه بعد، مدل به یکباره ۳۰ خط کد کاملاً سالم و قابل کامپایل تولید کرد! کاری که بدون هوش مصنوعی ساعتها زمان میبرد، در ۴۰ دقیقه به سرانجام رسید.
آلبرت زیگلر همنویسنده کتاب و از مهندسان اصلی GitHub Copilot میگوید: ما همیشه فکر میکردیم ساخت دستیاری که کد کاملاً درست تولید کند حداقل ۵ سال با واقعیت فاصله دارد، تا اینکه اولین پیشنمایش OpenAI Codex را تست کردیم و فهمیدیم آینده زودتر از راه رسیده است.اما راز این جادو چیست؟
با وجود تمام قدرت شگفتانگیز این ابزارها، مدلهای زبانی بزرگ در بنیادیترین سطح خود فقط یک کار انجام میدهند: پیشبینی کلمه بعدی Next-Word Prediction.
چیزی به اسم تفکر انسانی یا درک عمیق در زیرکاپوت مدل وجود ندارد؛ مدل فقط احتمال کلمه بعدی را بر اساس متن قبلی حدس میزند—درست مثل نوار پیشنهادی بالای کیبورد گوشی، اما در ابعادی بسیار بزرگتر و پیچیدهتر!
مهندسی پرامپت دقیقاً یعنی هنر و علم ساختن متنی ورودی که مدل را هدایت کند تا دقیقترین و منطقیترین کلمات بعدی را تولید کند.
در پست بعدی بررسی میکنیم که مدلهای زبانی چطور از فرمولهای ساده به معماری ترنسفورمر رسیدند و چرا مدلهای قدیمی خیلی زود دچار فراموشی میشدند.
فصل اول، بخش اول
کتاب Prompt Engineering for LLMs
❤🔥3🔥3🍓1
چرا مدلهای قدیمی هوش مصنوعی وسط متن دچار فراموشی میشدند؟
برای درک اینکه هوش مصنوعی چطور به نقطه کنونی رسید، باید به قبل از عصر GPT برگردیم.
در سال ۲۰۱۴، قدرتمندترین مدلهای پردازش زبان بر پایه معماری seq2seq (مخفف Sequence to Sequence) کار میکردند که توسط گوگل معرفی شده بود. این مدلها از شبکههای عصبی بازگشتی RNN استفاده میکردند؛ یعنی متن را توکن به توکن میخواندند و وضعیت داخلی خود را بهروزرسانی میکردند.
کارکرد seq2seq از دو بخش اصلی تشکیل شده بود:
۱. انکودر (Encoder): ورودی را دریافت میکرد و خلاصهٔ آن را در متغیری به نام Thought Vector (بردار فکر) قرار میداد. ۲. دکودر (Decoder): با استفاده از این بردار، خروجی یا ترجمه را تولید میکرد.
نقطه ضعف بزرگ: گلوگاه اطلاعاتی (Information Bottleneck)
مشکل اصلی این بود که ظرفیت Thought Vector ثابت و محدود بود. وقتی طول متن ورودی زیاد میشد، انکودر مجبور بود تمام اطلاعات را در یک ظرف کوچک فشرده کند؛ در نتیجه اطلاعات بخشهای ابتدایی متن فراموش میشدند.
در پست بعدی بررسی میکنیم چطور OpenAI با دستکاری معماری ترنسفورمر، سری GPT را خلق کرد و چرا نسخه GPT-2 باعث ترس خود پژوهشگران شد.
برای درک اینکه هوش مصنوعی چطور به نقطه کنونی رسید، باید به قبل از عصر GPT برگردیم.
در سال ۲۰۱۴، قدرتمندترین مدلهای پردازش زبان بر پایه معماری seq2seq (مخفف Sequence to Sequence) کار میکردند که توسط گوگل معرفی شده بود. این مدلها از شبکههای عصبی بازگشتی RNN استفاده میکردند؛ یعنی متن را توکن به توکن میخواندند و وضعیت داخلی خود را بهروزرسانی میکردند.
کارکرد seq2seq از دو بخش اصلی تشکیل شده بود:
۱. انکودر (Encoder): ورودی را دریافت میکرد و خلاصهٔ آن را در متغیری به نام Thought Vector (بردار فکر) قرار میداد. ۲. دکودر (Decoder): با استفاده از این بردار، خروجی یا ترجمه را تولید میکرد.
نقطه ضعف بزرگ: گلوگاه اطلاعاتی (Information Bottleneck)
مشکل اصلی این بود که ظرفیت Thought Vector ثابت و محدود بود. وقتی طول متن ورودی زیاد میشد، انکودر مجبور بود تمام اطلاعات را در یک ظرف کوچک فشرده کند؛ در نتیجه اطلاعات بخشهای ابتدایی متن فراموش میشدند.
انقلاب اول: مکانیزم توجه (Attention Mechanism)
در سال ۲۰۱۵، مقالهای روش جدیدی برای حل این گلوگاه ارائه داد. به جای اینکه انکودر فقط یک بردار نهایی ارائه دهد، تمام حالتهای ایجادشده برای هر کلمه حفظ شد و به دکودر اجازه داده شد در میان تمام آنها «جستجوی نرم» (Soft Search) انجام دهد. این تکنیک به عنوان مکانیزم توجه (Attention) شناخته شد و کیفیت ترجمه و پردازش متن را جهش داد.
انقلاب دوم: ظهور معماری ترنسفورمر (Transformer)
نقطه عطف اصلی در سال ۲۰۱۷ با مقاله تاریخی گوگل یعنی Attention Is All You Need رقم خورد.
در این مقاله، معماری ترنسفورمر معرفی شد. ترنسفورمرها تمام مدارهای بازگشتی و پیچیده گذشته را دور ریختند و اتکای کامل خود را روی مکانیزم توجه گذاشتند. این معماری بسیار انعطافپذیرتر بود و دادهها را بسیار بهتر مدلسازی میکرد.
اما ترنسفورمرها یک محدودیت جدید هم داشتند: برخلاف مدلهای قدیمی که میتوانستند ورودی با طول نامحدود بگیرند، ترنسفورمر فقط میتوانست ورودی و خروجی با طول مشخص و محدود (Fixed Sequence) را پردازش کند—محدودیتی که پایه و اساس پنجره بافت (Context Window) در مدلهای امروزی است.
در پست بعدی بررسی میکنیم چطور OpenAI با دستکاری معماری ترنسفورمر، سری GPT را خلق کرد و چرا نسخه GPT-2 باعث ترس خود پژوهشگران شد.
فصل اول، بخش دوم
کتاب Prompt Engineering for LLMs
❤3👏1🍓1
چرا OpenAI در سال ۲۰۱۹ از انتشار عمومی GPT-2 ترسید؟ و چطور پرامپت انجینیرینگ متولد شد؟
بعد از معرفی معماری ترنسفورمر توسط گوگل در سال ۲۰۱۷، OpenAI دست به اقدام جالبی زد: آنها بخش انکودر را کاملاً حذف کردند و فقط بخش دکودر (Decoder) را نگه داشتند. این سادهسازی باعث تولد معماری GPT (Generative Pre-trained Transformer) شد؛ معماری دستآفرینی که دنیای هوش مصنوعی را تکان داد.
سیر تحول سری GPT و نقش آن در شکلگیری پرامپت انجینیرینگ به این شرح است:
در قسمت بعدی و پایانی این فصل، بررسی میکنیم که پرامپت انجینیرینگ واقعی در دنیای نرمافزار چیست و ۴ سطح پیچیدگی برنامههای مبتنی بر LLM شامل چه مواردی میشود.
بعد از معرفی معماری ترنسفورمر توسط گوگل در سال ۲۰۱۷، OpenAI دست به اقدام جالبی زد: آنها بخش انکودر را کاملاً حذف کردند و فقط بخش دکودر (Decoder) را نگه داشتند. این سادهسازی باعث تولد معماری GPT (Generative Pre-trained Transformer) شد؛ معماری دستآفرینی که دنیای هوش مصنوعی را تکان داد.
سیر تحول سری GPT و نقش آن در شکلگیری پرامپت انجینیرینگ به این شرح است:
۱. نسخه GPT-1 (سال ۲۰۱۸):
مدلی با ۱۱۷ میلیون پارامتر. در آن زمان استاندارد کار این بود که مدل روی متون بدون برچسب اینترنت پیشآموزش (Pre-train) داده میشد و سپس برای انجام هر تسک خاص (مثل خلاصهسازی یا طبقهبندی) باید به صورت اختصاصی فاینتیون (Fine-tune) میشد.
۲. نسخه GPT-2 (سال ۲۰۱۹ - لحظه ترس پژوهشگران):
حجم مدل ۱۰ برابر شد (۱.۵ میلیارد پارامتر) و روی ۴۰ گیگابایت متن وب آموزش دید. قدرت مدل در تولید متنهای شبیه به انسان آنقدر بالا رفت که OpenAI در بیانیهای رسمی اعلام کرد به دلیل نگرانی از استفادههای سوء (تولید اخبار جعلی، فیشینگ و اسپم) نسخه کامل آن را منتشر نمیکند!
نکته عجیب GPT-2 این بود که بدون هیچ فاینتیون اختصاصی، در خیلی از تسکها از مدلهای تخصصی بازار بهتر عمل میکرد.
۳. نسخه GPT-3 (سال ۲۰۲۰ - تولد رسمیت پرامپت انجینیرینگ):
یک جهش ۱۰۰ برابری دیگر! ۱۷۵ میلیارد پارامتر. مقاله این مدل یک تیتر کلیدی داشت: "Language Models Are Few-Shot Learners" (مدلهای زبانی یادگیرندههای چندنمونهای هستند).
پژوهشگران فهمیدند اگر صرفاً چند مثال از الگوی کار درخواستی را داخل خودِ متن ورودی بگذارند، مدل الگوی ورودی را درک کرده و کار را انجام میدهد. دقیقاً در همین نقطه بود که مفهوم Prompt Engineering متولد شد؛ یعنی هدایت مدل فقط با طراحی هوشمندانه متن ورودی (Prompt) بدون دست زدن به وزنهای مدل.
۴. انفجار ChatGPT و GPT-4 (از نوامبر ۲۰۲۲ تا امروز):
با اضافه شدن معماری چت به GPT-3.5، ابزار ChatGPT منتشر شد و رکورد سریعترین رشد کاربر در تاریخ را شکست. چند ماه بعد نسخه GPT-4 با ارتقایی نمایی (حدود ۱.۸ تریلیون پارامتر بر طبق گمانهزنیها) وارد بازار شد.
در قسمت بعدی و پایانی این فصل، بررسی میکنیم که پرامپت انجینیرینگ واقعی در دنیای نرمافزار چیست و ۴ سطح پیچیدگی برنامههای مبتنی بر LLM شامل چه مواردی میشود.
فصل اول، بخش سوم
کتاب Prompt Engineering for LLMs
❤3❤🔥1🆒1