
468 | Google Prompt 469 | Engineering (2025) 470 | 471 |
1. مقدمه
479 | 480 |481 | هنگام فکر کردن درباره ورودی و خروجی یک مدل زبانی بزرگ (LLM)، یک دستور متنی یا پرامپت، (Prompt) ورودیای است که مدل برای 482 | پیشبینی یک خروجی خاص استفاده میکند. 483 |
484 | 485 |486 | شما نیازی نیست یک دانشمند داده یا مهندس یادگیری ماشین باشید - هر کسی میتواند یک پرامپت بنویسد. 487 |
488 | 489 |490 | با این حال، ساخت موثرترین پرامپت میتواند پیچیده باشد. جنبههای مختلفی از پرامپت شما بر کارآمدی آن 491 | تأثیر میگذارد، مثل مدلی که استفاده میکنید، دادههای آموزشی مدل، تنظیمات مدل، انتخاب کلمات شما، سبک 492 | و لحن، ساختار کانتکس همگی مهم هستند. بنابراین، مهندسی پرامپت یک فرآیند تکرارشونده است. پرامپتهای 493 | نامناسب میتوانند منجر به پاسخهای مبهم و نادرست شوند و میتوانند توانایی مدل برای ارائه خروجی 494 | معنادار را مختل کنند. 495 |
496 | 497 |وقتی با چتبات Gemini یا ChatGPT صحبت میکنید، اساساً پرامپتها را مینویسید، اما این مقاله بر نوشتن پرامپتها 498 | برای مدل Gemini در Vertex AI یا با استفاده از API تمرکز دارد، زیرا با پرامپت کردن مستقیم مدل، شما به 499 | تنظیمات مانند دما و غیره دسترسی خواهید داشت.
500 | 501 |این مقاله به طور مفصل درباره مهندسی پرامپت بحث میکند. ما به تکنیکهای مختلف پرامپت نگاه خواهیم کرد 502 | تا به شما در شروع کار کمک کنیم و نکات و بهترین شیوهها را به اشتراک میگذاریم تا یک متخصص پرامپت 503 | شوید. همچنین برخی از چالشهایی که ممکن است هنگام ساخت پرامپتها با آنها مواجه شوید را بررسی خواهیم 504 | کرد.
505 |2. مفهوم مهندسی پرامپت
509 |به یاد داشته باشید که یک LLM چگونه کار میکند؛ این یک موتور پیشبینی است. مدل متن متوالی را به عنوان 510 | ورودی میگیرد و سپس پیشبینی میکند که توکن بعدی چه باید باشد، بر اساس دادههایی که با آنها آموزش 511 | دیده است. LLM برای انجام این کار بارها و بارها عملیاتی میشود، با افزودن توکن پیشبینی شده قبلی به 512 | انتهای متن متوالی برای پیشبینی توکن بعدی. پیشبینی توکن بعدی بر اساس رابطه بین آنچه در توکنهای 513 | قبلی است و آنچه LLM در طول آموزش خود دیده است، انجام میشود.
514 | 515 |وقتی یک پرامپت مینویسید، در تلاش هستید تا LLM را برای پیشبینی توالی درست توکنها تنظیم کنید. مهندسی 516 | پرامپت فرآیند طراحی پرامپتهای با کیفیت بالا است که LLMها را برای تولید خروجیهای دقیق هدایت 517 | میکند. این فرآیند شامل آزمایش برای یافتن بهترین پرامپت، بهینهسازی طول پرامپت و ارزیابی سبک نوشتاری 518 | و ساختار یک پرامپت در رابطه با وظیفه است. در زمینه پردازش زبان طبیعی و LLMها، یک پرامپت ورودیای 519 | است که به مدل ارائه میشود تا پاسخ یا پیشبینی را تولید کند.
520 | 521 |این پرامپتها میتوانند برای دستیابی به انواع مختلفی از وظایف درک و تولید مانند خلاصهسازی متن، 522 | استخراج اطلاعات، پرسش و پاسخ، طبقهبندی متن، ترجمه زبان یا کد، تولید کد و مستندسازی کد یا استدلال 523 | استفاده شوند.
524 | 525 |لطفاً به راهنماهای پرامپت Google با مثالهای ساده و موثر پرامپت مراجعه کنید.
526 | 527 |هنگام مهندسی پرامپت، با انتخاب یک مدل شروع خواهید کرد. ممکن است نیاز باشد پرامپتها برای مدل خاص شما 528 | بهینه شوند، صرف نظر از اینکه از مدلهای زبانی Gemini در Vertex AI، GPT، Claude یا یک مدل منبع باز 529 | مانند Gemma یا LLaMA استفاده میکنید.
530 | 531 |علاوه بر پرامپت، شما همچنین نیاز به آزمایش با تنظیمات مختلف یک LLM خواهید داشت.
532 |3. تنظیمات خروجی مدلهای زبانی بزرگ
536 |پس از انتخاب مدل، باید تنظیمات مدل را مشخص کنید. اکثر LLMها با گزینههای تنظیم مختلفی ارائه میشوند 537 | که خروجی LLM را کنترل میکنند. مهندسی پرامپت موثر نیازمند تنظیم بهینه این پیکربندیها برای وظیفه شما 538 | است.
539 | 540 |طول خروجی
542 |یک تنظیم مهم، تعداد توکنهایی است که در یک پاسخ تولید میشوند. تولید توکنهای بیشتر نیازمند 543 | محاسبات بیشتری از LLM است، که منجر به مصرف انرژی بالاتر، زمانهای پاسخ احتمالاً کندتر و 544 | هزینههای بالاتر میشود.
545 | 546 |کاهش طول خروجی LLM باعث نمیشود که LLM از نظر سبک یا متنی در خروجی که ایجاد میکند مختصرتر شود، 547 | فقط باعث میشود که LLM پس از رسیدن به محدودیت، پیشبینی توکنهای بیشتر را متوقف کند. اگر نیازهای 548 | شما به طول خروجی کوتاه نیاز دارد، احتمالاً باید پرامپت خود را نیز برای تطبیق با آن مهندسی کنید. 549 |
550 | 551 |محدودیت طول خروجی به ویژه برای برخی از تکنیکهای پرامپت LLM، مانند ReAct، مهم است، جایی که LLM پس 552 | از پاسخی که میخواهید، به انتشار توکنهای بیفایده ادامه خواهد داد.
553 | 554 |توجه داشته باشید، تولید توکنهای بیشتر نیازمند محاسبات بیشتری از LLM است، که منجر به مصرف انرژی 555 | بالاتر و زمانهای پاسخ احتمالاً کندتر میشود، که منجر به هزینههای بالاتر میشود.
556 |کنترلهای نمونهگیری (Sampeling)
560 |LLMها رسماً یک توکن واحد را پیشبینی نمیکنند. در عوض، LLMها احتمالات را برای اینکه توکن بعدی 561 | چه میتواند باشد پیشبینی میکنند، با هر توکن در واژگان LLM که یک احتمال دریافت میکند. سپس از 562 | آن احتمالات توکن نمونهگیری میشود تا مشخص شود توکن بعدی تولید شده چه خواهد بود.
563 | 564 |دما (Temperature)، Top-K و Top-P رایجترین تنظیمات پیکربندی هستند که تعیین میکنند چگونه احتمالات 565 | توکن پیشبینی شده برای انتخاب یک توکن خروجی واحد پردازش میشوند.
566 |دما (Temperature)
570 |دما درجه تصادفی بودن در انتخاب توکن را کنترل میکند. دماهای پایینتر برای پرامپتهایی که انتظار 571 | پاسخ قطعیتری دارند مناسب هستند، در حالی که دماهای بالاتر میتوانند منجر به نتایج متنوعتر یا 572 | غیرمنتظره شوند. دمای 0 (greedy decoding) قطعیت را نشان میدهد: توکن با بالاترین احتمال همیشه 573 | انتخاب میشود (اگرچه توجه داشته باشید که اگر دو توکن دارای همان بالاترین احتمال پیشبینی شده 574 | باشند، بسته به نحوه پیادهسازی شکستن تساوی، ممکن است همیشه با دمای 0 خروجی یکسانی دریافت نکنید). 575 |
576 | 577 |دماهای نزدیک به حداکثر تمایل به ایجاد خروجی تصادفیتر دارند. و همانطور که دما بالاتر و بالاتر 578 | میرود، همه توکنها به طور یکسان احتمال دارند که توکن پیشبینی شده بعدی باشند.
579 | 580 |کنترل دمای Gemini را میتوان به روشی مشابه با تابع softmax که در یادگیری ماشین استفاده میشود درک 581 | کرد. تنظیم دمای پایین، دمای پایین softmax (T) را منعکس میکند، که بر یک دمای ترجیحی واحد با 582 | قطعیت بالا تأکید میکند. تنظیم دمای بالاتر Gemini مانند دمای بالای softmax است، که طیف وسیعتری 583 | از دماها در اطراف تنظیم انتخاب شده را قابل قبولتر میکند. این عدم قطعیت افزایش یافته، 584 | سناریوهایی را در نظر میگیرد که در آن یک دمای دقیق و سختگیرانه ممکن است ضروری نباشد، مانند زمانی 585 | که با خروجیهای خلاقانه آزمایش میکنید.
586 |Top-K و Top-P
590 |Top-K و Top-P دو تنظیم نمونهگیری (سمپلینگ) هستند که در LLMها استفاده میشوند تا توکن بعدی پیشبینی شده را از 591 | توکنهایی با بالاترین احتمالات پیشبینی شده محدود کنند. مانند دما، این تنظیمات سمپلینگ، تصادفی 592 | بودن و تنوع متن تولید شده را کنترل میکنند.
593 |-
594 |
- سمپلینگ Top-K، K توکن با بیشترین احتمال را از توزیع پیشبینی شده مدل انتخاب میکند. هرچه 595 | Top-K بالاتر باشد، خروجی مدل خلاقانهتر و متنوعتر است؛ هرچه Top-K پایینتر باشد، خروجی مدل 596 | محدودتر و واقعیتر است. Top-K برابر با 1 معادل greedy decoding است. 597 | 598 |
- سمپلینگ Top-P، توکنهای برتری را انتخاب میکند که احتمال تجمعی آنها از یک مقدار خاص (P) 599 | تجاوز نکند. مقادیر برای P از 0 تا 1 (تمام توکنها در واژگان LLM) متغیر است. 600 |
بهترین راه برای انتخاب بین Top-K و Top-P، آزمایش با هر دو روش (یا هر دو با هم) و دیدن اینکه کدام 602 | یک نتایجی را که به دنبال آن هستید تولید میکند.
603 |ترکیب تنظیمات
607 |انتخاب بین Top-K، Top-P، دما و تعداد توکنهایی که باید تولید شوند، به کاربرد خاص و نتیجه مورد نظر 608 | بستگی دارد، و تنظیمات همگی بر یکدیگر تأثیر میگذارند. همچنین مهم است که مطمئن شوید درک میکنید 609 | که مدل انتخابی شما چگونه تنظیمات نمونهگیری مختلف را با هم ترکیب میکند.
610 | 611 |اگر دما، Top-K و Top-P همگی در دسترس باشند (مانند Vertex Studio)، توکنهایی که هم معیارهای Top-K 612 | و هم Top-P را برآورده میکنند، نامزدهایی برای توکن پیشبینی شده بعدی هستند، و سپس دما برای 613 | نمونهگیری از توکنهایی که از معیارهای Top-K و Top-P عبور کردهاند اعمال میشود. اگر فقط Top-K یا 614 | Top-P در دسترس باشد، رفتار یکسان است اما فقط از یک تنظیم Top-K یا P استفاده میشود.
615 | 616 |اگر دما در دسترس نباشد، از هر توکنی که معیارهای Top-K و/یا Top-P را برآورده میکند، به صورت 617 | تصادفی انتخاب میشود تا یک توکن پیشبینی شده بعدی واحد تولید شود.
618 | 619 |در تنظیمات بیشازحد یک مقدار پیکربندی سمپلینگ، آن تنظیم نمونهگیری یا تنظیمات پیکربندی دیگر را لغو 620 | میکند یا بیاهمیت میشود.
621 |-
622 |
- اگر دما را روی 0 تنظیم کنید، Top-K و Top-P بیاهمیت میشوند - توکن با بیشترین احتمال، توکن 623 | پیشبینی شده بعدی میشود. اگر دما را به شدت بالا تنظیم کنید (بالای 1 - عموماً به 10ها)، دما 624 | بیاهمیت میشود و از هر توکنی که از معیارهای Top-K و/یا Top-P عبور میکند، به صورت تصادفی 625 | نمونهگیری میشود تا یک توکن پیشبینی شده بعدی انتخاب شود. 626 | 627 |
- اگر Top-K را روی 1 تنظیم کنید، دما و Top-P بیاهمیت میشوند. فقط یک توکن از معیارهای Top-K 628 | عبور میکند، و آن توکن، توکن پیشبینی شده بعدی است. اگر Top-K را به شدت بالا تنظیم کنید، 629 | مانند اندازه واژگان LLM، هر توکن با احتمال غیر صفر برای اینکه توکن بعدی باشد، معیارهای Top-K 630 | را برآورده میکند و هیچ کدام انتخاب نمیشوند. 631 | 632 |
- اگر Top-P را روی 0 (یا یک مقدار بسیار کوچک) تنظیم کنید، اکثر پیادهسازیهای نمونهگیری LLM فقط 633 | توکن با بیشترین احتمال را در نظر میگیرند تا معیارهای Top-P را برآورده کند، که دما و Top-K 634 | را بیاهمیت میکند. اگر Top-P را روی 1 تنظیم کنید، هر توکن با احتمال غیر صفر برای اینکه توکن 635 | بعدی باشد، معیارهای Top-P را برآورده میکند، و هیچ کدام انتخاب نمیشوند. 636 |
به عنوان یک نقطه شروع کلی، دمای 0.2، Top-P برابر با 0.95 و Top-K برابر با 30 به شما نتایج نسبتاً 638 | منسجمی میدهد که میتواند خلاقانه باشد اما نه به طور افراطی. اگر میخواهید نتایج به ویژه 639 | خلاقانهای داشته باشید، سعی کنید با دمای 0.9، Top-P برابر با 0.99 و Top-K برابر با 40 شروع کنید. 640 | و اگر میخواهید نتایج کمتر خلاقانهای داشته باشید، سعی کنید با دمای 0.1، Top-P برابر با 0.9 و 641 | Top-K برابر با 20 شروع کنید. در نهایت، اگر وظیفه شما همیشه یک پاسخ صحیح واحد دارد (مثلاً، پاسخ 642 | به یک مسئله ریاضی)، با دمای 0 شروع کنید.
643 | 644 |توجه: با آزادی بیشتر (دما، Top-K، Top-P و توکنهای خروجی بالاتر)، LLM ممکن است متنی تولید کند که 645 | کمتر مرتبط است.
646 | 647 |هشدار: آیا تا به حال پاسخی را دیدهاید که با مقدار زیادی کلمات پرکننده به پایان برسد؟ این همچنین 648 | به عنوان "باگ حلقه تکرار" شناخته میشود، که یک مشکل رایج در مدلهای زبانی بزرگ است که در آن مدل 649 | در یک چرخه گیر میکند، به طور مکرر همان کلمه (پرکننده)، عبارت یا ساختار جمله را تولید میکند، که 650 | اغلب با تنظیمات نامناسب دما و top-k/top-p تشدید میشود. این میتواند هم در تنظیمات دمای پایین و 651 | هم بالا رخ دهد، اگرچه به دلایل مختلف. 652 |
653 |654 | در دماهای پایین، مدل بیش از حد قطعی میشود، به شدت به مسیر 655 | با بالاترین احتمال میچسبد، که میتواند منجر به یک حلقه شود اگر آن مسیر به متن تولید شده قبلی 656 | بازگردد. برعکس، در دماهای بالا، خروجی مدل بیش از حد تصادفی میشود، احتمال اینکه یک کلمه یا عبارت 657 | انتخاب شده به طور تصادفی، به شانس، به یک حالت قبلی بازگردد را افزایش میدهد، که به دلیل تعداد 658 | زیاد گزینههای موجود، یک حلقه ایجاد میکند. 659 |
660 |661 | در هر دو مورد، فرآیند سمپلینگ مدل "گیر میکند"، که 662 | منجر به خروجی یکنواخت و بیفایده میشود تا زمانی که پنجره خروجی پر شود. حل این مشکل اغلب نیازمند 663 | تنظیم دقیق مقادیر دما و top-k/top-p برای یافتن تعادل بهینه بین قطعیت و تصادفی بودن است.
664 |4. تکنیکهای مهندسی پرامپت
669 |مدلهای زبانی بزرگ (LLM) برای پیروی از دستورالعملها تنظیم شدهاند و روی مقادیر زیادی از دادهها 670 | آموزش دیدهاند تا بتوانند یک پرامپت را درک کنند و پاسخی تولید کنند. اما LLMها کامل نیستند؛ هرچه متن 671 | پرامپت شما واضحتر باشد، برای LLM بهتر است تا متن بعدی محتمل را پیشبینی کند. علاوه بر این، 672 | تکنیکهای خاصی که از نحوه آموزش LLMها و نحوه کار آنها استفاده میکنند، به شما کمک میکنند تا نتایج 673 | مرتبط را از LLMها دریافت کنید.
674 | 675 |حال که درک میکنیم مهندسی پرامپت چیست و چه چیزی نیاز دارد، بیایید به برخی از مثالهای مهمترین 676 | تکنیکهای پرامپت بپردازیم.
677 | 678 |پرامپت زیرو-شات (Zero-shot)
680 |یک پرامپت زیرو-شات سادهترین نوع پرامپت است. که فقط توصیفی از یک وظیفه و برخی متنها را برای 681 | شروع کار LLM ارائه میدهد. این ورودی میتواند هر چیزی باشد: یک سؤال، شروع یک داستان، یا 682 | دستورالعملها. نام زیرو-شات به معنای 'بدون مثال' است.
683 | 684 |بیایید از Vertex AI Studio (برای زبان) در Vertex AI استفاده کنیم، که یک محیط آزمایشی برای تست 685 | پرامپتها ارائه میدهد. در جدول 1، یک مثال پرامپت زیرو-شات برای طبقهبندی نقدهای فیلم خواهید 686 | دید.
687 | 688 |فرمت جدول که در زیر استفاده شده است، روش عالی برای مستندسازی پرامپتها است. پرامپتهای شما 689 | احتمالاً قبل از اینکه در یک کد قرار بگیرند، از چندین تکرار عبور خواهند کرد، بنابراین مهم است که 690 | کار مهندسی پرامپت خود را به روشی منظم و ساختاریافته پیگیری کنید. اطلاعات بیشتر در مورد این فرمت 691 | جدول، اهمیت پیگیری کار مهندسی پرامپت و فرآیند توسعه پرامپت در بخش بهترین شیوهها در ادامه این 692 | فصل ("مستندسازی پرامپت") آمده است.
693 | 694 |دمای مدل باید روی عدد پایینی تنظیم شود، زیرا نیازی به خلاقیت نیست، و ما از مقادیر پیشفرض Top-K و 695 | Top-P مدل gemini-pro استفاده میکنیم، که به طور مؤثر هر دو تنظیم را غیرفعال میکند (به 'تنظیمات 696 | خروجی LLM' در بالا مراجعه کنید). به خروجی تولید شده توجه کنید. کلمات "disturbing" و 697 | "masterpiece" باید پیشبینی را کمی پیچیدهتر کنند، زیرا هر دو کلمه در یک جمله استفاده شدهاند. 698 |
699 | 700 |مثال پرامپت زیرو-شات:
701 | 702 |
وقتی زیرو-شات کار نمیکند، میتوانید نمونهها یا مثالهایی را در پرامپت ارائه دهید، که منجر به 705 | پرامپت "تک-شات" و "چند-شات" میشود.
706 |پرامپت تک-شات و چند-شات (One-shot & Few-shot)
710 |هنگام ایجاد پرامپتها برای مدلهای هوش مصنوعی، ارائه مثالها مفید است. این مثالها میتوانند به 711 | مدل کمک کنند تا آنچه را که از آن میخواهید درک کند. مثالها به ویژه زمانی مفید هستند که 712 | میخواهید مدل را به سمت یک ساختار یا الگوی خروجی خاص هدایت کنید.
713 | 714 |یک پرامپت تک-شات، یک مثال واحد ارائه میدهد، از این رو نام تک-شات. ایده این است که مدل مثالی دارد 715 | که میتواند از آن تقلید کند تا بهترین عملکرد را در انجام وظیفه داشته باشد.
716 | 717 |یک پرامپت چند-شات چندین مثال ارائه میدهد. این به مدل کمک میکند تا الگوها را بهتر درک کند و 718 | پاسخهای دقیقتری تولید کند.
719 | 720 | 721 |مثال پرامپت چند-شات:
722 | 723 |

726 | System، Context و Role Prompting همگی تکنیکهایی هستند که برای هدایت نحوه تولید متن توسط مدلهای 727 | زبانی بزرگ (LLMs) استفاده میشوند، اما هر کدام روی جنبههای متفاوتی تمرکز دارند: 728 |
729 |730 |
-
731 |
- 732 | System Prompting: 733 | این تکنیک، کانتکس کلی و هدف اصلی را برای مدل زبانی مشخص میکند. به زبان ساده، مثل این است که 734 | به مدل بگوییم «قراره چی کار کنی». مثلاً بهش میگیم که باید یک متن رو ترجمه کنه، یا یک نظر رو 735 | دستهبندی کنه. این یه تصویر بزرگ از وظیفه مدل بهش میده. 736 | 737 |
- 738 | Contextual Prompting: 739 | این تکنیک، جزئیات خاص یا اطلاعات پسزمینهای رو که به موضوع یا وظیفه فعلی مربوط میشه، به 740 | مدل میده. مثلاً اگه ازش سوالی پرسیده بشه، این اطلاعات به مدل کمک میکنه بفهمه دقیقاً چی 741 | خواسته شده و جوابش رو بر اساس اون تنظیم کنه. 742 | 743 |
- 744 | Role Prompting: 745 | اینجا به مدل یک شخصیت یا هویت خاص میدیم که طبق اون رفتار کنه. مثلاً میگیم «تو یه معلم 746 | هستی» یا «مثل یه دوست حرف بزن». این کار باعث میشه جوابهایی که مدل میده، با اون نقش و دانش 747 | و رفتاری که براش تعریف کردیم، همخونی داشته باشه. 748 | 749 |
751 | شباهتها و تفاوتها بین System، Contextual و Role Prompting ممکنه همپوشانی زیادی وجود داشته 752 | باشه. مثلاً یه دستوری که به مدل یه نقش میده (مثل «تو یه مترجم باش»)، میتونه همزمان زمینهای هم 753 | داشته باشه (مثل «این متن رو از فارسی به انگلیسی ترجمه کن»). ولی هر کدوم یه هدف اصلی متفاوت دارن: 754 |
755 | 756 |پرامپت سیستمی (System Prompting)
760 |پرامپت سیستمی یک روش برای تنظیم رفتار کلی مدل است. این به شما اجازه میدهد تا به مدل بگویید چه 761 | نوع دستیاری باشد، چگونه پاسخ دهد، و چه محدودیتهایی داشته باشد.
762 |763 | در جدول ۳، یک پرامپت سیستمی (System Prompt) ارائه شده است که در آن، من اطلاعات بیشتری درباره 764 | نحوه بازگرداندن خروجی مشخص کردهام. 765 |
766 |767 | من پارامتر «دما» (Temperature) را برای دستیابی به سطح خلاقیت بالاتر، افزایش دادم و همچنین 768 | محدودیت توکن (Token Limit) بالاتری را تعیین کردم. 769 |
770 |771 | با این حال، به دلیل دستورالعمل واضحی که درباره نحوه ارائه خروجی داده بودم، مدل (علیرغم تنظیمات 772 | دما و توکن بالا که معمولاً باعث تولید متن بیشتر یا خلاقانهتر میشوند) متن اضافهای تولید نکرد و 773 | دقیقاً به فرمت درخواستی من پایبند ماند. 774 |
775 | 776 |مثال پرامپت سیستمی:
777 | 778 |
781 | پرامپتهای سیستمی (System Prompts) میتوانند برای تولید خروجیهایی که نیازمندیهای خاصی دارند، 782 | بسیار مفید باشند. 783 |
784 |785 | علت نامگذاری «پرامپت سیستمی» این است که در واقع شما دارید یک وظیفه یا دستورالعمل اضافی به سیستم 786 | (هوش مصنوعی) میدهید (علاوه بر درخواست اصلیتان). 787 |
788 |
789 | مثال:
790 |
791 | میتوانید از یک پرامپت سیستمی استفاده کنید تا یک قطعه کد (code snippet) تولید کند که با یک زبان
792 | برنامهنویسی خاص سازگار باشد.
793 | یا میتوانید از آن برای دریافت خروجی با یک ساختار مشخص استفاده کنید.
794 |
796 | به جدول ۴ نگاهی بیندازید؛ در آنجا من (با استفاده از پرامپت سیستمی) مشخص کردهام که خروجی را در 797 | قالب JSON دریافت کنم. 798 |
799 |
801 | 802 | دریافت خروجی به صورت آبجکتهای JSON از پرامپتهایی که داده استخراج میکنند، مزایای مشخصی دارد: 803 |
804 |805 | عدم نیاز به ساخت دستی JSON: در یک کاربرد واقعی (real-world application)، دیگر لازم نیست 806 | این فرمت JSON را به صورت دستی (پس از دریافت پاسخ از مدل) ایجاد کنید. مدل مستقیماً خروجی را با 807 | این ساختار تحویل میدهد. 808 |
809 |810 | دریافت داده مرتبشده: میتوانید دادهها را از همان ابتدا به صورت مرتبشده (sorted order) 811 | دریافت کنید. این ویژگی هنگام کار با دادههای تاریخ و زمان (datetime objects) بسیار کاربردی است، 812 | چون مرتبسازی آنها میتواند چالشبرانگیز باشد. 813 |
814 |815 | مهمترین مزیت: ساختارمند کردن و کاهش خطا: درخواست خروجی با فرمت JSON، مدل را مجبور به 816 | ایجاد یک ساختار مشخص میکند. این کار به طرز قابل توجهی پدیده توهمزایی یا تولید اطلاعات نادرست و 817 | بیاساس (Hallucinations) توسط مدل را محدود میسازد، زیرا مدل باید اطلاعات را دقیقاً در قالب 818 | کلیدها و مقادیر تعریفشده جای دهد. 819 |
820 |821 | کاربرد دیگر پرامپتهای سیستمی: ایمنی و کنترل محتوا 822 |
823 |824 | پرامپتهای سیستمی همچنین میتوانند برای کنترل ایمنی (Safety) و جلوگیری از تولید محتوای نامناسب 825 | یا سمی (Toxicity) بسیار مفید باشند. برای کنترل خروجی، کافی است یک خط دستورالعمل اضافی به پرامپت 826 | خود بیفزایید، مانند: 827 | «شما باید در پاسخ خود محترمانه باشید.» (You should be respectful in your answer.) 828 |
829 |پرامپت نقشدار (Role Prompting)
833 |در پرامپت نقشدار، از مدل میخواهید نقش خاصی را بپذیرد. این میتواند به تولید پاسخهای تخصصیتر و 834 | متمرکزتر کمک کند.
835 | 836 |837 | «تعیین نقش» یک روش در نوشتن پرامپت برای هوش مصنوعی است که در آن شما به مدل یک نقش مشخص میدهید 838 | (مثلاً میگویید "تو یک معلم هستی"). 839 |
840 |841 | این کار به مدل کمک میکند تا پاسخهای مرتبطتر و مفیدتری تولید کند، چون مدل میتواند جوابهایش 842 | را دقیقاً بر اساس نقشی که به او دادهاید، تنظیم کند و شکل دهد. 843 |
844 |845 | مثال: 846 | میتوانید به مدل هوش مصنوعی نقش یک ویراستار کتاب، یک معلم مهدکودک، یا یک سخنران انگیزشی را 847 | بدهید. 848 |
849 |850 | وقتی نقش مدل مشخص شد، میتوانید درخواستهایی به او بدهید که مختص همان نقش باشند. برای مثال، 851 | میتوانید از مدلی که نقش معلم را دارد بخواهید یک طرح درس بنویسد تا بعداً شما آن را بررسی کنید. 852 |
853 |854 | به جدول ۵ نگاهی بیندازید؛ در آنجا مدل نقش یک راهنمای سفر را ایفا میکند. 855 | 856 |
857 | 858 | 859 |
863 | مثال بالا نمونهای از ایفای نقش یک کارمند آژانس مسافرتی توسط مدل هوش مصنوعی را نشان میدهد. اگر 864 | شما همین نقش را به «معلم جغرافیا» تغییر دهید، متوجه خواهید شد که پاسخ کاملاً متفاوتی دریافت 865 | میکنید. 866 |
867 |868 | تعریف یک دیدگاهِ نقشمحور برای مدل هوش مصنوعی، مانند ارائه یک الگو (blueprint) به آن است. این 869 | الگو مشخص میکند که شما چه لحن، سبک و تخصص متمرکزی را از مدل انتظار دارید. 870 |
871 |872 | در نتیجه، این کار به بهبود کیفیت، مرتبط بودن (relevance) و اثربخشی (effectiveness) خروجی نهایی 873 | شما کمک میکند. 874 |
875 |
878 | در ادامه چند سبک نوشتاری آورده شده که به نظر من مؤثر هستند و میتوانید از آنها استفاده کنید: 879 | 880 |
881 |882 |
-
883 |
- 884 | چالشی (Confrontational): کمی تند و مستقیم، برای به چالش کشیدن. 885 | 886 |
- 887 | توصیفی (Descriptive): با جزئیات زیاد و تصویرسازی. 888 | 889 |
- 890 | 891 | مستقیم (Direct): بدون حاشیه و سر اصل مطلب. 892 | 893 |
- 894 | 895 | رسمی (Formal): با ادبیات و ساختار رسمی. 896 | 897 |
- 898 | 899 | طنزآمیز (Humorous): شوخطبعانه و با چاشنی خنده. 900 | 901 |
- 902 | 903 | تأثیرگذار (Influential): برای اثرگذاری بر مخاطب. 904 | 905 |
- 906 | 907 | غیررسمی (Informal): دوستانه و خودمانی. 908 | 909 |
- 910 | 911 | الهامبخش (Inspirational): برای ایجاد انگیزه و امید. 912 | 913 |
- 914 | 915 | متقاعدکننده (Persuasive): برای قانع کردن مخاطب. 916 | 917 |
حالا بیایید درخواست (پرامپت) خودمان در جدول ۶ را تغییر دهیم تا سبکی طنزآمیز و الهامبخش داشته 920 | باشد. 921 |
922 |
پرامپت کانتکسچوال (Contextual Prompting)
929 |پرامپت کانتکسچوال شامل ارائه اطلاعات زمینهای اضافی به مدل است تا به آن کمک کند پاسخهای دقیقتر 930 | و مرتبطتری تولید کند.
931 | 932 |مثال پرامپت Contextual:
933 | 934 | 935 |
پرامپت استپبک (Step-back Prompting)
941 |942 | پرامپت استپبک (Step-Back Prompting) یک تکنیک برای بهبود عملکرد مدلهای زبانی بزرگ (LLMs) است. 943 | در این روش، ابتدا به مدل یک سوال کلی مرتبط با وظیفه خاص داده میشود. سپس پاسخ این سوال کلی 944 | بهعنوان ورودی به یک درخواست بعدی برای انجام وظیفه خاص داده میشود. این گام به عقب به مدل اجازه 945 | میدهد تا دانش پسزمینه مرتبط و فرآیندهای استدلالی را فعال کند، قبل از اینکه بخواهد مسئله خاص را 946 | حل کند. 947 |
948 |949 | با در نظر گرفتن اصول کلی و زیربنایی، مدلهای زبانی میتوانند پاسخهایی دقیقتر و عمیقتر تولید 950 | کنند. پرامپت استپبک مدل را تشویق میکند تا بهصورت انتقادی فکر کند و دانش خودش را به روشهای 951 | جدید و خلاقانه به کار ببرد. این روش باعث میشود درخواست نهایی که وظیفه را انجام میدهد، از دانش 952 | بیشتری در پارامترهای مدل استفاده کند، در مقایسه با زمانی که مدل مستقیماً با یک درخواست خاص 953 | روبهرو میشود. 954 |
955 |956 | همچنین، این روش میتواند به کاهش سوگیریها در پاسخهای مدل کمک کند، چون بهجای تمرکز روی جزئیات 957 | خاص، روی اصول کلی متمرکز میشود. 958 |
959 |960 | مثالها برای درک بهتر 961 | برای فهم بهتر اینکه چطور پرامپت استپبک میتواند نتایج را بهبود بدهد، بیایم چند مثال رو بررسی 962 | کنیم. ابتدا یک درخواست سنتی (جدول 8) رو نگاه میکنیم و بعد اون رو با یک درخواست استپبک (جدول 9) 963 | مقایسه میکنیم. 964 |
965 | 966 |مثال پرامپت استپبک:
967 | 968 | 969 |
972 | وقتی دما (Temperature) رو روی 1 تنظیم میکنید، ممکنه برای یه خط داستانی کلی نوشتههای خلاقانهای 973 | به دست بیارید، ولی این نوشتهها معمولاً تصادفی و کلی هستند. 974 |
975 | 976 |
978 | آره، این موضوعات به نظر میرسه برای یه بازی ویدیویی اولشخص مناسب باشن. بیایم برگردیم به درخواست 979 | قبلی، ولی این بار پاسخ سوال استپبک رو بهعنوان زمینه (Context) اضافه کنیم و ببینیم چی 980 | برمیگردونه 981 |
982 |
984 | این شبیه یه بازی ویدیویی جالب به نظر میرسه! با استفاده از تکنیکهای درخواستنویسی استپبک 985 | میتونید دقت درخواستهاتون رو بالاتر ببرید 986 |
987 |زنجیره تفکر (Chain of Thought)
991 |992 | زنجیره تفکر (CoT) تکنیکی است که توانایی استدلال مدلهای زبانی بزرگ (LLMs) را با تولید گامهای 993 | استدلالی میانی بهبود میدهد. این روش به مدل کمک میکند تا پاسخهای دقیقتری تولید کند. میتوانید 994 | CoT را با پرامپت Few-Shot ترکیب کنید تا در وظایف پیچیدهتر که نیاز به استدلال قبل از پاسخ دارند، 995 | نتایج بهتری بگیرید. 996 |
997 |مزایای CoT:
998 | 999 |-
1000 |
- 1001 | تلاش کم، تأثیر زیاد: این روش خیلی مؤثره و نیازی به تنظیم دقیق (Finetuning) مدل ندارد، یعنی 1002 | با مدلهای آماده (Off-the-Shelf LLMs) بهخوبی کار میکند. 1003 | 1004 |
- 1005 | شفافیت و تفسیرپذیری: با CoT میتوانید از پاسخهای مدل یاد بگیرید و گامهای استدلالی که دنبال 1006 | کرده را ببینید. اگه مشکلی پیش بیاد، میتونید اون رو پیدا کنید. 1007 | 1008 |
- 1009 | 1010 | پایداری بین نسخهها: به نظر میرسد CoT باعث میشود وقتی از نسخههای مختلف مدلهای زبانی 1011 | استفاده میکنید، عملکرد درخواست شما کمتر تغییر کند. یعنی درخواستهایی که از زنجیره تفکر 1012 | استفاده میکنند، نسبت به درخواستهای بدون استدلال، بین مدلهای مختلف پایداری بیشتری دارند. 1013 | 1014 |
1016 | البته معایبی هم وجود دارد که تا حدی قابل پیشبینی هستند.
1017 | 1018 |معایب زنجیره تفکر
1019 |پاسخ مدل شامل گامهای استدلالی زنجیره تفکر است، که یعنی توکنهای خروجی بیشتری تولید میشود. این 1020 | باعث میشود هزینه پیشبینیها بیشتر بشه و زمان بیشتری طول بکشه.
1021 |1022 | برای توضیح مثال در جدول 11، ابتدا بیایم یه درخواست بدون استفاده از CoT بنویسیم تا نقاط ضعف یک 1023 | مدل زبانی بزرگ رو نشون بدیم. 1024 |
1025 | 1026 |مثال زنجیره تفکر:
1027 | 1028 | 1029 |
1032 | خوب، این جواب کاملاً اشتباهه! 1033 | واقعیت اینه که مدلهای زبانی بزرگ (LLMs) اغلب توی کارهای ریاضی به مشکل میخورن و ممکنه حتی برای 1034 | یه کار ساده مثل ضرب دو تا عدد، جواب اشتباه بدن. دلیلش اینه که این مدلها روی حجم زیادی از متن 1035 | آموزش دیدن و ریاضیات ممکنه نیاز به یه روش متفاوت داشته باشه. حالا بیایم ببینیم اگه از گامهای 1036 | استدلالی میانی استفاده کنیم، آیا خروجی بهتر میشه یا نه. 1037 |
1038 |
1041 | خوبه، حالا جواب نهایی درسته! 1042 | این اتفاق افتاد چون ما به مدل دستور واضح دادیم که هر گام رو توضیح بده، به جای اینکه فقط یه جواب 1043 | بده. جالبه که مدل 17 سال افزایش رو جمع کرد. اگه من بودم، توی ذهنم فاصله سالها بین خودم و 1044 | پارتنرم رو حساب میکردم و بعد جمعشون میکردم، مثلاً (20+(9-3)). بیایم به مدل کمک کنیم یه کم شبیه 1045 | من فکر کنه! 1046 |
1047 |1048 | جدول 12 یه نمونه از زنجیره تفکر بدون نمونه (Zero-Shot CoT) هست. زنجیره تفکر وقتی با تکنمونه 1049 | (Single-Shot) یا چندنمونه (Few-Shot) ترکیب بشه، خیلی قدرتمند میشه، همونطور که توی جدول 13 1050 | میتونید ببینید. 1051 |
1052 |
1055 | زنجیره تفکر برای کارهای مختلفی مفیده. چند مثال: 1056 |
1057 |-
1058 |
- 1059 | تولید کد (Code Generation): میتونید درخواست رو به چند گام تقسیم کنید و هر گام رو به خطوط 1060 | خاصی از کد مرتبط کنید. 1061 | 1062 |
- 1063 | 1064 | ایجاد داده مصنوعی (Synthetic Data): مثلاً وقتی یه نقطه شروع دارید، مثل «محصول اسمش XYZ هست، 1065 | یه توضیح بنویس و مدل رو از فرضیاتی که بر اساس اسم محصول میکنی، هدایت کن.» 1066 | 1067 |
- 1068 | 1069 | به طور کلی، هر کاری که بشه با صحبت کردن و توضیح دادن حلش کرد، کاندیدای خوبی برای زنجیره 1070 | تفکره. اگه بتونید گامهای حل مسئله رو توضیح بدید، زنجیره تفکر رو امتحان کنید! 1071 | 1072 | 1073 |
خودسازگاری (Self-consistency)
1079 |خودسازگاری یک تکنیک است که در آن از مدل خواسته میشود چندین مسیر استدلال را برای یک مسئله در نظر 1080 | بگیرد و سپس پاسخی را انتخاب کند که بیشترین سازگاری را دارد.
1081 | 1082 |1083 | گرچه مدلهای زبانی بزرگ (LLMs) در وظایف مختلف پردازش زبان طبیعی (NLP) موفقیتهای چشمگیری 1084 | داشتهاند، اما توانایی آنها در استدلال اغلب بهعنوان یک محدودیت شناخته میشود که فقط با بزرگتر 1085 | کردن اندازه مدل حل نمیشود. همونطور که در بخش قبلی درباره زنجیره تفکر (Chain of Thought - CoT) 1086 | یاد گرفتیم، میشه به مدل دستور داد که مثل یه انسان، گامهای استدلالی رو برای حل مسئله تولید کنه. 1087 | اما CoT از یه روش ساده به اسم رمزگشایی حریصانه (Greedy Decoding) استفاده میکنه که اثرگذاریش رو 1088 | محدود میکنه. 1089 |
1090 |1091 | خود-سازگاری (Self-Consistency) یه روش پیشرفتهست که نمونهبرداری (Sampling) و رأیگیری اکثریت 1092 | (Majority Voting) رو ترکیب میکنه تا مسیرهای استدلالی متنوعی تولید کنه و پاسخی که بیشترین 1093 | سازگاری رو داره انتخاب کنه. این روش دقت و انسجام پاسخهای تولیدشده توسط مدلهای زبانی رو بهبود 1094 | میده. خود-سازگاری یه جور احتمال شبهتصادفی (Pseudo-Probability) برای درست بودن یه پاسخ ارائه 1095 | میده، ولی خب، هزینههای بالایی هم داره. 1096 |
1097 | 1098 | مراحل خود-سازگاری 1099 |-
1100 |
- 1101 | تولید مسیرهای استدلالی متنوع: 1102 | همون درخواست (Prompt) چندین بار به مدل داده میشه. تنظیم دمای بالا (High Temperature) باعث 1103 | میشه مدل مسیرهای استدلالی و دیدگاههای متفاوتی برای 1104 | مسئله تولید کنه. 1105 | 1106 |
- 1107 | 1108 | استخراج پاسخ از هر خروجی: 1109 | از هر پاسخ تولیدشده، جواب نهایی جدا میشه. 1110 | 1111 |
- 1112 | 1113 | انتخاب شایعترین پاسخ: 1114 | پاسخی که بیشترین تکرار رو داره، بهعنوان جواب نهایی انتخاب میش 1115 | 1116 |
مثال: سیستم طبقهبندی ایمیل
1119 |
1120 | بیایم یه مثال از یه سیستم طبقهبندی ایمیل ببینیم که ایمیلها رو به دو دسته مهم (IMPORTANT) یا
1121 | غیرمهم (NOT IMPORTANT) تقسیم میکنه. یه درخواست زنجیره تفکر بدون نمونه (Zero-Shot CoT) چندین بار
1122 | به مدل فرستاده میشه تا ببینیم آیا پاسخها بعد از هر بار ارسال فرق میکنن یا نه. توجه کنید به
1123 | لحن دوستانه، انتخاب کلمات و کنایه (Sarcasm) که توی ایمیل استفاده شده. همه اینها ممکنه مدل زبانی
1124 | رو گمراه کنن!
1125 |
مثال خودسازگاری:
1128 | 1129 |


درخت تفکرات (Tree of Thoughts)
1137 |درخت تفکرات (ToT) یک توسعه از زنجیره تفکر است که به مدل اجازه میدهد چندین مسیر استدلال را کاوش 1138 | کند و مسیرهای غیرامیدوارکننده را هرس کند.
1139 | 1140 |1141 | حالا که با روشهای «زنجیره افکار» (Chain of Thought - CoT) و «خودسازگاری» (Self-Consistency) 1142 | آشنا شدیم، بیایید نگاهی به «درخت افکار» (Tree of Thoughts - ToT) بیندازیم. 1143 |
1144 |1145 | این روش (ToT)، مفهوم روش CoT را تعمیم میدهد (Generalizes)، زیرا به مدلهای زبانی بزرگ (LLMها) 1146 | اجازه میدهد تا مسیرهای استدلالی مختلف و متعددی را به طور همزمان کاوش کنند، به جای اینکه فقط یک 1147 | «زنجیره افکار» خطی و واحد را دنبال کنند. این موضوع در شکل ۱ نمایش داده شده است. 1148 |
1149 | 1150 |
1153 | این رویکرد باعث میشود ToT بهویژه برای وظایف پیچیدهای که نیازمند کاوش (Exploration) هستند، 1154 | بسیار مناسب باشد. سازوکار آن مبتنی بر نگهداری یک «درخت از افکار» است، که در آن هر «فکر» 1155 | (Thought) نشاندهنده یک دنباله زبانی منسجم است که به عنوان یک گام میانی در مسیر حل یک مسئله عمل 1156 | میکند. سپس مدل میتواند با انشعاب گرفتن (Branching out) از گرههای (Nodes) مختلف در این درخت، 1157 | مسیرهای استدلالی مختلف را کاوش کند. 1158 |
1159 | 1160 |ReAct (Reason & Act)
1164 | 1165 |1166 | پرامپت ReAct یک پارادایم جدید در مدلهای زبانی بزرگ (LLMs) هست که به آنها کمک میکند وظایف 1167 | پیچیده را با استفاده از استدلال به زبان طبیعی (natural language) و ترکیب آن با ابزارهای خارجی 1168 | (مثل جستجو، code interpreter و غیره) حل کنند. این روش به مدل اجازه میدهد کارهایی مثل تعامل با 1169 | APIها برای دریافت اطلاعات انجام دهد، که گامی اولیه به سمت مدلسازی ایجنت (Agent Modeling) محسوب 1170 | میشود. 1171 | 1172 |
1173 |1174 | در ReAct از نحوه عملکرد انسانها در دنیای واقعی تقلید میشود؛ ما هم بهصورت کلامی استدلال 1175 | میکنیم و برای بهدست آوردن اطلاعات، اقداماتی انجام میدهیم. ReAct در مقایسه با دیگر روشهای 1176 | Prompt Engineering در حوزههای مختلف عملکرد خوبی دارد. 1177 |
1178 |1179 | نحوه کار ReAct، با ترکیب استدلال و عمل در یک حلقه فکر-عمل (thought-action) کار میکند: 1180 |
1181 |1182 | ابتدا مدل درباره مسئله استدلال میکند و یک طرح عملی تولید میکند. سپس اقدامات موجود در طرح را 1183 | اجرا میکند و نتایج را مشاهده میکند. مدل از این مشاهدات برای بهروزرسانی استدلالش استفاده 1184 | میکند و یک طرح عملی جدید میسازد. این فرآیند ادامه پیدا میکند تا مدل به راهحل مسئله برسد. 1185 |
1186 |1187 | آزمایش ReAct در عمل 1188 |
1189 |1190 | 1191 | برای دیدن این روش در عمل، باید کدی بنویسید. در قطعه کد شماره 1، در اینجا از فریمورک LangChain 1192 | در زبان پایتون به همراه VertexAI (از بسته google-cloud-aiplatform) و بسته google-search-results 1193 | استفاده شده. 1194 | 1195 |
1196 |1197 | برای اجرای این نمونه، باید یک کلید SerpAPI رایگان از آدرس https://serpapi.com/manage-api-key بسازید و متغیر محیطی SERPAPI_API_KEY 1200 | را تنظیم کنید 1201 |
1202 |مثال واکنش:
1203 |
1206 | حالا بیایم یه کد پایتون بنویسیم که وظیفهای برای مدل زبانی بزرگ (LLM) تعریف کنه: 1207 | اعضای گروه متالیکا چندتا بچه دارند؟ 1208 |
1209 |
1211 |
1212 | توضیح قطعه کد شماره 2
1213 |
1214 | قطعه کد شماره 2 نتیجه رو نشون میده. توجه کنید که ReAct یه زنجیره از پنج جستجو انجام میده.
1215 | درواقع، مدل زبانی نتایج جستجوی گوگل رو بررسی میکنه تا اسامی اعضای گروه رو پیدا کنه. بعد، نتایج
1216 | رو بهعنوان مشاهدات فهرست میکنه و استدلالش رو برای جستجوی بعدی ادامه میده.
1217 |
1218 | در این کد، مدل متوجه میشه که گروه متالیکا چهار عضو داره. بعد، برای هر عضو گروه جستجو میکنه تا
1219 | تعداد بچههاشون رو پیدا کنه و همه رو جمع میزنه. در نهایت، تعداد کل بچهها رو بهعنوان پاسخ
1220 | نهایی برمیگردونه.
1221 |
5. پرامپت برای کدنویسی
1227 |مدلهای زبانی بزرگ (LLM) میتوانند در نوشتن، توضیح، ترجمه و اشکالزدایی کد کمک کنند. در این بخش، 1228 | تکنیکهای پرامپت مختلف برای کار با کد را بررسی میکنیم.
1229 | 1230 | 1231 |1232 | مدل هوش مصنوعی Gemini عمدتاً روی درخواستهای متنی (پرامپتها) تمرکز دارد، و این شامل نوشتن 1233 | درخواستهایی برای دریافت کد هم میشود. بیایید به محیط Vertex AI Studio برویم و این نوع درخواستها را 1234 | امتحان کنیم تا چند مثال کدنویسی ببینیم. 1235 |
1236 | 1237 |نوشتن کد
1239 |هنگام درخواست از LLM برای نوشتن کد، ارائه دستورالعملهای واضح و مشخص کردن زبان برنامهنویسی مورد 1240 | نظر مهم است.
1241 |1242 | Gemini میتواند نقش یک برنامهنویس را هم برای شما ایفا کند و به شما کمک کند تا با هر زبان 1243 | برنامهنویسی دلخواهتان کد بنویسید. این کار به شما به عنوان یک برنامهنویس کمک میکند تا فرآیند 1244 | کدنویسی را سرعت ببخشید. 1245 |
1246 | مثال: 1247 | 1248 |1249 | تصور کنید پوشهای روی سیستم خود دارید که صدها فایل داخل آن نیاز به تغییر نام دارند. تغییر نام 1250 | تکتک فایلها زمان زیادی از شما خواهد گرفت. شاید کمی دستورات Bash (یک زبان فرمان در سیستمهای 1251 | لینوکس/مک) بلد باشید و بتوانید یک اسکریپت (برنامه کوچک) برای خودکارسازی این کار بنویسید، اما 1252 | نوشتن آن هم ممکن است زمانبر باشد. 1253 |
1254 |1255 | راهحل: بیایید یک پرامپت (دستور) برای هوش مصنوعی بنویسیم. 1256 |
1257 |1258 | میتوانید این پرامپت را در چتبات عمومی Gemini (نسخهای که برای همه در دسترس است) بنویسید. 1259 |
1260 |1261 | یا اگر نگران محرمانه بودن اطلاعات خود هستید (مثلاً نمیخواهید کد یا اطلاعاتتان عمومی شود)، 1262 | میتوانید این پرامپتها را داخل حساب Google Cloud خود و با استفاده از Vertex AI Studio بنویسید. 1263 |
1264 | مزیت استفاده از Vertex AI Studio چیست؟ 1265 | در Vertex AI Studio شما کنترل بیشتری دارید و میتوانید تنظیماتی مانند "دما" (Temperature) - که روی 1266 | خلاقیت و تنوع پاسخ مدل تأثیر میگذارد - و موارد دیگر را خودتان مشخص کنید. 1267 | 1268 | 1269 |
1273 | به نظر من کد خوبی است - حتی توضیحات (Documentation) هم دارد! اما، از آنجایی که مدلهای هوش 1274 | مصنوعی (LLMها) واقعاً قدرت استدلال یا فکر کردن ندارند و ممکن است صرفاً دادههایی که با آنها 1275 | آموزش دیدهاند را تکرار کنند، خیلی ضروری است که قبل از استفاده، حتماً کد را خودتان بخوانید و 1276 | آزمایش (تست) کنید. 1277 |
1278 |1279 | و حالا لحظهای که همه منتظرش بودیم: آیا واقعاً کار میکند؟ 1280 |
1281 |1282 | 1283 | بیایید اول آن را روی یک پوشه آزمایشی (test folder) که فقط چند فایل داخلش دارد امتحان کنیم. هدف 1284 | این است که اسم فایلها از filename.txt به draft_filename.txt تغییر کند. 1285 |
1286 |1287 | 1288 | کدی که از جدول ۱۶ گرفتید را کپی کنید (فقط خودِ کد، بدون آن بخشهای bash که اول و آخرش برای مشخص 1289 | کردن زبان کد است) و آن را در یک فایل جدید به نام rename_files.sh ذخیره کنید (Paste کنید). 1290 | 1291 | یک پنجره ترمینال (خط فرمان) باز کنید و دستور زیر را تایپ کنید تا اسکریپت اجرا شود: . 1292 | rename_files.sh 1293 | 1294 | بعد از زدن این دستور، از شما اسم پوشه را میپرسد (مثلاً اسم همان پوشه آزمایشیتان، که در مثال ما 1295 | test است). اسم را وارد کرده و دکمه Enter را بزنید. 1296 |
1297 |1298 | 1299 | به نظر میرسد اسکریپت بدون مشکل اجرا میشود. شما باید پیامی شبیه این ببینید: «فایلها با موفقیت 1300 | تغییر نام یافتند» (Files renamed successfully). 1301 | 1302 | حالا اگر داخل پوشه آزمایشی (test) را نگاه کنید، متوجه میشوید که اسم همه فایلها دقیقاً به 1303 | draft_filename.txt تغییر کرده است. 1304 |
1305 |1306 | 1307 | جواب داد! (کار کرد!) 1308 |
1309 | 1310 |یک مثال دیگه برای وظایف پیچیدهتر، میتوانید جزئیات بیشتری ارائه دهید:
1311 | 1312 |Create a Python class for a Bank Account with the following features:
1313 | 1. Initialize with account holder name and starting balance
1314 | 2. Methods for deposit and withdrawal
1315 | 3. A method to calculate interest (assume 2% annual interest)
1316 | 4. Error handling for insufficient funds
1317 | 5. A method to display the current balance and account details
1318 |
1319 | Use proper documentation and follow PEP 8 style guidelines.
1320 | توضیح کد
1324 |LLMها میتوانند در توضیح کد موجود کمک کنند، که برای یادگیری یا مستندسازی مفید است.
1325 | 1326 |1327 | به عنوان یک برنامهنویس، وقتی در یک تیم کار میکنید، اغلب پیش میآید که مجبور شوید کد نوشته شده 1328 | توسط شخص دیگری را بخوانید و بفهمید. هوش مصنوعی Gemini میتواند در این کار هم به شما کمک کند. 1329 |
1330 |1331 | 1332 | بیایید همان کدی که در جدول ۱۶ (به عنوان خروجی) داشتیم را برداریم، توضیحات (کامنتهای) داخل کد را 1333 | حذف کنیم و سپس از مدل زبانی بزرگ (LLM) بخواهیم توضیح دهد که این کد دقیقاً چه کاری انجام میدهد. 1334 | نتیجه این کار را در جدول ۱۷ میتوانید ببینید. 1335 |
1336 | 1337 | 1338 |

ترجمه کد
1345 |LLMها میتوانند کد را از یک زبان برنامهنویسی به زبان دیگر ترجمه کنند.
1346 | 1347 |1348 | کد Bash که در جدول ۱۶ دیدیم، به نظر میرسد به خوبی کار میکند. اما، این اسکریپت اگر میتوانست 1349 | نام فایلها را از کاربر بپرسد (ورودی بگیرد)، خیلی کاربردیتر (قابل استفاده مجددتر) میشد. در 1350 | حالت ایدهآل، بهتر بود که این قابلیت به صورت یک برنامه (اپلیکیشن) جداگانه همراه با یک رابط 1351 | کاربری (UI) پیادهسازی شود. 1352 |
1353 |1354 | به عنوان یک نقطه شروع (قدم اول)، زبان پایتون برای ساخت چنین اپلیکیشنی (بهویژه اپلیکیشن تحت وب)، 1355 | گزینه مناسبتری نسبت به Bash محسوب میشود. 1356 | 1357 | خبر خوب این است که مدلهای زبانی بزرگ (LLMها) میتوانند در ترجمه کد از یک زبان برنامهنویسی به 1358 | زبان دیگر کمک کنند. 1359 |
1360 | نمونهای از این کار را در جدول ۱۸ ببینید: 1361 | 1362 | 1363 |

1367 | کد را بخوانید و بررسی کنید. 1368 | 1369 | خروجی (کدی) که از پرامپت دریافت کردید را کپی کنید و آن را در یک فایل جدید به نام file_renamer.py 1370 | ذخیره (Paste) کنید. 1371 |
1372 |
1373 | برای تست کردن کد، یک پنجره ترمینال (خط فرمان) باز کنید و دستور زیر را اجرا کنید:
1374 |
1375 |
1376 | python file_renamer.py
1377 |
1378 |
اشکالزدایی و بررسی کد
1393 |LLMها میتوانند در شناسایی و رفع اشکالات در کد کمک کنند.
1394 | 1395 |1396 | حالا بیایید خودمان به صورت دستی، کمی کد جدول ۱۸ را ویرایش کنیم. هدف این است که کد از کاربر 1397 | پیشوند نام فایل (filename prefix) را بپرسد (دریافت کند) و سپس این پیشوند را با حروف بزرگ (upper 1398 | case) بنویسد (یا بهتر است بگوییم، تبدیل کند). 1399 |
1400 |1401 | نمونه کد ویرایش شده را در *قطعه کد ۳ (Snippet 3) ببینید. 1402 | 1403 | اما ای بابا... انگار کد حالا خطاهای پایتون (Python errors) میدهد! (یعنی موقع اجرا با مشکل مواجه 1404 | میشود). 1405 |
1406 | 1407 |مثال پرامپت برای اشکالزدایی کد:
1408 | 1409 |
بنظر میاد باگ داره، بریم از LLM کمک بگیریم که کد رو Review و دیباگ کنه:
1412 | 1413 |



1418 | عالی شد! 1419 | مدل نه تنها بهم گفت که چطور مشکلی که پیش آمده بود را حل کنم، بلکه خودش فهمید که کدم اشکالات 1420 | (باگهای) بیشتری هم دارد و راه حل آنها را هم ارائه داد. 1421 |
1422 |1423 | علاوه بر این، در بخش آخر پاسخش، پیشنهادهایی هم برای بهبود کلی کد مطرح کرد (یعنی گفت چطور 1424 | میتوانم کد را بهتر و کارآمدتر کنم). 1425 | 1426 |
1427 |1428 | خب، پرامپت چندوجهی (Multimodal Prompting) چیست؟ 1429 |
1430 | 1431 |1432 | یادتان باشد که برای درخواست کد (Code Prompting)، ما هنوز از همان مدلهای زبانی بزرگ معمولی 1433 | استفاده میکنیم (که اساساً با متن کار میکنند). 1434 |
1435 |1436 | اما پرامپت چندوجهی یک موضوع جداگانه است. این به روشی اشاره دارد که در آن شما از چند نوع ورودی 1437 | مختلف (مثل متن، عکس، صدا و...) برای راهنمایی یک مدل زبانی بزرگ استفاده میکنید، به جای اینکه فقط 1438 | به متن تکیه کنید. 1439 |
1440 |1441 | این ورودیها میتوانند ترکیبی از موارد زیر باشند: 1442 |
1443 |1444 | متن 1445 | ، 1446 | تصویر (عکس) 1447 | ، 1448 | صدا (فایل صوتی) 1449 | ، 1450 | کد 1451 | و 1452 | یا حتی فرمتهای دیگر 1453 |
1454 |1455 | البته اینکه چه ترکیبهایی ممکن است و مدل میتواند از آنها استفاده کند، بستگی به تواناییهای 1456 | خودِ آن مدل و کاری که میخواهید انجام دهید دارد. 1457 | 1458 |
1459 |6. بهترین شیوههای مهندسی پرامپت 1464 | Best Practices 1465 |
1466 |در این بخش، بهترین شیوهها و نکات کاربردی برای مهندسی پرامپت موثر را بررسی میکنیم.
1467 | 1468 |ارائه مثالها
1470 |مهمترین روش ارايه مثال هست (تک-شات و چند-شات) با پرامپت هست
1471 |ارائه مثالهای واضح میتواند به مدل کمک کند تا الگوها را بهتر درک کند و پاسخهای دقیقتری تولید 1472 | کند. مثال بسیار بهینه هست چون شبیه یک ابزار آموزشی برای مدل عمل میکند.
1473 | 1474 |نکته: برای وظایف پیچیده، از پرامپت چند-شات با مثالهای متنوع استفاده کنید.
1475 | 1476 |Translate the following English phrases to French:
1477 |
1478 | English: Hello, how are you?
1479 | French: Bonjour, comment allez-vous?
1480 |
1481 | English: I would like to order a coffee, please.
1482 | French: Je voudrais commander un café, s'il vous plaît.
1483 |
1484 | English: Where is the nearest train station?
1485 | French:
1486 |
1487 | طراحی با سادگی
1489 |پرامپتهای ساده و مستقیم اغلب بهترین نتایج را تولید میکنند. از زبان پیچیده یا دستورالعملهای 1490 | مبهم خودداری کنید.
1491 |اگر پرامپت برای خود شما هم گنگ هست، مطمعن باشید برای مدل هم نامفهوم است.
1492 | 1493 |
1496 | در نوشتن پرامپ از افعال شبیه زیر میتوانید استفاده کنید: 1497 |
1498 |1499 | 1500 | Act, Analyze, Categorize, Classify, Contrast, Compare, Create, Describe, Define, 1501 | Evaluate, Extract, Find, Generate, Identify, List, Measure, Organize, Parse, Pick, 1502 | Predict, Provide, Rank, Recommend, Return, Retrieve, Rewrite, Select, Show, Sort, 1503 | Summarize, Translate, Write. 1504 | 1505 |
1506 |مشخص کردن خروجی
1510 |1511 | خروجی مورد نظرتان را به وضوح مشخص کنید. یک دستور مختصر ممکن است نتواند LLM را به اندازه کافی 1512 | راهنمایی کند و ممکن است خیلی کلی باشد. 1513 |
1514 |
1522 | استفاده از دستورالعملها به جای محدودیتها
1523 |به جای گفتن اینکه مدل چه کاری نکند، به آن بگویید چه کاری انجام دهد.
1524 |در پرامپت (Prompting) برای هدایت خروجی یک مدل زبانی بزرگ (LLM)، از دستورات و محدودیتها 1525 | استفاده میکنیم. این دو ابزار به ما کمک میکنند تا پاسخ مدل را به شکلی که میخواهیم شکل 1526 | دهیم. در ادامه، این مفاهیم را به زبان ساده و قابل فهم توضیح میدهم:
1527 | 1528 |دستورات (Instruction) چیست؟
1529 |دستورات، راهنماییهای مشخص و واضحی هستند که به مدل میگویند پاسخش چه شکل، سبک یا محتوایی باید 1530 | داشته باشد. به عبارت دیگر، دستورات به مدل میگویند که چه کاری انجام دهد یا چه چیزی تولید 1531 | کند.
1532 |مثال: «پاسخ را به صورت یک پاراگراف کوتاه بنویس.»
این نوع راهنمایی به مدل کمک میکند تا
1533 | دقیقاً بفهمد چه انتظاری از آن داریم و کارش را در مسیر درست پیش ببرد.
محدودیتها (Constraint) چیست؟
1536 |محدودیتها، قوانینی هستند که مشخص میکنند مدل چه کاری نباید انجام دهد یا از چه چیزی باید دوری 1537 | کند. اینها مثل خطوط قرمزی هستند که پاسخ مدل باید درون آنها بماند.
1538 |مثال: «از کلمات پیچیده و فنی استفاده نکن.»
محدودیتها کمک میکنند تا خروجی مدل در چارچوب
1539 | مشخص و قابل قبولی بماند.
چرا دستورات بهتر از محدودیتها هستند؟
1542 |تحقیقات جدید نشان میدهد که استفاده از دستورات مثبت معمولاً بهتر از تکیه زیاد بر محدودیتها 1543 | جواب میدهد. این موضوع شبیه به رفتار خود ما آدمهاست؛ ما هم راهنماییهای مثبت را بیشتر از 1544 | لیست بلندبالای «این کار را نکن» دوست داریم.
1545 | 1546 |دلیل بهتر بودن دستورات:
1547 |-
1548 |
- دستورات بهطور مستقیم به مدل میگویند که چه نتیجهای میخواهیم 1549 |
- امکان خلاقیت بیشتر در چارچوب مشخص 1550 |
- جلوگیری از سردرگمی مدل 1551 |
مشکلات محدودیتها:
1554 |-
1555 |
- امکان ایجاد سردرگمی در مدل 1556 |
- کاهش خلاقیت 1557 |
- احتمال ایجاد تناقض بین محدودیتها 1558 |
کی از محدودیتها استفاده کنیم؟
1561 |با اینکه دستورات مثبت بهتر هستند، محدودیتها هم در جاهایی به کار میآیند:
1562 |-
1563 |
- جلوگیری از تولید محتوای مضر یا اشتباه 1564 |
- نیاز به قالب/سبک خاص (مثلاً محدودیت تعداد کلمات) 1565 |
نکته مهم: چطور بهتر درخواست بنویسیم؟
1568 |هر وقت میشود، از دستورات مثبت استفاده کنید. به جای اینکه به مدل بگویید چه کاری نکند، بگویید 1569 | چه کاری بکند. این کار سردرگمی را کم میکند و باعث میشود پاسخ دقیقتر و بهتر باشد.
1570 |مثال: به جای «مبهم نباش»، بگویید «جزئیات واضح و مشخص بده.»
این تغییر ساده باعث میشود مدل
1571 | بهتر بفهمد و نتیجه بهتری بدهد.
بهترین روش چیست؟
1574 |-
1575 |
- اول با دستورات شروع کنید 1576 |
- فقط در صورت نیاز از محدودیتها استفاده کنید 1577 |
- ترکیبهای مختلف را آزمایش کنید 1578 |
- نتایج را مستندسازی کنید 1579 |

کنترل طول توکن
1587 |برای کنترل طول پاسخ، محدودیتهای خاصی را مشخص کنید.
1588 |مثال:
1589 | 1590 |
استفاده از متغیرها در پرامپتها
1596 |1597 | برای استفاده دوباره از پرامپتها و پویاتر کردن آنها، از متغیرها در پرامپت استفاده کنید که 1598 | میتوانند برای ورودیهای مختلف تغییر کنند. برای مثال، همانطور که در جدول ۲۰ نشان داده شده، 1599 | پرامپتی که اطلاعاتی درباره یک شهر میدهد. به جای نوشتن ثابت نام شهر در پرامپت، از یک متغیر 1600 | استفاده کنید. متغیرها میتوانند با جلوگیری از تکرار، 1601 |
1602 |1603 | در زمان و تلاش شما صرفهجویی کنند. اگر نیاز دارید همان اطلاعات را در چند پرامپت استفاده 1604 | کنید، میتوانید آنها را در یک متغیر ذخیره کرده و سپس در هر پرامپت به آن متغیر اشاره کنید. 1605 | این کار وقتی پرامپتها را در برنامههای خودتان ادغام میکنید، بسیار منطقی است. 1606 |
1607 | 1608 |
آزمایش با فرمتهای ورودی و سبکهای نوشتاری
1617 |فرمتهای مختلف پرامپت را آزمایش کنید تا ببینید کدام یک بهترین نتایج را تولید میکند.
1618 | 1619 |1620 | 1621 | مدلهای هوش مصنوعی مختلف، تنظیماتشان، نوع درخواست (پرامپت)، کلماتی که انتخاب میکنید، و سبک 1622 | نوشتنتان، همگی روی جوابی که میگیرید تأثیر میگذارند و میتوانند نتایج متفاوتی ایجاد کنند. 1623 |
1624 |1625 | بنابراین، مهم است که با ویژگیهای مختلف درخواستتان آزمایش کنید؛ مانند: 1626 | سبک نوشتن (رسمی، دوستانه، ساده و...) 1627 | انتخاب کلمات (استفاده از مترادفها یا عبارات مختلف) 1628 | نوع درخواست (مثلاً اینکه درخواستتان سوالی باشد، یک جمله خبری باشد، یا یک دستورالعمل) 1629 |
1630 |1631 | مثال: 1632 | فرض کنید میخواهید مدل متنی درباره کنسول بازی انقلابی "سگا دریمکست" بنویسد. میتوانید 1633 | درخواستتان را به شکلهای مختلفی بنویسید، و هر کدام جواب متفاوتی خواهد داد: 1634 |
1635 |1636 | سوالی 1637 |
What was the Sega Dreamcast and why was it such a revolutionary console?
1638 | سگا دریمکست چه بود و چرا یک کنسول انقلابی محسوب میشد؟
1639 |
1640 | 1644 | خبری 1645 |
The Sega Dreamcast was a sixth-generation video game console released by Sega in 1999. It...
1646 | سگا دریمکست یک کنسول بازی نسل ششم بود که توسط سگا در سال ۱۹۹۹ منتشر شد. این کنسول...
1647 |
1648 |
1649 |
1650 |
1651 | 1652 | دستوری 1653 |
Write a single paragraph that describes the Sega Dreamcast console and explains why it was so revolutionary.
1654 | یک پاراگراف بنویس که کنسول سگا دریمکست را توصیف کند و توضیح دهد چرا اینقدر انقلابی بود.
1655 |
1656 |
1657 |
1658 |
1659 | 1664 | نکته مهم برای وظایف دستهبندی 1665 |
1666 |1667 | وقتی از چند مثال آموزشی استفاده میکنید، کلاسها (دستهها) را با هم ترکیب کنید. معمولاً 1668 | ترتیب مثالهای آموزشی (few-shot examples) که به مدل میدهید، نباید تأثیر زیادی داشته باشد. 1669 |
1670 |1671 | اما، وقتی کار شما دستهبندی است (مثلاً تشخیص ایمیل اسپم از غیر اسپم، یا دستهبندی نظرات 1672 | مشتریان به مثبت و منفی)، خیلی مهم است که کلاسهای مختلف پاسخ را در مثالهایتان مخلوط کنید. 1673 |
1674 |1675 | یعنی اگر مثالهایی برای کلاس "مثبت" و کلاس "منفی" دارید، آنها را یکی در میان یا با 1676 | ترتیبهای مختلف بیاورید، نه اینکه همهی مثالهای "مثبت" را پشت سر هم و بعد همهی مثالهای 1677 | "منفی" را بیاورید. 1678 |
1679 |1680 | چرا این کار مهم است؟ چون اگر این کار را نکنید، ممکن است مدل به جای یاد گرفتن ویژگیهای اصلی 1681 | هر کلاس، فقط ترتیب آمدن مثالها را یاد بگیرد. با ترکیب کردن کلاسها، مطمئن میشوید که مدل 1682 | یاد میگیرد چه چیزی واقعاً یک متن را "مثبت" یا "منفی" میکند، نه اینکه صرفاً ترتیب مثالها 1683 | را حفظ کند. 1684 | این کار باعث میشود مدل در مواجهه با دادههای جدید که قبلاً ندیده، عملکرد بهتر و قابل 1685 | اعتمادتری داشته باشد. 1686 |
1687 | یک راهنمایی: 1688 |1689 | معمولاً خوب است که با حدود ۶ مثال آموزشی شروع کنید و از همانجا دقت مدل را بسنجید و ببینید آیا 1690 | نیاز به تغییر یا مثالهای بیشتر دارید یا نه. 1691 |
1696 | کار با فرمتهای خروجی 1697 |
1698 |1699 | علاوهبر اینکه به فرمت ورودی پرامپت توجه میکنید، بهتره با فرمت خروجی هم آزمایش کنید. برای 1700 | کارهای غیرخلاقانه مثل استخراج، انتخاب، تجزیه، مرتبسازی، رتبهبندی یا دستهبندی دادهها، 1701 | بهتره خروجی رو به صورت ساختاریافته مثل JSON یا XML دریافت کنید. 1702 |
1703 |1704 | برگردوندن خروجی به شکل JSON برای کارهایی که نیاز به استخراج داده دارن چند تا مزیت داره. 1705 | مثلاً در دنیای واقعی، من لازم نیست خودم این فرمت JSON رو دستی بسازم؛ میتونم دادهها رو به 1706 | صورت مرتبشده دریافت کنم (که مخصوصاً برای کار با تاریخ و زمان خیلی مفیده). اما مهمتر از همه 1707 | اینه که وقتی از مدل میخوایم خروجی رو به صورت JSON بده، باعث میشه مدل ساختاری فکر کنه و 1708 | کمتر دچار "توهم" یا اشتباهات بیاساس بشه. 1709 |
1710 |1711 | خلاصهی مزایای استفاده از JSON برای خروجی: 1712 |
1713 |-
1714 |
- 1715 | همیشه خروجی رو با یک سبک و فرمت ثابت میگیرید 1716 | 1717 | 1718 |
- 1719 | تمرکز فقط روی دادههایی هست که شما میخواید 1720 | 1721 | 1722 |
- 1723 | احتمال اشتباه و خیالپردازی مدل کمتر میشه 1724 | 1725 | 1726 |
- 1727 | میتونید روابط بین دادهها رو مشخص کنید 1728 | 1729 | 1730 |
- 1731 | نوع دادهها (مثل عدد، متن، تاریخ) رو دارید 1732 | 1733 | 1734 |
- 1735 | میتونید راحت دادهها رو مرتب کنید 1736 | 1737 | 1738 |
1751 | JSON Repair 1752 |
1753 |1754 | درسته که برگردوندن داده به فرمت JSON مزایای زیادی داره، اما این روش خالی از اشکال هم نیست. 1755 | ساختارمند بودن JSON، در حالی که برای پردازش و استفاده در برنامهها خیلی مفیده، ولی به نسبت 1756 | متن ساده تعداد توکنهای بیشتری مصرف میکنه. این یعنی هم زمان پردازش بیشتر میشه و هم 1757 | هزینهها بالاتر میره. 1758 |
1759 |1760 | از طرف دیگه، چون JSON پرحجمتره، ممکنه بهراحتی کل پنجرهی خروجی مدل رو پر کنه. این موضوع 1761 | وقتی دردسرساز میشه که خروجی مدل به دلیل محدودیت تعداد توکنها ناگهان قطع بشه. در این حالت، 1762 | خروجی JSON ناقص میمونه (مثلاً یه آکولاد یا براکت بسته فراموش میشه) و در نتیجه دیگه قابل 1763 | استفاده نیست. 1764 |
1765 |1766 | خوشبختانه، ابزارهایی مثل کتابخونهی json-repair که در PyPI موجوده، توی این شرایط خیلی به کار 1767 | میان. این کتابخونه به شکل هوشمند تلاش میکنه JSONهای ناقص یا خرابشده رو بهصورت خودکار 1768 | اصلاح کنه. به همین خاطر، وقتی با خروجی JSON مدلهای زبانی کار میکنید، مخصوصاً وقتی ممکنه 1769 | خروجی ناقص باشه، این ابزار میتونه یه کمک حیاتی باشه. 1770 |
1771 | 1772 |کار با Schemaها
1776 | 1777 |1778 | استفاده از خروجی ساختاریافته با فرمت JSON یه راهحل خیلی خوبه، همونطور که بارها در این 1779 | مقاله دیدیم. اما ورودی چی؟ درسته که JSON برای ساختار دادن به خروجی عالیه، ولی میتونه برای 1780 | ساختار دادن به ورودی هم خیلی مفید باشه. اینجاست که JSON Schema وارد میشه. 1781 |
1782 |1783 | 1784 | JSON Schema یه قالب مشخص برای ورودی JSON تعریف میکنه؛ یعنی دقیقا تعیین میکنه چه ساختاری 1785 | باید داشته باشه و چه نوع دادههایی داخلش قرار بگیره. وقتی چنین اسکیمایی رو به مدل میدید، در 1786 | واقع یه نقشهی شفاف بهش میدید تا بدونه قراره چه اطلاعاتی رو دریافت کنه. این کار کمک میکنه 1787 | مدل تمرکزش رو روی اطلاعات مهم بذاره و احتمال اشتباه در تفسیر ورودی کمتر بشه. 1788 |
1789 |1790 | علاوهبر این، اسکیمای JSON میتونه روابط بین بخشهای مختلف داده رو مشخص کنه و حتی مدل رو از 1791 | نظر زمانی هم "آگاه" کنه، مثلاً با تعیین فیلدهایی برای تاریخ یا زمان با فرمت خاص. 1792 |
1793 |
1794 | یه مثال ساده:
1795 |
1796 | فرض کنیم میخواید از یه مدل زبانی برای نوشتن توضیحات محصولات در یک فروشگاه اینترنتی استفاده
1797 | کنید. به جای اینکه فقط یه متن آزاد و بیساختار دربارهی محصول بدید، میتونید با استفاده از
1798 | JSON Schema ویژگیهای محصول رو به صورت دقیق و ساختاریافته مشخص کنید.
1799 |

1802 | بعد از اینکه اسکیمای JSON رو مشخص کردید، حالا میتونید دادههای واقعی محصول رو بهصورت یه 1803 | شیء JSON ارائه بدید که با اون اسکیمای تعریفشده هماهنگ باشه. 1804 |
1805 | 1806 |
1810 | با پیشپردازش دادههاتون و بهجای اینکه کل سندهای توضیح محصول رو به مدل بدید، اگر فقط 1811 | اسکیمای JSON و دادهی واقعی رو بهش بدید، باعث میشید مدل درک خیلی واضحتری از ویژگیهای 1812 | محصول (مثل تاریخ عرضه و...) پیدا کنه. این کار باعث میشه مدل بتونه توضیحاتی تولید کنه که هم 1813 | دقیقتر و هم مرتبطتر باشن. 1814 |
1815 |1816 | این روش ورودی ساختاریافته، که تمرکز مدل رو روی فیلدهای مهم و مرتبط میذاره، مخصوصاً وقتی با 1817 | حجم زیادی از دادهها کار میکنید یا وقتی میخواید مدلهای زبانی رو توی اپلیکیشنهای 1818 | پیچیدهتر استفاده کنید، خیلی مفیده و کارآمد. 1819 |
1820 | 1821 |بهترین شیوههای زنجیره تفکر (CoT)
1826 |برای مسائل پیچیده، از زنجیره تفکر استفاده کنید تا مدل را به استدلال قدم به قدم هدایت کنید. 1827 |
1828 |1829 | باید پاسخ را بعد از توضیحات و استدلالها بنویسید. چون وقتی استدلالها را مینویسید، اطلاعاتی 1830 | که مدل برای حدس زدن پاسخ نهایی استفاده میکند تغییر میکند. 1831 |
1832 |1833 | وقتی از CoT و روش خود-سازگاری (Self-consistency) استفاده میکنید، باید بتوانید پاسخ نهایی را 1834 | از متن درخواست جدا کنید، طوری که از استدلالها مستقل باشد. 1835 |
1836 |1837 | برای روش CoT، دما (Temperature) را روی ۰ بگذارید. 1838 |
1839 |1840 | روش CoT بر اساس انتخاب ساده و مستقیم کار میکند، یعنی مدل زبانی کلمه بعدی را بر اساس بیشترین 1841 | احتمال پیشبینی میکند. معمولاً وقتی از استدلال برای پیدا کردن پاسخ استفاده میکنید، فقط یک 1842 | پاسخ درست وجود دارد. به همین دلیل، دما همیشه باید ۰ باشد. 1843 |
1844 | 1845 |مستندسازی پرامپت
1848 |پرامپتهای خود و نتایج آنها را مستند کنید تا بتوانید آنچه کار میکند و آنچه کار نمیکند را 1849 | پیگیری کنید.
1850 | 1851 | 1852 |
جمعبندی
1860 |مهندسی پرامپت یک مهارت است که با تمرین و آزمایش بهبود مییابد. با استفاده از بهترین شیوههای 1861 | ذکر شده در این راهنما، میتوانید پرامپتهایی ایجاد کنید که نتایج بهتری از مدلهای زبانی بزرگ 1862 | تولید میکنند.
1863 | 1864 |به یاد داشته باشید:
1865 |-
1866 |
- واضح و مستقیم باشید 1867 |
- مثالهای مناسب ارائه دهید 1868 |
- فرمت خروجی مورد نظر را مشخص کنید 1869 |
- از تکنیکهای پیشرفته مانند زنجیره تفکر (CoT) برای مسائل پیچیده استفاده کنید 1870 |
- پرامپتهای خود را مستند کنید و بهبود دهید 1871 |
با تمرین و آزمایش مداوم، مهارتهای مهندسی پرامپت شما به طور قابل توجهی بهبود خواهد یافت.
1874 |7. نمونه کاربردهای عملی
1879 |در این بخش، برخی از کاربردهای عملی مهندسی پرامپت را بررسی میکنیم که میتوانید در پروژههای خود 1880 | از آنها استفاده کنید.
1881 | 1882 |خلاصهسازی متن
1884 |Summarize the following article in 3-5 sentences while preserving the key information:
1885 |
1886 | {{ARTICLE_TEXT}}
1887 | تولید محتوا
1891 |Create a blog post about the benefits of meditation for mental health. The post should be approximately 500 words, include an introduction, 3 main benefits with supporting evidence, and a conclusion.
1892 | تحلیل احساسات
1896 |Analyze the sentiment of the following customer reviews and classify each as POSITIVE, NEGATIVE, or NEUTRAL:
1897 |
1898 | 1. "The product arrived on time and works perfectly. Very satisfied with my purchase."
1899 | 2. "Decent quality but the price is too high compared to similar products."
1900 | 3. "Absolutely terrible experience. The item was damaged and customer service was unhelpful."
1901 | استخراج اطلاعات
1905 |Extract the following information from this resume:
1906 | - Name
1907 | - Email
1908 | - Phone number
1909 | - Education history (institution, degree, dates)
1910 | - Work experience (company, position, dates)
1911 | - Skills
1912 |
1913 | Format the output as JSON.
1914 |
1915 | {{RESUME_TEXT}}
1916 | تولید کد
1920 |Create a Python function that reads a CSV file containing student data (name, age, grade) and returns the average grade for each age group. Include error handling and comments.
1921 | ترجمه زبان
1925 |Translate the following text from English to Spanish, maintaining the same tone and style:
1926 |
1927 | {{TEXT_TO_TRANSLATE}}
1928 | پاسخ به سوالات
1932 |Answer the following questions about quantum computing:
1933 | 1. What is a qubit?
1934 | 2. How does quantum entanglement work?
1935 | 3. What are the potential applications of quantum computing?
1936 | 4. What are the current limitations of quantum computers?
1937 |
1938 | Provide detailed but accessible explanations for someone with a basic understanding of physics.
1939 | ایجاد طرح کلی
1943 |Create a detailed outline for a research paper on the impact of artificial intelligence on healthcare. Include main sections, subsections, and key points to address in each section.
1944 | 8. جمعبندی
1949 |مهندسی پرامپت یک مهارت ضروری برای استفاده موثر از مدلهای زبانی بزرگ است. در این آموزش، ما مفاهیم 1950 | اساسی مهندسی پرامپت، تنظیمات خروجی LLM، تکنیکهای مختلف پرامپت، کاربردهای کدنویسی و بهترین 1951 | شیوهها را پوشش دادیم.
1952 | 1953 |به یاد داشته باشید که مهندسی پرامپت یک فرآیند تکراری است. آزمایش با پرامپتهای مختلف، تنظیمات مدل 1954 | و تکنیکها برای دستیابی به بهترین نتایج ضروری است. با تمرین و تجربه، شما میتوانید پرامپتهایی 1955 | ایجاد کنید که پاسخهای دقیق، مرتبط و مفید از LLMها دریافت کنند.
1956 | 1957 |نکات کلیدی برای به خاطر سپردن:
1958 |-
1959 |
- واضح و دقیق باشید: دستورالعملهای واضح و دقیق ارائه دهید. 1960 |
- از مثالها استفاده کنید: برای وظایف پیچیده، مثالهایی ارائه دهید تا مدل 1961 | الگو را درک کند. 1962 |
- فرمت خروجی را مشخص کنید: ساختار و فرمت خروجی مورد نظر خود را مشخص کنید. 1963 | 1964 |
- از تکنیکهای پیشرفته استفاده کنید: برای مسائل پیچیده، از تکنیکهایی مانند 1965 | زنجیره تفکر (CoT) یا درخت تفکرات (ToT) استفاده کنید. 1966 |
- تنظیمات مدل را بهینه کنید: با دما، Top-K و Top-P برای دستیابی به تعادل 1967 | مناسب بین خلاقیت و دقت آزمایش کنید. 1968 |
- آزمایش و تکرار کنید: پرامپتهای خود را مستند کنید، نتایج را ارزیابی کنید و 1969 | بر اساس بازخورد بهبود دهید. 1970 |
با پیشرفت فناوری LLM، مهندسی پرامپت نیز تکامل خواهد یافت. به روز ماندن با تکنیکهای جدید و بهترین 1973 | شیوهها به شما کمک میکند تا از این ابزارهای قدرتمند به طور موثر استفاده کنید.
1974 |کتابهای دیگر
1978 |-
1979 |
- راهنمای عملی ساخت ایجنتهای هوشمند 1980 |
1987 | آخرین بروزرسانی: ۲۸ فروردین ۱۴۰۴ 1988 |
1989 | ☕ 👨🏼💻 @teal33t 1990 |