[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"lesson:t5-s01-api-idea":3,"course:hamhoosh":59},{"meta":4,"prev":11,"next":17,"sections":21},{"free_preview":5,"order":6,"slug":7,"source":8,"term":9,"title_fa":10},true,1,"t5-s01-api-idea","book",5,"فصل ۰۱ — API چیست: حرف‌زدنِ برنامه با مدل",{"free_preview":12,"order":13,"slug":14,"source":8,"term":15,"title_fa":16},false,8,"t4-s08-mental-model-project",4,"فصل ۰۸ — پروژه: نقشهٔ ذهنیِ یک پاسخ",{"free_preview":12,"order":18,"slug":19,"source":8,"term":9,"title_fa":20},2,"t5-s02-first-call","فصل ۰۲ — اولین فراخوانی",[22,26,29,34,37,40,43,46,49,52,56],{"kind":23,"heading":24,"html":25},"normal","در این فصل چه یاد می‌گیری","\u003Ch2 id=\"در-این-فصل-چه-یاد-می‌گیری\">در این فصل چه یاد می‌گیری\u003Ca class=\"head-anchor\" href=\"#%D8%AF%D8%B1-%D8%A7%DB%8C%D9%86-%D9%81%D8%B5%D9%84-%DA%86%D9%87-%DB%8C%D8%A7%D8%AF-%D9%85%DB%8C%E2%80%8C%DA%AF%DB%8C%D8%B1%DB%8C\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>تا اینجای دوره با مدل \u003Cstrong>حرف\u003C\u002Fstrong> زده‌ای؛ از این ترم می‌خواهی با مدل \u003Cstrong>بسازی\u003C\u002Fstrong>. این تنها ترمِ کدنویسیِ دوره است و یک پیش‌نیازِ اختیاری دارد (JavaScriptِ تاروپود)، ولی دو فصلِ اول — همین فصل و فصلِ بعد — بدونِ یک خط کد هم کاملاً قابل‌فهم‌اند. اینجا یاد می‌گیری برنامه چطور با مدل حرف می‌زند: از درِ دیگری به‌اسمِ \u003Ccode>API\u003C\u002Fcode>. و مهم‌تر از هر چیز، یاد می‌گیری کلیدِ این در چیست، چرا لو رفتنش خطرناک است، و چرا در کلِ این ترم کلید \u003Cstrong>هرگز\u003C\u002Fstrong> داخلِ کد نوشته نمی‌شود.\u003C\u002Fp>\n\u003Cp>\u003Cpicture>\u003Csource type=\"image\u002Fwebp\" srcset=\"\u002F_img\u002F01-image-key-socket.f5a9a4d45e.160.webp 160w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.320.webp 320w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.480.webp 480w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.640.webp 640w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.768.webp 768w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.960.webp 960w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.1280.webp 1280w\" sizes=\"(max-width: 900px) 100vw, 800px\">\u003Cimg src=\"\u002F_img\u002F01-image-key-socket.f5a9a4d45e.1280.jpg\" srcset=\"\u002F_img\u002F01-image-key-socket.f5a9a4d45e.160.jpg 160w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.320.jpg 320w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.480.jpg 480w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.640.jpg 640w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.768.jpg 768w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.960.jpg 960w, \u002F_img\u002F01-image-key-socket.f5a9a4d45e.1280.jpg 1280w\" sizes=\"(max-width: 900px) 100vw, 800px\" alt=\"یک کلید روی جاکلیدی که دستی آن را نگه داشته و از بیرونِ ماشین با یک سیمِ نازک به سوکتی روی بدنهٔ یک موتورِ مدل وصل است؛ برشِ سوکت نشان می‌دهد کلید داخلِ ماشین جا نمی‌ماند\" width=\"1376\" height=\"768\" loading=\"lazy\" decoding=\"async\">\u003C\u002Fpicture>\u003C\u002Fp>\n\u003Cp>آخر این فصل می‌توانی:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>توضیح بدهی \u003Ccode>API\u003C\u002Fcode> چیست و چه فرقی با \u003Ccode>chat\u003C\u002Fcode> دارد\u003C\u002Fli>\n\u003Cli>بگویی \u003Ccode>API key\u003C\u002Fcode> چه‌کار می‌کند و چرا مالِ شخصِ خودت است\u003C\u002Fli>\n\u003Cli>بگویی چرا گذاشتنِ کلید داخلِ کدِ منتشرشده یعنی لو دادنِ کلید\u003C\u002Fli>\n\u003Cli>الگوی \u003Ccode>BYOK\u003C\u002Fcode> را توضیح بدهی: چرا ابزارِ منتشرشده از هر کاربر کلیدِ خودش را می‌پرسد\u003C\u002Fli>\n\u003C\u002Ful>\n",{"kind":23,"heading":27,"html":28},"قبل از شروع","\u003Ch2 id=\"قبل-از-شروع\">قبل از شروع\u003Ca class=\"head-anchor\" href=\"#%D9%82%D8%A8%D9%84-%D8%A7%D8%B2-%D8%B4%D8%B1%D9%88%D8%B9\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>از فصل ۱ ترم ۱:\u003C\u002Fstrong> فرقِ \u003Ccode>chatbot\u003C\u002Fcode> (پنجرهٔ گفت‌وگویی که شرکت ساخته) با \u003Ccode>model\u003C\u002Fcode> (خودِ مغزِ زیرین که جواب را تولید می‌کند).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>از فصل ۷ ترم ۱:\u003C\u002Fstrong> حریم خصوصیِ داده، و اینکه ردهٔ رایگان با ردهٔ پولی از نظرِ داده فرق می‌کند.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>لوازمِ این ترم: یک مرورگر و یک حسابِ رایگان که از آن کلیدِ خودت را می‌گیری. همین. روندِ گرفتنِ کلید را در فصلِ ۱ ترمِ ۱ (بخشِ ضمیمه) قدم‌به‌قدم دیدی، پس اینجا تکرارش نمی‌کنیم؛ این فصل سراغِ این می‌رود که آن کلید \u003Cstrong>چیست\u003C\u002Fstrong>، چه‌کار می‌کند و چرا باید مثلِ رمزِ عبور ازش محافظت کنی.\u003C\u002Fp>\n",{"kind":30,"heading":31,"html":32,"embed":33},"lab","","و همان مدلی را که در این فصل درباره‌اش حرف می‌زنیم، این‌بار از پنجرهٔ chat امتحان کن. حواست باشد چه چیزی تایپ می‌کنی و چه چیزی می‌بینی — همین «در»ی که الان جلوی توست، در بعدی است که با کد باز می‌کنی","\u002Flab\u002Fembed\u002Fhamhoosh\u002Fterm-5-building\u002Fsession-01-api-idea",{"kind":23,"heading":35,"html":36},"۱. دو در به یک مدل","\u003Ch2 id=\"۱-دو-در-به-یک-مدل\">۱. دو در به یک مدل\u003Ca class=\"head-anchor\" href=\"#%DB%B1-%D8%AF%D9%88-%D8%AF%D8%B1-%D8%A8%D9%87-%DB%8C%DA%A9-%D9%85%D8%AF%D9%84\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>تا امروز همیشه از یک در با مدل حرف زده‌ای: یک صفحه یا اپ را باز کرده‌ای، در یک کادر تایپ کرده‌ای، و جواب را در یک پنجرهٔ تمیز خوانده‌ای. اسمِ این در \u003Ccode>chat\u003C\u002Fcode> است. آن پنجره را یک شرکت برای \u003Cstrong>تو، یک آدم\u003C\u002Fstrong>، ساخته: دکمه دارد، رنگ دارد، تاریخچهٔ گفت‌وگو را نگه می‌دارد.\u003C\u002Fp>\n\u003Cp>ولی همان مدلِ زیرین یک درِ دوم هم دارد، درِ مخصوصِ \u003Cstrong>برنامه‌ها\u003C\u002Fstrong>. از این در خبری از پنجره و دکمه نیست. برنامهٔ تو یک پیامِ خام می‌فرستد و یک جوابِ خام پس می‌گیرد — بدونِ رنگ، بدونِ دکمه، فقط داده. اسمِ این درِ دوم \u003Ccode>API\u003C\u002Fcode> است. نکتهٔ کلیدی: پشتِ هر دو در \u003Cstrong>یک مدلِ واحد\u003C\u002Fstrong> نشسته. \u003Ccode>chat\u003C\u002Fcode> برای آدم، \u003Ccode>API\u003C\u002Fcode> برای برنامه.\u003C\u002Fp>\n\u003Cp>چرا این مهم است؟ چون تا وقتی فقط از درِ \u003Ccode>chat\u003C\u002Fcode> وارد شوی، همیشه مهمانِ ابزارِ کسِ دیگری هستی. وقتی از درِ \u003Ccode>API\u003C\u002Fcode> وارد شوی، می‌توانی ابزارِ \u003Cstrong>خودت\u003C\u002Fstrong> را بسازی — یک صفحه که فقط کارِ تو را می‌کند.\u003C\u002Fp>\n",{"kind":23,"heading":38,"html":39},"۲. API دقیقاً چیست","\u003Ch2 id=\"۲-api-دقیقاً-چیست\">۲. \u003Ccode>API\u003C\u002Fcode> دقیقاً چیست\u003Ca class=\"head-anchor\" href=\"#%DB%B2-api-%D8%AF%D9%82%DB%8C%D9%82%D8%A7%D9%8B-%DA%86%DB%8C%D8%B3%D8%AA\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>API\u003C\u002Fcode> یک درِ استاندارد است که برنامه‌ها از آن با یک سرویس حرف می‌زنند. مثلِ یک باجهٔ پستی فکر کن: قواعدِ روشنی دارد — پاکت را از این پنجره بده، رسید را از آن پنجره بگیر — و تا وقتی قاعده را رعایت کنی، فرقی نمی‌کند پشتِ باجه چه می‌گذرد. برنامهٔ تو لازم نیست بداند مدل چطور کار می‌کند؛ فقط باید بداند \u003Cstrong>چه بفرستد و جواب کجا برمی‌گردد\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>سرویسِ رایگانی که در این دوره استفاده می‌کنیم Gemini است و \u003Ccode>API\u003C\u002Fcode>ِ خودش را دارد. تو یک پیام (همان \u003Ccode>prompt\u003C\u002Fcode>) را طبقِ قاعده‌اش می‌فرستی، و مدل جوابش (همان \u003Ccode>response\u003C\u002Fcode>) را برمی‌گرداند — این‌بار نه در یک پنجرهٔ زیبا، بلکه به‌صورتِ متنِ خام که برنامه‌ات باید بخواندش. ساختارِ دقیقِ این رفت‌وبرگشت را فصلِ بعد باز می‌کنیم؛ فعلاً همین‌قدر بدان که \u003Ccode>API\u003C\u002Fcode> یعنی «قاعدهٔ حرف‌زدنِ برنامه با مدل».\u003C\u002Fp>\n\u003Cp>\u003Cstrong>قبل از ادامه، جواب بده:\u003C\u002Fstrong> اگر بخواهی یک صفحهٔ وبِ خودت بسازی که از مدل جواب بگیرد، از کدام در باید وارد شوی — \u003Ccode>chat\u003C\u002Fcode> یا \u003Ccode>API\u003C\u002Fcode>؟ چرا؟\u003C\u002Fp>\n",{"kind":23,"heading":41,"html":42},"۳. API key: کارتِ شناساییِ تو","\u003Ch2 id=\"۳-api-key-کارتِ-شناساییِ-تو\">۳. \u003Ccode>API key\u003C\u002Fcode>: کارتِ شناساییِ تو\u003Ca class=\"head-anchor\" href=\"#%DB%B3-api-key-%DA%A9%D8%A7%D8%B1%D8%AA%D9%90-%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C%D9%90-%D8%AA%D9%88\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>وقتی برنامه‌ات از درِ \u003Ccode>API\u003C\u002Fcode> وارد می‌شود، سرویس باید بداند \u003Cstrong>چه کسی\u003C\u002Fstrong> در می‌زند. برای همین به هر کاربر یک رشتهٔ محرمانه می‌دهد به‌اسمِ \u003Ccode>API key\u003C\u002Fcode>. کلید مثلِ یک کارتِ شناسایی است: هر بار که برنامه‌ات چیزی می‌فرستد، کلید را هم همراهش می‌فرستد تا سرویس بگوید «آهان، این توست».\u003C\u002Fp>\n\u003Cp>چرا سرویس این را لازم دارد؟ چون باید بشمارد هر کس چقدر استفاده می‌کند تا سهمیه را رعایت کند، و روی حساب‌های پولی صورت‌حساب را به همان کلید ببندد. یعنی کلیدِ تو مستقیماً به \u003Cstrong>حسابِ تو\u003C\u002Fstrong> وصل است.\u003C\u002Fp>\n\u003Cp>نتیجهٔ ساده ولی سنگین: هرکس کلیدت را داشته باشد، می‌تواند به‌نامِ تو از سرویس استفاده کند — سهمیه‌ات را بسوزاند و روی حسابِ پولی، پولت را خرج کند. پس کلید دقیقاً مثلِ رمزِ عبور است. آن را به کسی نشان نمی‌دهی، در جای عمومی نمی‌گذاری، و — همان‌طور که الان می‌بینیم — داخلِ کدی که منتشر می‌کنی نمی‌نویسی.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>⚠️ \u003Cstrong>مواظب باش:\u003C\u002Fstrong> ردهٔ رایگانِ Gemini ممکن است پرامپت و پاسخِ تو را برای بهترکردنِ مدل استفاده کند و استفادهٔ تجاری‌اش هم مجاز نیست. پس در این ترم دو مرز را جدی بگیر: کلید مالِ خودت است (نه در کدِ عمومی)، و دادهٔ خصوصی و حساس را اصلاً به ردهٔ رایگان نده.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n",{"kind":23,"heading":44,"html":45},"۴. چرا کلید هرگز داخلِ کد نمی‌رود","\u003Ch2 id=\"۴-چرا-کلید-هرگز-داخلِ-کد-نمی‌رود\">۴. چرا کلید هرگز داخلِ کد نمی‌رود\u003Ca class=\"head-anchor\" href=\"#%DB%B4-%DA%86%D8%B1%D8%A7-%DA%A9%D9%84%DB%8C%D8%AF-%D9%87%D8%B1%DA%AF%D8%B2-%D8%AF%D8%A7%D8%AE%D9%84%D9%90-%DA%A9%D8%AF-%D9%86%D9%85%DB%8C%E2%80%8C%D8%B1%D9%88%D8%AF\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>اینجا قلبِ فصل است. در این ترم ابزارت را روی یک \u003Cstrong>میزبانِ static\u003C\u002Fstrong> منتشر می‌کنی — جایی که فقط فایل‌های سمتِ کاربر (HTML و JavaScript) را سِرو می‌کند. یعنی هر فایلی که منتشر کنی، \u003Cstrong>همه\u003C\u002Fstrong> می‌توانند بازش کنند و بخوانندش. هر مرورگری یک دکمهٔ «مشاهدهٔ کد صفحه» دارد. پس اگر کلیدت را این‌طور در کد بنویسی:\u003C\u002Fp>\n\u003Cpre class=\"code-block\" dir=\"ltr\">\u003Ccode>\u002F\u002F این کارِ اشتباه است — هرگز این‌طور نکن\nconst KEY = &quot;AIzaSyД...کلیدِ واقعیِ من...&quot;;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>آن‌وقت هر بازدیدکننده‌ای که صفحه‌ات را باز کند، با دو کلیک کلیدت را می‌بیند و کپی می‌کند. کلید لو رفت. دقیقاً همان چیزی که فصلِ قبل درباره‌اش هشدار دادیم: کلید مثلِ رمزِ عبور است، و تو تازه رمزت را وسطِ خیابان چسبانده‌ای.\u003C\u002Fp>\n\u003Cp>«ولی من که یک برنامه‌نویسِ واقعی نیستم، کی کدم را نگاه می‌کند؟» — این تصورِ غلط دقیقاً همان‌جاست که کلیدها لو می‌روند. ربات‌هایی شبانه‌روز کلِ اینترنت را برای کلیدهای رهاشده می‌گردند. یک کلیدِ لو رفته معمولاً در عرضِ چند ساعت پیدا و مصرف می‌شود، نه چند ماه.\u003C\u002Fp>\n",{"kind":23,"heading":47,"html":48},"۵. الگوی BYOK: هرکس کلیدِ خودش","\u003Ch2 id=\"۵-الگوی-byok-هرکس-کلیدِ-خودش\">۵. الگوی \u003Ccode>BYOK\u003C\u002Fcode>: هرکس کلیدِ خودش\u003Ca class=\"head-anchor\" href=\"#%DB%B5-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-byok-%D9%87%D8%B1%DA%A9%D8%B3-%DA%A9%D9%84%DB%8C%D8%AF%D9%90-%D8%AE%D9%88%D8%AF%D8%B4\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>پس اگر کلید نباید در کد باشد، ابزارِ منتشرشده کلید را از کجا بیاورد؟ جواب، الگویی است که ستونِ اخلاقیِ کلِ این ترم است: \u003Ccode>BYOK\u003C\u002Fcode>، یعنی \u003Cem>Bring Your Own Key\u003C\u002Fem> — «کلیدِ خودت را بیاور».\u003C\u002Fp>\n\u003Cp>قاعده‌اش ساده است: صفحه یک کادرِ ورودی دارد و از \u003Cstrong>هر بازدیدکننده کلیدِ خودش\u003C\u002Fstrong> را می‌پرسد. کلید فقط در مرورگرِ همان شخص می‌ماند و همراهِ درخواستِ خودش به سرویس می‌رود؛ نه در کدِ توست، نه روی سرورِ تو ذخیره می‌شود، نه دستِ تو می‌رسد. تو صاحبِ ابزاری، ولی هرکس با شناسنامه و سهمیهٔ خودش کار می‌کند.\u003C\u002Fp>\n\u003Cp>این یعنی دامنهٔ صادقانهٔ چیزی که در این ترم می‌سازی یک ابزارِ \u003Cstrong>تک‌کاربرهٔ شخصی\u003C\u002Fstrong> است، نه یک سرویسِ عمومی برای میلیون‌ها کاربر — که به سرورِ واقعی و مدیریتِ کلید در سمتِ سرور نیاز دارد و بیرون از حوصلهٔ این دوره است. این مرز را صریح می‌گویم تا انتظارت واقعی باشد.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>💡 \u003Cstrong>نکته:\u003C\u002Fstrong> \u003Ccode>BYOK\u003C\u002Fcode> فقط یک ترفندِ امنیتی نیست، یک تصمیمِ محترمانه هم هست: تو دادهٔ کسی را از کیفِ خودت خرج نمی‌کنی و هزینهٔ کسی را هم به گردن نمی‌گیری. هرکس صاحبِ کلید، سهمیه و دادهٔ خودش می‌ماند.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cblockquote>\n\u003Cp>✅ \u003Cstrong>وارسی:\u003C\u002Fstrong> اگر جایی گیر کردی، وسوسه می‌شوی از خودِ مدل بپرسی «کلیدم را کجا امن نگه دارم؟». جوابش معمولاً منطقی به‌نظر می‌رسد — ولی همین‌جا نخِ ثابتِ این دوره را به‌کار ببر: \u003Cstrong>«اول خودت فکر کن» — «وارسی کن، خط به خط» — «مدل مطمئن است؛ دلیل نمی‌شود درست باشد».\u003C\u002Fstrong> پاسخِ مدل دربارهٔ امنیت را با مستنداتِ رسمیِ همان سرویس بسنج، نه با اطمینانِ لحنش؛ توصیهٔ امنیتیِ غلط ولی مطمئن، بدترین نوعِ غلط است.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n",{"kind":23,"heading":50,"html":51},"واژه‌های تازهٔ این فصل","\u003Ch2 id=\"واژه‌های-تازهٔ-این-فصل\">واژه‌های تازهٔ این فصل\u003Ca class=\"head-anchor\" href=\"#%D9%88%D8%A7%DA%98%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C-%D8%AA%D8%A7%D8%B2%D9%87%D9%94-%D8%A7%DB%8C%D9%86-%D9%81%D8%B5%D9%84\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\u003Cthead>\n\u003Ctr>\n\u003Cth>کلمه\u003C\u002Fth>\n\u003Cth>تلفظ به حروف فارسی\u003C\u002Fth>\n\u003Cth>یعنی چه\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>API\u003C\u002Ftd>\n\u003Ctd>اِی‌پی‌آی\u003C\u002Ftd>\n\u003Ctd>درِ استانداردی که برنامه‌ها از آن با یک سرویس حرف می‌زنند\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>API key\u003C\u002Ftd>\n\u003Ctd>اِی‌پی‌آی کی\u003C\u002Ftd>\n\u003Ctd>رشتهٔ محرمانه‌ای که برنامه‌ات را نزدِ سرویس شناسایی می‌کند؛ به حسابِ تو وصل است\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>BYOK\u003C\u002Ftd>\n\u003Ctd>بای‌اُکِی\u003C\u002Ftd>\n\u003Ctd>\u003Cem>Bring Your Own Key\u003C\u002Fem> — ابزار از هر کاربر کلیدِ خودش را می‌پرسد؛ کلید هرگز در کد نمی‌رود\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\u003C\u002Fdiv>",{"kind":53,"heading":54,"html":55},"checkpoint","تمرین‌ها","\u003Ch2 id=\"تمرین‌ها\">تمرین‌ها\u003Ca class=\"head-anchor\" href=\"#%D8%AA%D9%85%D8%B1%DB%8C%D9%86%E2%80%8C%D9%87%D8%A7\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>تمرین اجباری:\u003C\u002Fstrong> به \u003Ccode>src\u002Fstarter.md\u003C\u002Fcode> برو و سناریوی «کلید بگیر، امن نگه‌دار» را دنبال کن: یک کلیدِ رایگانِ خودت بساز و آن را در یک جای امن (نه داخلِ هیچ فایلِ کد) نگه‌دار. بعد در یک جمله بنویس: اگر این کلید را داخلِ یک صفحهٔ منتشرشده می‌گذاشتی، دقیقاً چه اتفاقی می‌افتاد؟\u003C\u002Fp>\n\u003Cp>\u003Cstrong>تمرین ستاره‌دار ⭐:\u003C\u002Fstrong> یک ابزارِ آنلاینِ واقعی پیدا کن که ادعا می‌کند «رایگان با هوش مصنوعی کار می‌کند» و از تو کلیدی نمی‌خواهد. حالا مثلِ یک کارآگاه فکر کن: اگر کلیدی از تو نمی‌خواهد، هزینهٔ فراخوانی‌ها را چه کسی می‌دهد و دادهٔ تو کجا می‌رود؟ در دو جمله بنویس چرا الگوی \u003Ccode>BYOK\u003C\u002Fcode> از این مدل شفاف‌تر و محترمانه‌تر است.\u003C\u002Fp>\n",{"kind":23,"heading":57,"html":58},"در فصل بعد","\u003Ch2 id=\"در-فصل-بعد\">در فصل بعد\u003Ca class=\"head-anchor\" href=\"#%D8%AF%D8%B1-%D9%81%D8%B5%D9%84-%D8%A8%D8%B9%D8%AF\" aria-label=\"پیوند به این بخش\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>حالا می‌دانی \u003Ccode>API\u003C\u002Fcode> چیست، کلید چه‌کار می‌کند، و چرا کلید هرگز در کد نمی‌رود. فصلِ بعد نزدیک‌تر می‌رویم: دقیقاً می‌بینیم یک فراخوانیِ \u003Ccode>API\u003C\u002Fcode> چه شکلی است — چه چیزی می‌فرستی (بدنهٔ درخواست) و چه چیزی برمی‌گردد (پاسخِ خام)، و جواب را از کجای آن بیرون می‌کشی. هنوز کدِ اجراشدنی نمی‌نویسیم؛ فقط شکلِ رفت‌وبرگشت را می‌بینیم تا فصلِ سوم که برای اولین بار از JavaScript صدایش می‌زنیم آماده باشی.\u003C\u002Fp>\n",{"course":60,"entitled":12,"lessons":68,"payments_enabled":12,"terms":220,"live":5},{"active_window":61,"effective_price_toman":62,"free":5,"lesson_count":63,"price_toman":64,"slug":65,"summary_fa":66,"title_fa":67},null,0,51,2500000,"hamhoosh","از «هوش مصنوعی واقعاً چیست» تا ساختن ابزار واقعی با آن — بدون دیوار ریاضی و بدون پیش‌نیاز برنامه‌نویسی. هوش مصنوعی همکارِ هوشمندی است که وارسی‌اش می‌کنی، نه اوراکلی که چشم‌بسته باور کنی.","هم‌هوش — خودآموز هوش مصنوعی",[69,72,75,79,82,85,89,93,96,99,102,105,108,111,114,117,120,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,173,174,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217],{"free_preview":5,"order":6,"slug":70,"source":8,"term":6,"title_fa":71},"t1-s01-first-conversation","فصل ۰۱ — با چه چیزی حرف می‌زنی؟ اولین گفت‌وگو",{"free_preview":5,"order":18,"slug":73,"source":8,"term":6,"title_fa":74},"t1-s02-how-it-learns","فصل ۰۲ — چطور یاد گرفت",{"free_preview":5,"order":76,"slug":77,"source":8,"term":6,"title_fa":78},3,"t1-s03-tokens","فصل ۰۳ — توکن: واحدِ کارِ مدل",{"free_preview":5,"order":15,"slug":80,"source":8,"term":6,"title_fa":81},"t1-s04-hallucination","فصل ۰۴ — چرا مطمئن ولی غلط: توهم",{"free_preview":5,"order":9,"slug":83,"source":8,"term":6,"title_fa":84},"t1-s05-limits","فصل ۰۵ — مرزها: چه نمی‌داند و چه نباید ازش خواست",{"free_preview":5,"order":86,"slug":87,"source":8,"term":6,"title_fa":88},6,"t1-s06-types","فصل ۰۶ — گونه‌های هوش مصنوعی",{"free_preview":5,"order":90,"slug":91,"source":8,"term":6,"title_fa":92},7,"t1-s07-responsible-start","فصل ۰۷ — از همین حالا مسئولانه",{"free_preview":5,"order":13,"slug":94,"source":8,"term":6,"title_fa":95},"t1-s08-interrogate-project","فصل ۰۸ — پروژه: یک مدل را بازجویی کن",{"free_preview":5,"order":6,"slug":97,"source":8,"term":18,"title_fa":98},"t2-s01-intent","فصل ۰۱ — نیت، نه جادو",{"free_preview":5,"order":18,"slug":100,"source":8,"term":18,"title_fa":101},"t2-s02-context","فصل ۰۲ — زمینه‌دادن",{"free_preview":5,"order":76,"slug":103,"source":8,"term":18,"title_fa":104},"t2-s03-iterate","فصل ۰۳ — حلقهٔ تکرار",{"free_preview":5,"order":15,"slug":106,"source":8,"term":18,"title_fa":107},"t2-s04-verify","فصل ۰۴ — وارسی: مهم‌ترین مهارت",{"free_preview":5,"order":9,"slug":109,"source":8,"term":18,"title_fa":110},"t2-s05-system","فصل ۰۵ — لحنِ ثابت و دستورِ سیستمی",{"free_preview":5,"order":86,"slug":112,"source":8,"term":18,"title_fa":113},"t2-s06-tune","فصل ۰۶ — کنترلِ خلاقیت، دقت و عمق",{"free_preview":5,"order":90,"slug":115,"source":8,"term":18,"title_fa":116},"t2-s07-structured","فصل ۰۷ — پرامپتِ ساختارمند و قابلِ‌استفادهٔ مجدد",{"free_preview":5,"order":13,"slug":118,"source":8,"term":18,"title_fa":119},"t2-s08-antipatterns","فصل ۰۸ — دام‌ها و افسانه‌ها",{"free_preview":5,"order":121,"slug":122,"source":8,"term":18,"title_fa":123},9,"t2-s09-assistant-project","فصل ۰۹ — پروژه: یک دستیارِ شخصی بساز",{"free_preview":5,"order":6,"slug":125,"source":8,"term":76,"title_fa":126},"t3-s01-images","فصل ۰۱ — ساختِ تصویر با هوش مصنوعی",{"free_preview":12,"order":18,"slug":128,"source":8,"term":76,"title_fa":129},"t3-s02-image-understanding","فصل ۰۲ — فهمِ تصویر",{"free_preview":12,"order":76,"slug":131,"source":8,"term":76,"title_fa":132},"t3-s03-audio-video","فصل ۰۳ — صدا و ویدیو",{"free_preview":12,"order":15,"slug":134,"source":8,"term":76,"title_fa":135},"t3-s04-research","فصل ۰۴ — پژوهش با هوش مصنوعی",{"free_preview":12,"order":9,"slug":137,"source":8,"term":76,"title_fa":138},"t3-s05-writing","فصل ۰۵ — نوشتن و بازنویسی",{"free_preview":12,"order":86,"slug":140,"source":8,"term":76,"title_fa":141},"t3-s06-study","فصل ۰۶ — یادگیری و درس‌خواندن",{"free_preview":12,"order":90,"slug":143,"source":8,"term":76,"title_fa":144},"t3-s07-work","فصل ۰۷ — کارِ حرفه‌ای",{"free_preview":12,"order":13,"slug":146,"source":8,"term":76,"title_fa":147},"t3-s08-coding-help","فصل ۰۸ — کمکِ کدنویسی (بی‌آنکه برنامه‌نویس باشی)",{"free_preview":12,"order":121,"slug":149,"source":8,"term":76,"title_fa":150},"t3-s09-workflow-project","فصل ۰۹ — پروژه: یک جریانِ کاریِ واقعی",{"free_preview":5,"order":6,"slug":152,"source":8,"term":15,"title_fa":153},"t4-s01-training-deep","فصل ۰۱ — آموزش، عمیق‌تر (بدون ریاضی)",{"free_preview":12,"order":18,"slug":155,"source":8,"term":15,"title_fa":156},"t4-s02-embeddings","فصل ۰۲ — از توکن تا معنا: embedding",{"free_preview":12,"order":76,"slug":158,"source":8,"term":15,"title_fa":159},"t4-s03-context-memory","فصل ۰۳ — حافظه و پنجرهٔ زمینه",{"free_preview":12,"order":15,"slug":161,"source":8,"term":15,"title_fa":162},"t4-s04-rag","فصل ۰۴ — RAG: دادنِ دانشِ تازه به مدل",{"free_preview":12,"order":9,"slug":164,"source":8,"term":15,"title_fa":165},"t4-s05-agents","فصل ۰۵ — عامل‌ها و ابزارها",{"free_preview":12,"order":86,"slug":167,"source":8,"term":15,"title_fa":168},"t4-s06-local-vs-cloud","فصل ۰۶ — مدلِ محلی در برابر ابری",{"free_preview":12,"order":90,"slug":170,"source":8,"term":15,"title_fa":171},"t4-s07-persian-gap","فصل ۰۷ — شکافِ فارسی-انگلیسی",{"free_preview":12,"order":13,"slug":14,"source":8,"term":15,"title_fa":16},{"free_preview":5,"order":6,"slug":7,"source":8,"term":9,"title_fa":10},{"free_preview":12,"order":18,"slug":19,"source":8,"term":9,"title_fa":20},{"free_preview":12,"order":76,"slug":176,"source":8,"term":9,"title_fa":177},"t5-s03-from-js","فصل ۰۳ — از JavaScript صدا بزن",{"free_preview":12,"order":15,"slug":179,"source":8,"term":9,"title_fa":180},"t5-s04-system-in-code","فصل ۰۴ — نقش و پارامتر در کد",{"free_preview":12,"order":9,"slug":182,"source":8,"term":9,"title_fa":183},"t5-s05-structured-output","فصل ۰۵ — خروجیِ ساختارمند",{"free_preview":12,"order":86,"slug":185,"source":8,"term":9,"title_fa":186},"t5-s06-build-app","فصل ۰۶ — یک وب‌اپِ کوچکِ هوش‌مصنوعی‌دار",{"free_preview":12,"order":90,"slug":188,"source":8,"term":9,"title_fa":189},"t5-s07-cost-limits","فصل ۰۷ — هزینه، سهمیه و مرزها",{"free_preview":12,"order":13,"slug":191,"source":8,"term":9,"title_fa":192},"t5-s08-ship-project","فصل ۰۸ — پروژه: ابزارِ هوش‌مصنوعیِ خودت را منتشر کن",{"free_preview":5,"order":6,"slug":194,"source":8,"term":86,"title_fa":195},"t6-s01-deepfakes","فصل ۰۱ — دیپ‌فیک و رسانهٔ جعلی",{"free_preview":12,"order":18,"slug":197,"source":8,"term":86,"title_fa":198},"t6-s02-misinformation","فصل ۰۲ — دفاع در برابر بدْاطلاعات",{"free_preview":12,"order":76,"slug":200,"source":8,"term":86,"title_fa":201},"t6-s03-detection-myth","فصل ۰۳ — افسانهٔ «تشخیصِ هوش مصنوعی»",{"free_preview":12,"order":15,"slug":203,"source":8,"term":86,"title_fa":204},"t6-s04-bias","فصل ۰۴ — سوگیری و انصاف",{"free_preview":12,"order":9,"slug":206,"source":8,"term":86,"title_fa":207},"t6-s05-privacy-data","فصل ۰۵ — حریم خصوصی و دادهٔ تو",{"free_preview":12,"order":86,"slug":209,"source":8,"term":86,"title_fa":210},"t6-s06-ownership","فصل ۰۶ — مالکیت و کپی‌رایتِ خروجی",{"free_preview":12,"order":90,"slug":212,"source":8,"term":86,"title_fa":213},"t6-s07-work-future","فصل ۰۷ — کار، مهارت و مرزهای سالم",{"free_preview":12,"order":13,"slug":215,"source":8,"term":86,"title_fa":216},"t6-s08-safety-ethics","فصل ۰۸ — ایمنی و اخلاق، بدونِ موعظه",{"free_preview":12,"order":121,"slug":218,"source":8,"term":86,"title_fa":219},"t6-s09-capstone","فصل ۰۹ — پروژهٔ نهایی: چیزی مسئولانه بساز و منتشر کن",[],1784990546417]