├── .gitignore ├── README.md ├── books ├── 2024_Prompt_Engineering_for_Generative_AI.pdf ├── 2025_Google_Prompt_Engineering_v7.pdf └── 2025_How_to_Become_a_Prompt_God.pdf ├── files └── prompting_template.docx ├── images ├── CoT1.png ├── CoT2.png ├── CoT3.png ├── CoT4.png ├── CoT5.png ├── CoT6.png ├── ReAct.png ├── ReAct1.png ├── ToT.png ├── book-cover.png ├── bp-intructions.png ├── bp-maxtoken.png ├── bp-output.png ├── bp-simplicity.png ├── bp-variables.png ├── contextual-prompt.png ├── debug-prompt1.png ├── debug-prompt2.png ├── debug-prompt3.png ├── debug-prompt4.png ├── debug-review.png ├── document-template.png ├── explain01.png ├── explain02.png ├── few-one-shot1.png ├── few-one-shot2.png ├── og-image.png ├── role-prompt.png ├── role-prompt2.png ├── role-prompt3.png ├── schema01.png ├── schema02.png ├── self-consistency.png ├── self01.png ├── self02.png ├── self03.png ├── step-back.png ├── step-back01.png ├── step-back02.png ├── system-prompt.png ├── system-prompt2.png ├── translate1.png ├── translate2.png ├── wiring-code.png └── zero-shot.png └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ترجمه کتاب گوگل مهندسی Prompt Engineering 2 | [https://teal33t.github.io/prompt-engineering/](https://teal33t.github.io/prompt-engineering/) 3 | -------------------------------------------------------------------------------- /books/2024_Prompt_Engineering_for_Generative_AI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/books/2024_Prompt_Engineering_for_Generative_AI.pdf -------------------------------------------------------------------------------- /books/2025_Google_Prompt_Engineering_v7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/books/2025_Google_Prompt_Engineering_v7.pdf -------------------------------------------------------------------------------- /books/2025_How_to_Become_a_Prompt_God.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/books/2025_How_to_Become_a_Prompt_God.pdf -------------------------------------------------------------------------------- /files/prompting_template.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/files/prompting_template.docx -------------------------------------------------------------------------------- /images/CoT1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT1.png -------------------------------------------------------------------------------- /images/CoT2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT2.png -------------------------------------------------------------------------------- /images/CoT3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT3.png -------------------------------------------------------------------------------- /images/CoT4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT4.png -------------------------------------------------------------------------------- /images/CoT5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT5.png -------------------------------------------------------------------------------- /images/CoT6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/CoT6.png -------------------------------------------------------------------------------- /images/ReAct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/ReAct.png -------------------------------------------------------------------------------- /images/ReAct1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/ReAct1.png -------------------------------------------------------------------------------- /images/ToT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/ToT.png -------------------------------------------------------------------------------- /images/book-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/book-cover.png -------------------------------------------------------------------------------- /images/bp-intructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/bp-intructions.png -------------------------------------------------------------------------------- /images/bp-maxtoken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/bp-maxtoken.png -------------------------------------------------------------------------------- /images/bp-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/bp-output.png -------------------------------------------------------------------------------- /images/bp-simplicity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/bp-simplicity.png -------------------------------------------------------------------------------- /images/bp-variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/bp-variables.png -------------------------------------------------------------------------------- /images/contextual-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/contextual-prompt.png -------------------------------------------------------------------------------- /images/debug-prompt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/debug-prompt1.png -------------------------------------------------------------------------------- /images/debug-prompt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/debug-prompt2.png -------------------------------------------------------------------------------- /images/debug-prompt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/debug-prompt3.png -------------------------------------------------------------------------------- /images/debug-prompt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/debug-prompt4.png -------------------------------------------------------------------------------- /images/debug-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/debug-review.png -------------------------------------------------------------------------------- /images/document-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/document-template.png -------------------------------------------------------------------------------- /images/explain01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/explain01.png -------------------------------------------------------------------------------- /images/explain02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/explain02.png -------------------------------------------------------------------------------- /images/few-one-shot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/few-one-shot1.png -------------------------------------------------------------------------------- /images/few-one-shot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/few-one-shot2.png -------------------------------------------------------------------------------- /images/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/og-image.png -------------------------------------------------------------------------------- /images/role-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/role-prompt.png -------------------------------------------------------------------------------- /images/role-prompt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/role-prompt2.png -------------------------------------------------------------------------------- /images/role-prompt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/role-prompt3.png -------------------------------------------------------------------------------- /images/schema01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/schema01.png -------------------------------------------------------------------------------- /images/schema02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/schema02.png -------------------------------------------------------------------------------- /images/self-consistency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/self-consistency.png -------------------------------------------------------------------------------- /images/self01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/self01.png -------------------------------------------------------------------------------- /images/self02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/self02.png -------------------------------------------------------------------------------- /images/self03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/self03.png -------------------------------------------------------------------------------- /images/step-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/step-back.png -------------------------------------------------------------------------------- /images/step-back01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/step-back01.png -------------------------------------------------------------------------------- /images/step-back02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/step-back02.png -------------------------------------------------------------------------------- /images/system-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/system-prompt.png -------------------------------------------------------------------------------- /images/system-prompt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/system-prompt2.png -------------------------------------------------------------------------------- /images/translate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/translate1.png -------------------------------------------------------------------------------- /images/translate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/translate2.png -------------------------------------------------------------------------------- /images/wiring-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/wiring-code.png -------------------------------------------------------------------------------- /images/zero-shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teal33t/prompt-engineering/2ecb2696310f4aa8ed9d2a00d397551dbd5fd270/images/zero-shot.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | آموزش مهندسی پرامپت (Prompt Engineering) 8 | 10 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 27 | 364 | 365 | 366 | 367 |
368 |

آموزش مهندسی پرامپت (Prompt Engineering)

369 |
ترجمه کتاب Prompt Engineering (Google) با یه سری چیزای اضافی!
370 |
372 | 373 | 376 | 382 | Share on X 383 | 384 | 385 | 386 | 388 |
389 |
390 | 391 |
392 | 454 | 455 |
456 | 457 | 458 |
460 |
461 |
462 | 463 |
464 |
465 |
دانلود PDF کتاب اصلی 466 | 👇🏼 467 |
468 | Google Prompt 469 | Engineering (2025) 470 | 471 |
472 | 473 |
474 |
475 |
476 | 477 |
478 |

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 |
506 | 507 |
508 |

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 |
533 | 534 |
535 |

3. تنظیمات خروجی مدل‌های زبانی بزرگ

536 |

پس از انتخاب مدل، باید تنظیمات مدل را مشخص کنید. اکثر LLM‌ها با گزینه‌های تنظیم مختلفی ارائه می‌شوند 537 | که خروجی LLM را کنترل می‌کنند. مهندسی پرامپت موثر نیازمند تنظیم بهینه این پیکربندی‌ها برای وظیفه شما 538 | است.

539 | 540 |
541 |

طول خروجی

542 |

یک تنظیم مهم، تعداد توکن‌هایی است که در یک پاسخ تولید می‌شوند. تولید توکن‌های بیشتر نیازمند 543 | محاسبات بیشتری از LLM است، که منجر به مصرف انرژی بالاتر، زمان‌های پاسخ احتمالاً کندتر و 544 | هزینه‌های بالاتر می‌شود.

545 | 546 |

کاهش طول خروجی LLM باعث نمی‌شود که LLM از نظر سبک یا متنی در خروجی که ایجاد می‌کند مختصرتر شود، 547 | فقط باعث می‌شود که LLM پس از رسیدن به محدودیت، پیش‌بینی توکن‌های بیشتر را متوقف کند. اگر نیازهای 548 | شما به طول خروجی کوتاه نیاز دارد، احتمالاً باید پرامپت خود را نیز برای تطبیق با آن مهندسی کنید. 549 |

550 | 551 |

محدودیت طول خروجی به ویژه برای برخی از تکنیک‌های پرامپت LLM، مانند ReAct، مهم است، جایی که LLM پس 552 | از پاسخی که می‌خواهید، به انتشار توکن‌های بی‌فایده ادامه خواهد داد.

553 | 554 |

توجه داشته باشید، تولید توکن‌های بیشتر نیازمند محاسبات بیشتری از LLM است، که منجر به مصرف انرژی 555 | بالاتر و زمان‌های پاسخ احتمالاً کندتر می‌شود، که منجر به هزینه‌های بالاتر می‌شود.

556 |
557 | 558 |
559 |

کنترل‌های نمونه‌گیری (Sampeling)

560 |

LLM‌ها رسماً یک توکن واحد را پیش‌بینی نمی‌کنند. در عوض، LLM‌ها احتمالات را برای اینکه توکن بعدی 561 | چه می‌تواند باشد پیش‌بینی می‌کنند، با هر توکن در واژگان LLM که یک احتمال دریافت می‌کند. سپس از 562 | آن احتمالات توکن نمونه‌گیری می‌شود تا مشخص شود توکن بعدی تولید شده چه خواهد بود.

563 | 564 |

دما (Temperature)، Top-K و Top-P رایج‌ترین تنظیمات پیکربندی هستند که تعیین می‌کنند چگونه احتمالات 565 | توکن پیش‌بینی شده برای انتخاب یک توکن خروجی واحد پردازش می‌شوند.

566 |
567 | 568 |
569 |

دما (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 |
587 | 588 |
589 |

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 |
601 |

بهترین راه برای انتخاب بین Top-K و Top-P، آزمایش با هر دو روش (یا هر دو با هم) و دیدن اینکه کدام 602 | یک نتایجی را که به دنبال آن هستید تولید می‌کند.

603 |
604 | 605 |
606 |

ترکیب تنظیمات

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 |
637 |

به عنوان یک نقطه شروع کلی، دمای 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 |
665 |
666 | 667 |
668 |

4. تکنیک‌های مهندسی پرامپت

669 |

مدل‌های زبانی بزرگ (LLM) برای پیروی از دستورالعمل‌ها تنظیم شده‌اند و روی مقادیر زیادی از داده‌ها 670 | آموزش دیده‌اند تا بتوانند یک پرامپت را درک کنند و پاسخی تولید کنند. اما LLM‌ها کامل نیستند؛ هرچه متن 671 | پرامپت شما واضح‌تر باشد، برای LLM بهتر است تا متن بعدی محتمل را پیش‌بینی کند. علاوه بر این، 672 | تکنیک‌های خاصی که از نحوه آموزش LLM‌ها و نحوه کار آن‌ها استفاده می‌کنند، به شما کمک می‌کنند تا نتایج 673 | مرتبط را از LLM‌ها دریافت کنید.

674 | 675 |

حال که درک می‌کنیم مهندسی پرامپت چیست و چه چیزی نیاز دارد، بیایید به برخی از مثال‌های مهم‌ترین 676 | تکنیک‌های پرامپت بپردازیم.

677 | 678 |
679 |

پرامپت زیرو-شات (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 | 703 | 704 |

وقتی زیرو-شات کار نمی‌کند، می‌توانید نمونه‌ها یا مثال‌هایی را در پرامپت ارائه دهید، که منجر به 705 | پرامپت "تک-شات" و "چند-شات" می‌شود.

706 |
707 | 708 |
709 |

پرامپت تک-شات و چند-شات (One-shot & Few-shot)

710 |

هنگام ایجاد پرامپت‌ها برای مدل‌های هوش مصنوعی، ارائه مثال‌ها مفید است. این مثال‌ها می‌توانند به 711 | مدل کمک کنند تا آنچه را که از آن می‌خواهید درک کند. مثال‌ها به ویژه زمانی مفید هستند که 712 | می‌خواهید مدل را به سمت یک ساختار یا الگوی خروجی خاص هدایت کنید.

713 | 714 |

یک پرامپت تک-شات، یک مثال واحد ارائه می‌دهد، از این رو نام تک-شات. ایده این است که مدل مثالی دارد 715 | که می‌تواند از آن تقلید کند تا بهترین عملکرد را در انجام وظیفه داشته باشد.

716 | 717 |

یک پرامپت چند-شات چندین مثال ارائه می‌دهد. این به مدل کمک می‌کند تا الگوها را بهتر درک کند و 718 | پاسخ‌های دقیق‌تری تولید کند.

719 | 720 | 721 |

مثال پرامپت چند-شات:

722 | 723 | 724 | 725 |

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 |
750 |

751 | شباهت‌ها و تفاوت‌ها بین System، Contextual و Role Prompting ممکنه هم‌پوشانی زیادی وجود داشته 752 | باشه. مثلاً یه دستوری که به مدل یه نقش می‌ده (مثل «تو یه مترجم باش»)، می‌تونه همزمان زمینه‌ای هم 753 | داشته باشه (مثل «این متن رو از فارسی به انگلیسی ترجمه کن»). ولی هر کدوم یه هدف اصلی متفاوت دارن: 754 |

755 |

756 |
757 | 758 |
759 |

پرامپت سیستمی (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 | 779 | 780 |

781 | پرامپت‌های سیستمی (System Prompts) می‌توانند برای تولید خروجی‌هایی که نیازمندی‌های خاصی دارند، 782 | بسیار مفید باشند. 783 |

784 |

785 | علت نام‌گذاری «پرامپت سیستمی» این است که در واقع شما دارید یک وظیفه یا دستورالعمل اضافی به سیستم 786 | (هوش مصنوعی) می‌دهید (علاوه بر درخواست اصلی‌تان). 787 |

788 |

789 | مثال: 790 |
791 | می‌توانید از یک پرامپت سیستمی استفاده کنید تا یک قطعه کد (code snippet) تولید کند که با یک زبان 792 | برنامه‌نویسی خاص سازگار باشد. 793 | یا می‌توانید از آن برای دریافت خروجی با یک ساختار مشخص استفاده کنید. 794 |

795 |

796 | به جدول ۴ نگاهی بیندازید؛ در آنجا من (با استفاده از پرامپت سیستمی) مشخص کرده‌ام که خروجی را در 797 | قالب JSON دریافت کنم. 798 |

799 | 800 |

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 |
830 | 831 |
832 |

پرامپت نقش‌دار (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 | 860 | 861 | 862 |

863 | مثال بالا نمونه‌ای از ایفای نقش یک کارمند آژانس مسافرتی توسط مدل هوش مصنوعی را نشان می‌دهد. اگر 864 | شما همین نقش را به «معلم جغرافیا» تغییر دهید، متوجه خواهید شد که پاسخ کاملاً متفاوتی دریافت 865 | می‌کنید. 866 |

867 |

868 | تعریف یک دیدگاهِ نقش‌محور برای مدل هوش مصنوعی، مانند ارائه یک الگو (blueprint) به آن است. این 869 | الگو مشخص می‌کند که شما چه لحن، سبک و تخصص متمرکزی را از مدل انتظار دارید. 870 |

871 |

872 | در نتیجه، این کار به بهبود کیفیت، مرتبط بودن (relevance) و اثربخشی (effectiveness) خروجی نهایی 873 | شما کمک می‌کند. 874 |

875 | 876 | 877 |

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 |
918 | 919 |

حالا بیایید درخواست (پرامپت) خودمان در جدول ۶ را تغییر دهیم تا سبکی طنزآمیز و الهام‌بخش داشته 920 | باشد. 921 |

922 | 923 | 924 |

925 |
926 | 927 |
928 |

پرامپت کانتکسچوال (Contextual Prompting)

929 |

پرامپت کانتکسچوال شامل ارائه اطلاعات زمینه‌ای اضافی به مدل است تا به آن کمک کند پاسخ‌های دقیق‌تر 930 | و مرتبط‌تری تولید کند.

931 | 932 |

مثال پرامپت Contextual:

933 | 934 | 935 | 936 | 937 |
938 | 939 |
940 |

پرامپت استپ‌بک (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 | 970 | 971 |

972 | وقتی دما (Temperature) رو روی 1 تنظیم می‌کنید، ممکنه برای یه خط داستانی کلی نوشته‌های خلاقانه‌ای 973 | به دست بیارید، ولی این نوشته‌ها معمولاً تصادفی و کلی هستند. 974 |

975 | 976 | 977 |

978 | آره، این موضوعات به نظر می‌رسه برای یه بازی ویدیویی اول‌شخص مناسب باشن. بیایم برگردیم به درخواست 979 | قبلی، ولی این بار پاسخ سوال استپ‌بک رو به‌عنوان زمینه (Context) اضافه کنیم و ببینیم چی 980 | برمی‌گردونه 981 |

982 | 983 |

984 | این شبیه یه بازی ویدیویی جالب به نظر می‌رسه! با استفاده از تکنیک‌های درخواست‌نویسی استپ‌بک 985 | می‌تونید دقت درخواست‌هاتون رو بالاتر ببرید 986 |

987 |
988 | 989 |
990 |

زنجیره تفکر (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 |
1015 |

1016 | البته معایبی هم وجود دارد که تا حدی قابل پیش‌بینی هستند.

1017 | 1018 |

معایب زنجیره تفکر

1019 |

پاسخ مدل شامل گام‌های استدلالی زنجیره تفکر است، که یعنی توکن‌های خروجی بیشتری تولید می‌شود. این 1020 | باعث می‌شود هزینه پیش‌بینی‌ها بیشتر بشه و زمان بیشتری طول بکشه.

1021 |

1022 | برای توضیح مثال در جدول 11، ابتدا بیایم یه درخواست بدون استفاده از CoT بنویسیم تا نقاط ضعف یک 1023 | مدل زبانی بزرگ رو نشون بدیم. 1024 |

1025 | 1026 |

مثال زنجیره تفکر:

1027 | 1028 | 1029 | 1030 | 1031 |

1032 | خوب، این جواب کاملاً اشتباهه! 1033 | واقعیت اینه که مدل‌های زبانی بزرگ (LLMs) اغلب توی کارهای ریاضی به مشکل می‌خورن و ممکنه حتی برای 1034 | یه کار ساده مثل ضرب دو تا عدد، جواب اشتباه بدن. دلیلش اینه که این مدل‌ها روی حجم زیادی از متن 1035 | آموزش دیدن و ریاضیات ممکنه نیاز به یه روش متفاوت داشته باشه. حالا بیایم ببینیم اگه از گام‌های 1036 | استدلالی میانی استفاده کنیم، آیا خروجی بهتر می‌شه یا نه. 1037 |

1038 | 1039 | 1040 |

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 | 1053 | 1054 |

1055 | زنجیره تفکر برای کارهای مختلفی مفیده. چند مثال: 1056 |

1057 |
    1058 |
  • 1059 | تولید کد (Code Generation): می‌تونید درخواست رو به چند گام تقسیم کنید و هر گام رو به خطوط 1060 | خاصی از کد مرتبط کنید. 1061 |
  • 1062 |
  • 1063 | 1064 | ایجاد داده مصنوعی (Synthetic Data): مثلاً وقتی یه نقطه شروع دارید، مثل «محصول اسمش XYZ هست، 1065 | یه توضیح بنویس و مدل رو از فرضیاتی که بر اساس اسم محصول می‌کنی، هدایت کن.» 1066 |
  • 1067 |
  • 1068 | 1069 | به طور کلی، هر کاری که بشه با صحبت کردن و توضیح دادن حلش کرد، کاندیدای خوبی برای زنجیره 1070 | تفکره. اگه بتونید گام‌های حل مسئله رو توضیح بدید، زنجیره تفکر رو امتحان کنید! 1071 |
  • 1072 | 1073 |
1074 | 1075 |
1076 | 1077 |
1078 |

خودسازگاری (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 |
1117 | 1118 |

مثال: سیستم طبقه‌بندی ایمیل 1119 |
1120 | بیایم یه مثال از یه سیستم طبقه‌بندی ایمیل ببینیم که ایمیل‌ها رو به دو دسته مهم (IMPORTANT) یا 1121 | غیرمهم (NOT IMPORTANT) تقسیم می‌کنه. یه درخواست زنجیره تفکر بدون نمونه (Zero-Shot CoT) چندین بار 1122 | به مدل فرستاده می‌شه تا ببینیم آیا پاسخ‌ها بعد از هر بار ارسال فرق می‌کنن یا نه. توجه کنید به 1123 | لحن دوستانه، انتخاب کلمات و کنایه (Sarcasm) که توی ایمیل استفاده شده. همه این‌ها ممکنه مدل زبانی 1124 | رو گمراه کنن! 1125 |

1126 | 1127 |

مثال خودسازگاری:

1128 | 1129 | 1130 | 1131 | 1132 | 1133 |
1134 | 1135 |
1136 |

درخت تفکرات (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 | 1151 | 1152 |

1153 | این رویکرد باعث می‌شود ToT به‌ویژه برای وظایف پیچیده‌ای که نیازمند کاوش (Exploration) هستند، 1154 | بسیار مناسب باشد. سازوکار آن مبتنی بر نگهداری یک «درخت از افکار» است، که در آن هر «فکر» 1155 | (Thought) نشان‌دهنده یک دنباله زبانی منسجم است که به عنوان یک گام میانی در مسیر حل یک مسئله عمل 1156 | می‌کند. سپس مدل می‌تواند با انشعاب گرفتن (Branching out) از گره‌های (Nodes) مختلف در این درخت، 1157 | مسیرهای استدلالی مختلف را کاوش کند. 1158 |

1159 | 1160 |
1161 | 1162 |
1163 |

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 | 1204 | 1205 |

1206 | حالا بیایم یه کد پایتون بنویسیم که وظیفه‌ای برای مدل زبانی بزرگ (LLM) تعریف کنه: 1207 | اعضای گروه متالیکا چندتا بچه دارند؟ 1208 |

1209 | 1210 |

1211 | 1212 | توضیح قطعه کد شماره 2 1213 |
1214 | قطعه کد شماره 2 نتیجه رو نشون می‌ده. توجه کنید که ReAct یه زنجیره از پنج جستجو انجام می‌ده. 1215 | درواقع، مدل زبانی نتایج جستجوی گوگل رو بررسی می‌کنه تا اسامی اعضای گروه رو پیدا کنه. بعد، نتایج 1216 | رو به‌عنوان مشاهدات فهرست می‌کنه و استدلالش رو برای جستجوی بعدی ادامه می‌ده. 1217 |
1218 | در این کد، مدل متوجه می‌شه که گروه متالیکا چهار عضو داره. بعد، برای هر عضو گروه جستجو می‌کنه تا 1219 | تعداد بچه‌هاشون رو پیدا کنه و همه رو جمع می‌زنه. در نهایت، تعداد کل بچه‌ها رو به‌عنوان پاسخ 1220 | نهایی برمی‌گردونه. 1221 |

1222 |
1223 |
1224 | 1225 |
1226 |

5. پرامپت برای کدنویسی

1227 |

مدل‌های زبانی بزرگ (LLM) می‌توانند در نوشتن، توضیح، ترجمه و اشکال‌زدایی کد کمک کنند. در این بخش، 1228 | تکنیک‌های پرامپت مختلف برای کار با کد را بررسی می‌کنیم.

1229 | 1230 | 1231 |

1232 | مدل هوش مصنوعی Gemini عمدتاً روی درخواست‌های متنی (پرامپت‌ها) تمرکز دارد، و این شامل نوشتن 1233 | درخواست‌هایی برای دریافت کد هم می‌شود. بیایید به محیط Vertex AI Studio برویم و این نوع درخواست‌ها را 1234 | امتحان کنیم تا چند مثال کدنویسی ببینیم. 1235 |

1236 | 1237 |
1238 |

نوشتن کد

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 | 1270 | 1271 | 1272 |

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 |
1321 | 1322 |
1323 |

توضیح کد

1324 |

LLM‌ها می‌توانند در توضیح کد موجود کمک کنند، که برای یادگیری یا مستندسازی مفید است.

1325 | 1326 |

1327 | به عنوان یک برنامه‌نویس، وقتی در یک تیم کار می‌کنید، اغلب پیش می‌آید که مجبور شوید کد نوشته شده 1328 | توسط شخص دیگری را بخوانید و بفهمید. هوش مصنوعی Gemini می‌تواند در این کار هم به شما کمک کند. 1329 |

1330 |

1331 | 1332 | بیایید همان کدی که در جدول ۱۶ (به عنوان خروجی) داشتیم را برداریم، توضیحات (کامنت‌های) داخل کد را 1333 | حذف کنیم و سپس از مدل زبانی بزرگ (LLM) بخواهیم توضیح دهد که این کد دقیقاً چه کاری انجام می‌دهد. 1334 | نتیجه این کار را در جدول ۱۷ می‌توانید ببینید. 1335 |

1336 | 1337 | 1338 | 1339 | 1340 | 1341 |
1342 | 1343 |
1344 |

ترجمه کد

1345 |

LLM‌ها می‌توانند کد را از یک زبان برنامه‌نویسی به زبان دیگر ترجمه کنند.

1346 | 1347 |

1348 | کد Bash که در جدول ۱۶ دیدیم، به نظر می‌رسد به خوبی کار می‌کند. اما، این اسکریپت اگر می‌توانست 1349 | نام فایل‌ها را از کاربر بپرسد (ورودی بگیرد)، خیلی کاربردی‌تر (قابل استفاده مجددتر) می‌شد. در 1350 | حالت ایده‌آل، بهتر بود که این قابلیت به صورت یک برنامه (اپلیکیشن) جداگانه همراه با یک رابط 1351 | کاربری (UI) پیاده‌سازی شود. 1352 |

1353 |

1354 | به عنوان یک نقطه شروع (قدم اول)، زبان پایتون برای ساخت چنین اپلیکیشنی (به‌ویژه اپلیکیشن تحت وب)، 1355 | گزینه مناسب‌تری نسبت به Bash محسوب می‌شود. 1356 | 1357 | خبر خوب این است که مدل‌های زبانی بزرگ (LLMها) می‌توانند در ترجمه کد از یک زبان برنامه‌نویسی به 1358 | زبان دیگر کمک کنند. 1359 |

1360 | نمونه‌ای از این کار را در جدول ۱۸ ببینید: 1361 | 1362 | 1363 | 1364 | 1365 | 1366 |

1367 | کد را بخوانید و بررسی کنید. 1368 | 1369 | خروجی (کدی) که از پرامپت دریافت کردید را کپی کنید و آن را در یک فایل جدید به نام file_renamer.py 1370 | ذخیره (Paste) کنید. 1371 |

1372 |

1373 | برای تست کردن کد، یک پنجره ترمینال (خط فرمان) باز کنید و دستور زیر را اجرا کنید: 1374 | 1375 | 1376 | python file_renamer.py 1377 | 1378 |

1379 | نکته مهم: 1380 | 1381 | وقتی در محیط Language Studio در Vertex AI درخواست کد (به‌ویژه کد پایتون) می‌دهید، حتماً باید روی 1382 | دکمه ‘Markdown’ کلیک کنید. 1383 | 1384 | چرا؟ چون در غیر این صورت، خروجی را به صورت متن ساده (plain text) دریافت خواهید کرد که تورفتگی‌های 1385 | (indentation) لازم خطوط را ندارد. 1386 | 1387 | این تورفتگی‌ها برای اجرای صحیح کدهای پایتون بسیار مهم هستند. (پایتون از تورفتگی برای تشخیص بلوک‌های 1388 | کد استفاده می‌کند). 1389 |
1390 | 1391 |
1392 |

اشکال‌زدایی و بررسی کد

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 | 1410 | 1411 |

بنظر میاد باگ داره، بریم از LLM کمک بگیریم که کد رو Review و دیباگ کنه:

1412 | 1413 | 1414 | 1415 | 1416 | 1417 |

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 |
1460 |
1461 | 1462 |
1463 |

6. بهترین شیوه‌های مهندسی پرامپت 1464 | Best Practices 1465 |

1466 |

در این بخش، بهترین شیوه‌ها و نکات کاربردی برای مهندسی پرامپت موثر را بررسی می‌کنیم.

1467 | 1468 |
1469 |

ارائه مثال‌ها

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 |
1488 |

طراحی با سادگی

1489 |

پرامپت‌های ساده و مستقیم اغلب بهترین نتایج را تولید می‌کنند. از زبان پیچیده یا دستورالعمل‌های 1490 | مبهم خودداری کنید.

1491 |

اگر پرامپت برای خود شما هم گنگ هست، مطمعن باشید برای مدل هم نامفهوم است.

1492 | 1493 | 1494 | 1495 |

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 |
1507 | 1508 |
1509 |

مشخص کردن خروجی

1510 |

1511 | خروجی مورد نظرتان را به وضوح مشخص کنید. یک دستور مختصر ممکن است نتواند LLM را به اندازه کافی 1512 | راهنمایی کند و ممکن است خیلی کلی باشد. 1513 |

1514 | 1515 | 1516 | 1517 | 1518 |
1519 | 1520 |
1521 |

1522 | استفاده از دستورالعمل‌ها به جای محدودیت‌ها

1523 |

به جای گفتن اینکه مدل چه کاری نکند، به آن بگویید چه کاری انجام دهد.

1524 |

در پرامپت (Prompting) برای هدایت خروجی یک مدل زبانی بزرگ (LLM)، از دستورات و محدودیت‌ها 1525 | استفاده می‌کنیم. این دو ابزار به ما کمک می‌کنند تا پاسخ مدل را به شکلی که می‌خواهیم شکل 1526 | دهیم. در ادامه، این مفاهیم را به زبان ساده و قابل فهم توضیح می‌دهم:

1527 | 1528 |

دستورات (Instruction) چیست؟

1529 |

دستورات، راهنمایی‌های مشخص و واضحی هستند که به مدل می‌گویند پاسخش چه شکل، سبک یا محتوایی باید 1530 | داشته باشد. به عبارت دیگر، دستورات به مدل می‌گویند که چه کاری انجام دهد یا چه چیزی تولید 1531 | کند.

1532 |

مثال: «پاسخ را به صورت یک پاراگراف کوتاه بنویس.»
این نوع راهنمایی به مدل کمک می‌کند تا 1533 | دقیقاً بفهمد چه انتظاری از آن داریم و کارش را در مسیر درست پیش ببرد.

1534 | 1535 |

محدودیت‌ها (Constraint) چیست؟

1536 |

محدودیت‌ها، قوانینی هستند که مشخص می‌کنند مدل چه کاری نباید انجام دهد یا از چه چیزی باید دوری 1537 | کند. این‌ها مثل خطوط قرمزی هستند که پاسخ مدل باید درون آن‌ها بماند.

1538 |

مثال: «از کلمات پیچیده و فنی استفاده نکن.»
محدودیت‌ها کمک می‌کنند تا خروجی مدل در چارچوب 1539 | مشخص و قابل قبولی بماند.

1540 | 1541 |

چرا دستورات بهتر از محدودیت‌ها هستند؟

1542 |

تحقیقات جدید نشان می‌دهد که استفاده از دستورات مثبت معمولاً بهتر از تکیه زیاد بر محدودیت‌ها 1543 | جواب می‌دهد. این موضوع شبیه به رفتار خود ما آدم‌هاست؛ ما هم راهنمایی‌های مثبت را بیشتر از 1544 | لیست بلندبالای «این کار را نکن» دوست داریم.

1545 | 1546 |

دلیل بهتر بودن دستورات:

1547 |
    1548 |
  • دستورات به‌طور مستقیم به مدل می‌گویند که چه نتیجه‌ای می‌خواهیم
  • 1549 |
  • امکان خلاقیت بیشتر در چارچوب مشخص
  • 1550 |
  • جلوگیری از سردرگمی مدل
  • 1551 |
1552 | 1553 |

مشکلات محدودیت‌ها:

1554 |
    1555 |
  • امکان ایجاد سردرگمی در مدل
  • 1556 |
  • کاهش خلاقیت
  • 1557 |
  • احتمال ایجاد تناقض بین محدودیت‌ها
  • 1558 |
1559 | 1560 |

کی از محدودیت‌ها استفاده کنیم؟

1561 |

با اینکه دستورات مثبت بهتر هستند، محدودیت‌ها هم در جاهایی به کار می‌آیند:

1562 |
    1563 |
  • جلوگیری از تولید محتوای مضر یا اشتباه
  • 1564 |
  • نیاز به قالب/سبک خاص (مثلاً محدودیت تعداد کلمات)
  • 1565 |
1566 | 1567 |

نکته مهم: چطور بهتر درخواست بنویسیم؟

1568 |

هر وقت می‌شود، از دستورات مثبت استفاده کنید. به جای اینکه به مدل بگویید چه کاری نکند، بگویید 1569 | چه کاری بکند. این کار سردرگمی را کم می‌کند و باعث می‌شود پاسخ دقیق‌تر و بهتر باشد.

1570 |

مثال: به جای «مبهم نباش»، بگویید «جزئیات واضح و مشخص بده.»
این تغییر ساده باعث می‌شود مدل 1571 | بهتر بفهمد و نتیجه بهتری بدهد.

1572 | 1573 |

بهترین روش چیست؟

1574 |
    1575 |
  1. اول با دستورات شروع کنید
  2. 1576 |
  3. فقط در صورت نیاز از محدودیت‌ها استفاده کنید
  4. 1577 |
  5. ترکیب‌های مختلف را آزمایش کنید
  6. 1578 |
  7. نتایج را مستندسازی کنید
  8. 1579 |
1580 | 1581 | 1582 | 1583 |
1584 | 1585 |
1586 |

کنترل طول توکن

1587 |

برای کنترل طول پاسخ، محدودیت‌های خاصی را مشخص کنید.

1588 |

مثال:

1589 | 1590 | 1591 | 1592 |
1593 | 1594 |
1595 |

استفاده از متغیرها در پرامپت‌ها

1596 |

1597 | برای استفاده دوباره از پرامپت‌ها و پویاتر کردن آن‌ها، از متغیرها در پرامپت استفاده کنید که 1598 | می‌توانند برای ورودی‌های مختلف تغییر کنند. برای مثال، همان‌طور که در جدول ۲۰ نشان داده شده، 1599 | پرامپتی که اطلاعاتی درباره یک شهر می‌دهد. به جای نوشتن ثابت نام شهر در پرامپت، از یک متغیر 1600 | استفاده کنید. متغیرها می‌توانند با جلوگیری از تکرار، 1601 |

1602 |

1603 | در زمان و تلاش شما صرفه‌جویی کنند. اگر نیاز دارید همان اطلاعات را در چند پرامپت استفاده 1604 | کنید، می‌توانید آن‌ها را در یک متغیر ذخیره کرده و سپس در هر پرامپت به آن متغیر اشاره کنید. 1605 | این کار وقتی پرامپت‌ها را در برنامه‌های خودتان ادغام می‌کنید، بسیار منطقی است. 1606 |

1607 | 1608 | 1609 | 1610 | 1612 | 1613 |
1614 | 1615 |
1616 |

آزمایش با فرمت‌های ورودی و سبک‌های نوشتاری

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 |
1641 |
1642 |

1643 |

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 |
1660 | 1661 | 1662 |
1663 |

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 |
1692 | 1693 | 1694 |
1695 |

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 |
1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | در جدول ۴ از بخش "few-shot prompting" یک نمونه از خروجی ساختاریافته آورده شده. 1746 | 1747 |
1748 | 1749 |
1750 |

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 |
1773 | 1774 |
1775 |

کار با 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 |

1800 | 1801 |

1802 | بعد از اینکه اسکیمای JSON رو مشخص کردید، حالا می‌تونید داده‌های واقعی محصول رو به‌صورت یه 1803 | شیء JSON ارائه بدید که با اون اسکیمای تعریف‌شده هماهنگ باشه. 1804 |

1805 | 1806 | 1807 | 1808 | 1809 |

1810 | با پیش‌پردازش داده‌هاتون و به‌جای اینکه کل سندهای توضیح محصول رو به مدل بدید، اگر فقط 1811 | اسکیمای JSON و داده‌ی واقعی رو بهش بدید، باعث می‌شید مدل درک خیلی واضح‌تری از ویژگی‌های 1812 | محصول (مثل تاریخ عرضه و...) پیدا کنه. این کار باعث می‌شه مدل بتونه توضیحاتی تولید کنه که هم 1813 | دقیق‌تر و هم مرتبط‌تر باشن. 1814 |

1815 |

1816 | این روش ورودی ساختاریافته، که تمرکز مدل رو روی فیلدهای مهم و مرتبط می‌ذاره، مخصوصاً وقتی با 1817 | حجم زیادی از داده‌ها کار می‌کنید یا وقتی می‌خواید مدل‌های زبانی رو توی اپلیکیشن‌های 1818 | پیچیده‌تر استفاده کنید، خیلی مفیده و کارآمد. 1819 |

1820 | 1821 |
1822 | 1823 | 1824 |
1825 |

بهترین شیوه‌های زنجیره تفکر (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 |
1846 |
1847 |

مستندسازی پرامپت

1848 |

پرامپت‌های خود و نتایج آن‌ها را مستند کنید تا بتوانید آنچه کار می‌کند و آنچه کار نمی‌کند را 1849 | پیگیری کنید.

1850 | 1851 | 1852 | 1853 | 1854 | دانلود تمپلیت (docx) 1855 | 1856 |
1857 | 1858 |
1859 |

جمع‌بندی

1860 |

مهندسی پرامپت یک مهارت است که با تمرین و آزمایش بهبود می‌یابد. با استفاده از بهترین شیوه‌های 1861 | ذکر شده در این راهنما، می‌توانید پرامپت‌هایی ایجاد کنید که نتایج بهتری از مدل‌های زبانی بزرگ 1862 | تولید می‌کنند.

1863 | 1864 |

به یاد داشته باشید:

1865 |
    1866 |
  • واضح و مستقیم باشید
  • 1867 |
  • مثال‌های مناسب ارائه دهید
  • 1868 |
  • فرمت خروجی مورد نظر را مشخص کنید
  • 1869 |
  • از تکنیک‌های پیشرفته مانند زنجیره تفکر (CoT) برای مسائل پیچیده استفاده کنید
  • 1870 |
  • پرامپت‌های خود را مستند کنید و بهبود دهید
  • 1871 |
1872 | 1873 |

با تمرین و آزمایش مداوم، مهارت‌های مهندسی پرامپت شما به طور قابل توجهی بهبود خواهد یافت.

1874 |
1875 |
1876 | 1877 |
1878 |

7. نمونه کاربردهای عملی

1879 |

در این بخش، برخی از کاربردهای عملی مهندسی پرامپت را بررسی می‌کنیم که می‌توانید در پروژه‌های خود 1880 | از آن‌ها استفاده کنید.

1881 | 1882 |
1883 |

خلاصه‌سازی متن

1884 |
Summarize the following article in 3-5 sentences while preserving the key information:
1885 | 
1886 | {{ARTICLE_TEXT}}
1887 |
1888 | 1889 |
1890 |

تولید محتوا

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 |
1893 | 1894 |
1895 |

تحلیل احساسات

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 |
1902 | 1903 |
1904 |

استخراج اطلاعات

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 |
1917 | 1918 |
1919 |

تولید کد

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 |
1922 | 1923 |
1924 |

ترجمه زبان

1925 |
Translate the following text from English to Spanish, maintaining the same tone and style:
1926 | 
1927 | {{TEXT_TO_TRANSLATE}}
1928 |
1929 | 1930 |
1931 |

پاسخ به سوالات

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 |
1940 | 1941 |
1942 |

ایجاد طرح کلی

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 |
1945 |
1946 | 1947 |
1948 |

8. جمع‌بندی

1949 |

مهندسی پرامپت یک مهارت ضروری برای استفاده موثر از مدل‌های زبانی بزرگ است. در این آموزش، ما مفاهیم 1950 | اساسی مهندسی پرامپت، تنظیمات خروجی LLM، تکنیک‌های مختلف پرامپت، کاربردهای کدنویسی و بهترین 1951 | شیوه‌ها را پوشش دادیم.

1952 | 1953 |

به یاد داشته باشید که مهندسی پرامپت یک فرآیند تکراری است. آزمایش با پرامپت‌های مختلف، تنظیمات مدل 1954 | و تکنیک‌ها برای دستیابی به بهترین نتایج ضروری است. با تمرین و تجربه، شما می‌توانید پرامپت‌هایی 1955 | ایجاد کنید که پاسخ‌های دقیق، مرتبط و مفید از LLM‌ها دریافت کنند.

1956 | 1957 |

نکات کلیدی برای به خاطر سپردن:

1958 |
    1959 |
  1. واضح و دقیق باشید: دستورالعمل‌های واضح و دقیق ارائه دهید.
  2. 1960 |
  3. از مثال‌ها استفاده کنید: برای وظایف پیچیده، مثال‌هایی ارائه دهید تا مدل 1961 | الگو را درک کند.
  4. 1962 |
  5. فرمت خروجی را مشخص کنید: ساختار و فرمت خروجی مورد نظر خود را مشخص کنید. 1963 |
  6. 1964 |
  7. از تکنیک‌های پیشرفته استفاده کنید: برای مسائل پیچیده، از تکنیک‌هایی مانند 1965 | زنجیره تفکر (CoT) یا درخت تفکرات (ToT) استفاده کنید.
  8. 1966 |
  9. تنظیمات مدل را بهینه کنید: با دما، Top-K و Top-P برای دستیابی به تعادل 1967 | مناسب بین خلاقیت و دقت آزمایش کنید.
  10. 1968 |
  11. آزمایش و تکرار کنید: پرامپت‌های خود را مستند کنید، نتایج را ارزیابی کنید و 1969 | بر اساس بازخورد بهبود دهید.
  12. 1970 |
1971 | 1972 |

با پیشرفت فناوری LLM، مهندسی پرامپت نیز تکامل خواهد یافت. به روز ماندن با تکنیک‌های جدید و بهترین 1973 | شیوه‌ها به شما کمک می‌کند تا از این ابزارهای قدرتمند به طور موثر استفاده کنید.

1974 |
1975 | 1976 |
1977 |

کتاب‌های دیگر

1978 | 1981 |
1982 | 1983 | 1984 |
1985 | این ترجمه با استفاده از چندین مدل (Gemini و Grok) و ویرایش دستی تولید شده است.

1986 |
1987 | آخرین بروزرسانی: ۲۸ فروردین ۱۴۰۴ 1988 |
1989 | ☕ 👨🏼‍💻 @teal33t 1990 |
1991 |
1992 |
1993 | 1994 | 1995 | --------------------------------------------------------------------------------