پرامپت نویسی برای عامل‌های هوشمند (AI Agents)، فرایند طراحی پرامپت‌هایی است که به مدل زبانی بزرگ (Large Language Model یا LLM) اجازه می‌دهد در یک چرخه پیوسته استدلال، تصمیم‌گیری و اقدام کند و به‌جای پاسخ‌دهی منفعل، وظایف چندمرحله‌ای را به‌صورت خودمختار پیش ببرد.
این پرامپت‌ها، شامل تعریف نقش، فهرست ابزارها، قواعد حلقه، شرایط توقف و محدودیت‌های امنیتی هستند.
عاملی که پرامپت آن ضعیف طراحی شده باشد، در همان گام‌های اول شکست می‌خورد یا دستورهای ناخواسته اجرا می‌کند.
عاملی که پرامپت آن دقیق طراحی شده باشد، می‌تواند وظایف پیچیده را با کمترین نظارت انسانی به انجام برساند.
این راهنما اجزا، الگوها و ملاحظات پرامپت نویسی برای عامل‌های هوشمند را به‌صورت فنی بررسی می‌کند.

پرامپت نویسی برای عامل‌های هوشمند، یکی از پیچیده‌ترین حوزه‌های پرامپت نویسی است. در این حوزه، دیگر با یک پرسش و پاسخ ساده سر و کار نداریم؛ بلکه با یک چرخه تصمیم‌گیری پیوسته مواجه هستیم که در آن مدل باید در هر گام، وضعیت فعلی را تحلیل، یک اقدام انتخاب و بر اساس نتیجه، گام بعدی را برنامه‌ریزی کند. برای درک این حوزه، ابتدا باید با پرامپت نویسی چیست و روش ReAct در پرامپت نویسی آشنا باشیم.

در پروژه‌هایی که به ساخت عامل‌های خودمختار نیاز داشتیم، مشاهده شد که بزرگ‌ترین منبع خطا، نه ضعف مدل، بلکه ضعف طراحی پرامپت بوده است. عاملی که پرامپت آن مبهم باشد، در حلقه تصمیم‌گیری سرگردان می‌شود؛ عاملی که پرامپت آن دقیق باشد، حتی با یک مدل متوسط می‌تواند وظایف پیچیده را به انجام برساند. این نوشتار تلاش می‌کند اصول و الگوهای این حوزه را ارائه دهد.

پرامپت نویسی برای عامل‌های هوشمند را می‌توان با طراحی دستورالعمل عملیاتی یک کارمند مقایسه کرد: کارمند باید بداند نقش او چیست، چه ابزارهایی در اختیار دارد، در چه شرایطی باید اقدام کند و چه زمانی باید متوقف شود. در سامانه‌های LLM، این دستورالعمل همان پرامپت عامل است. برای مطالعه بیشتر درباره مبانی، صفحه Intelligent Agent در ویکی‌پدیا مرور مفیدی ارائه می‌دهد.

پرامپت نویسی برای عامل چیست؟

پرامپت نویسی برای عامل، فرایند طراحی پرامپتی است که به مدل زبانی اجازه می‌دهد در یک چرخه پیوسته، تصمیم بگیرد و اقدام کند. برخلاف پرامپت‌های معمولی که یک پاسخ واحد تولید می‌کنند، پرامپت عامل باید یک چرخه چندگامه را مدیریت کند.

در این حوزه، سه سطح تصمیم‌گیری وجود دارد:

  • تصمیم درباره اقدام بعدی: عامل باید تصمیم بگیرد چه کاری انجام دهد.
  • تصمیم درباره ابزار: عامل باید تصمیم بگیرد از کدام ابزار استفاده کند.
  • تصمیم درباره توقف: عامل باید تصمیم بگیرد چه زمانی متوقف شود.

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

تفاوت با پرامپت معمولی

پرامپت معمولی، یک درخواست و یک پاسخ دارد. پرامپت عامل، یک چرخه چندگامه دارد که در آن، هر گام بر اساس گام قبلی تصمیم‌گیری می‌شود. این تفاوت، پیچیدگی طراحی را چند برابر می‌کند.

عامل در مقابل چت‌بات

چت‌بات، یک پاسخ تولید می‌کند. عامل، یک وظیفه را به انجام می‌رساند. این تفاوت، در سطح معماری و طراحی پرامپت اساسی است. برای مقایسه دقیق‌تر، پست تفاوت عامل هوش مصنوعی و چت‌بات را ببینید.

پرامپت عامل، نه یک دستور، بلکه یک دستورالعمل عملیاتی است که چرخه تصمیم‌گیری را مدیریت می‌کند.

اجزای اصلی پرامپت عامل

یک پرامپت عامل مؤثر، از چند جزء اصلی تشکیل می‌شود:

  1. نقش و هویت: عامل باید بداند کیست و چه تخصصی دارد.
  2. فهرست ابزارها: عامل باید بداند چه ابزارهایی در اختیار دارد.
  3. قواعد حلقه: عامل باید بداند چگونه تصمیم بگیرد.
  4. شرایط توقف: عامل باید بداند چه زمانی متوقف شود.
  5. محدودیت‌ها: عامل باید بداند چه کارهایی را نباید انجام دهد.
  6. قالب خروجی: عامل باید بداند پاسخ نهایی چه ساختاری دارد.

هر یک از این اجزا، نقش مشخصی در عملکرد عامل ایفا می‌کند. در ادامه، هر جزء را به‌تفصیل بررسی می‌کنیم.

جزءهدفمثال
نقشتعریف هویت«تو یک توسعه‌دهنده وردپرس هستی»
ابزارهاتعریف قابلیت‌هاsearch، calculator، database
حلقهمدیریت تصمیمThought، Action، Observation
توقفجلوگیری از حلقه بی‌پایان«پس از ۱۰ گام متوقف شو»
محدودیتکنترل دامنه«فقط به داده ارائه‌شده تکیه کن»
قالبساختاردهی خروجی«پاسخ نهایی در قالب JSON»

تعریف نقش و هویت عامل

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

اجزای تعریف نقش

  • تخصص: عامل در چه حوزه‌ای متخصص است.
  • سطح تجربه: عامل در چه سطحی از تخصص عمل می‌کند.
  • سبک تصمیم‌گیری: عامل چگونه تصمیم می‌گیرد.
  • محدودیت‌های هویتی: عامل چه کارهایی را نباید انجام دهد.

نمونه‌ای از تعریف نقش

You are a senior WordPress developer agent with 10 years of experience.
Your primary objective is to diagnose and resolve WordPress issues
using the tools provided. You must be cautious and verify each step
before proceeding.

این تعریف، عامل را به سمت تصمیم‌گیری دقیق و محتاطانه هدایت می‌کند.

نقش در عامل‌های تخصصی

در عامل‌های تخصصی، تعریف نقش می‌تواند شامل جزئیات بیشتری باشد. مثلاً، عاملی که برای تحلیل امنیتی طراحی شده است، باید بداند که هدف اصلی آن شناسایی آسیب‌پذیری‌ها است، نه بهینه‌سازی عملکرد.

تعریف ابزارها

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

اجزای تعریف ابزار

  • نام ابزار: یک نام واضح و مشخص.
  • توصیف: توضیحی که مدل بر اساس آن تصمیم می‌گیرد.
  • ورودی: پارامترهایی که ابزار دریافت می‌کند.
  • خروجی: ساختار داده‌ای که ابزار بازمی‌گرداند.
  • محدودیت‌ها: شرایطی که ابزار در آن‌ها معتبر است.

نمونه‌ای از تعریف ابزار

Available Tools:

1. search(query: string) -> results: list
   Description: Search the knowledge base for relevant documents.
   Use this when you need factual information.

2. calculate(expression: string) -> result: number
   Description: Evaluate a mathematical expression.
   Use this for numerical computations.

3. execute_code(code: string) -> output: string
   Description: Execute Python code in a sandbox.
   Use this only when necessary and with caution.

کیفیت توصیف ابزار

کیفیت توصیف ابزار، مستقیماً بر عملکرد عامل اثر می‌گذارد. توصیف‌های مبهم، عامل را به سمت انتخاب ابزار نامناسب هدایت می‌کنند. برای بهبود این حوزه، پست پرامپت نویسی برای عامل‌های هوشمند را ببینید.

طراحی حلقه تصمیم‌گیری

حلقه تصمیم‌گیری، قلب پرامپت عامل است. در این حلقه، عامل در هر گام تصمیم می‌گیرد که چه کاری انجام دهد.

الگوی Thought-Action-Observation

رایج‌ترین الگوی حلقه، الگوی Thought-Action-Observation است که در روش ReAct معرفی شده است:

Thought: I need to find the current version of WordPress.
Action: search("latest WordPress version")
Observation: WordPress 6.4 is the latest stable version.
Thought: Now I can answer the user question.
Final Answer: WordPress 6.4 is the latest stable version.

قواعد تصمیم‌گیری

در پرامپت، باید قواعد تصمیم‌گیری به‌صورت صریح تعریف شوند:

  • چه زمانی ابزار فراخوانی شود: اگر اطلاعات کافی نیست، از ابزار استفاده کن.
  • چه زمانی پاسخ داده شود: اگر اطلاعات کافی است، پاسخ نهایی را بده.
  • چه زمانی بازگشت انجام شود: اگر یک اقدام شکست خورد، مسیر جایگزین را امتحان کن.

حلقه در سامانه‌های پیچیده

در سامانه‌های پیچیده، حلقه می‌تواند شامل چندین سطح تصمیم‌گیری باشد. برای جزئیات بیشتر، پست روش ReAct در پرامپت نویسی را ببینید.

شرایط توقف

شرایط توقف، از حلقه بی‌پایان جلوگیری می‌کند. در پرامپت عامل، باید شرایط توقف به‌صورت صریح تعریف شوند.

انواع شرایط توقف

  • توقف بر اساس موفقیت: اگر پاسخ نهایی تولید شد، متوقف شو.
  • توقف بر اساس شکست: اگر پس از N تلاش موفق نشدی، متوقف شو.
  • توقف بر اساس محدودیت منابع: اگر از حد مشخصی فراتر رفتی، متوقف شو.
  • توقف بر اساس زمان: اگر از حد زمانی فراتر رفتی، متوقف شو.

نمونه‌ای از تعریف توقف

Termination Conditions:
- If you have the final answer, respond with "FINAL ANSWER: ...".
- If you have used more than 10 actions without success, respond with
  "UNABLE TO COMPLETE: ...".
- If any tool returns an error more than 3 times, switch strategy.

خطر حلقه بی‌پایان

بدون شرایط توقف صریح، عامل ممکن است در حلقه بی‌پایان گرفتار شود. این مشکل، در سامانه‌های تولیدی هزینه‌های سنگینی ایجاد می‌کند.

مدیریت حافظه و زمینه

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

راهکارهای مدیریت حافظه

  • خلاصه‌سازی: تاریخچه طولانی به خلاصه تبدیل می‌شود.
  • انتخاب گزینشی: فقط گام‌های مرتبط نگهداری می‌شوند.
  • پنجره لغزان: فقط N گام آخر نگهداری می‌شود.
  • حافظه بلندمدت: اطلاعات کلیدی در یک حافظه جداگانه ذخیره می‌شود.

برای جزئیات بیشتر، پست مدیریت پنجره زمینه در پرامپت نویسی را ببینید.

حافظه بلندمدت در عامل‌ها

در عامل‌های پیشرفته، از یک حافظه بلندمدت برای نگهداری اطلاعات کلیدی استفاده می‌شود. این حافظه می‌تواند از یک پایگاه داده برداری استفاده کند. برای درک این مفهوم، پست embedding چیست را ببینید.

ملاحظات امنیتی

عامل‌های هوشمند، به‌دلیل توانایی اقدام، سطح حمله گسترده‌تری دارند. ملاحظات امنیتی در طراحی پرامپت عامل، حیاتی است.

ریسک‌های امنیتی عامل

  • تزریق پرامپت: مهاجم می‌تواند با دستکاری ورودی، عامل را به اقدام ناخواسته وادار کند. برای جزئیات، پست تزریق پرامپت چیست را ببینید.
  • تزریق غیرمستقیم: در عامل‌هایی که داده بیرونی می‌خوانند، داده آلوده می‌تواند عامل را منحرف کند.
  • اجرای دستور مخرب: اگر عامل به ابزارهای اجرایی دسترسی دارد، مهاجم می‌تواند دستور مخرب اجرا کند.
  • افشای داده: عامل ممکن است داده‌های حساس را از طریق خروجی افشا کند.

راهکارهای امنیتی

  • اصل کمترین دسترسی: هر ابزار باید فقط دسترسی‌های لازم را داشته باشد.
  • Sandbox: اجرای دستورها در یک محیط ایزوله انجام شود.
  • تأیید انسانی: برای اقدام‌های حساس، تأیید انسانی الزامی باشد.
  • پاک‌سازی ورودی: ورودی‌ها قبل از ارسال به عامل پاک‌سازی شوند. برای جزئیات، پست پاک‌سازی پرامپت را ببینید.
  • پایش مداوم: اقدام‌های عامل به‌صورت مستمر پایش شوند. برای جزئیات، پست مانیتورینگ پرامپت را ببینید.

در طراحی پرامپت عامل، امنیت یک لایه اضافی نیست؛ بخشی از ساختار اصلی است.

الگوهای رایج طراحی

چند الگوی رایج برای طراحی پرامپت عامل وجود دارد:

الگوی ReAct

در این الگو، عامل در هر گام یک اندیشه، یک اقدام و یک مشاهده تولید می‌کند. این الگو، ساده‌ترین و پرکاربردترین الگو است.

الگوی Plan-and-Execute

در این الگو، عامل ابتدا یک برنامه کامل تولید می‌کند و سپس گام‌به‌گام آن را اجرا می‌کند. این الگو برای وظایف با ساختار مشخص مناسب است.

الگوی Reflexion

در این الگو، عامل پس از هر تلاش، به بازتاب عملکرد خود می‌پردازد و از خطاها یاد می‌گیرد. این الگو، دقت را در وظایف چندمرحله‌ای افزایش می‌دهد.

الگوی Multi-Agent

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

الگومناسب برایپیچیدگی
ReActوظایف عمومیپایین
Plan-and-Executeوظایف ساختاریافتهمتوسط
Reflexionوظایف پیچیدهمتوسط
Multi-Agentوظایف بسیار پیچیدهبالا

ارزیابی عملکرد عامل

ارزیابی عملکرد عامل، بخش حیاتی طراحی است. برای معیارهای ارزیابی، پست معیارهای ارزیابی پرامپت را ببینید.

معیارهای ارزیابی

  • نرخ موفقیت: درصد وظایفی که با موفقیت انجام شده‌اند.
  • تعداد گام‌ها: میانگین تعداد گام‌های لازم برای انجام وظیفه.
  • نرخ خطای ابزار: درصد فراخوانی‌های ناموفق ابزار.
  • زمان پاسخ: زمان لازم برای انجام وظیفه.
  • هزینه توکن: تعداد توکن مصرفی در کل چرخه.

روش‌های ارزیابی

  • مجموعه تست استاندارد: ارزیابی روی یک مجموعه تست مشترک.
  • آزمون A/B: مقایسه دو نسخه از پرامپت عامل. برای جزئیات، پست آزمون A/B برای پرامپت‌ها را ببینید.
  • ارزیابی انسانی: در موارد حساس، از داور انسانی استفاده می‌شود.
  • Simulated Environment: ارزیابی عامل در یک محیط شبیه‌سازی‌شده.

پرسش‌های پرتکرار درباره پرامپت عامل

پرامپت عامل چه تفاوتی با پرامپت معمولی دارد؟

پرامپت معمولی یک پاسخ واحد تولید می‌کند. پرامپت عامل، یک چرخه چندگامه تصمیم‌گیری را مدیریت می‌کند.

چند ابزار برای یک عامل کافی است؟

تعداد ابزار به نوع وظیفه بستگی دارد. در وظایف ساده، ۲ تا ۵ ابزار کافی است. در وظایف پیچیده، تعداد بیشتری می‌تواند مفید باشد اما انتخاب ابزار را دشوارتر می‌کند.

چطور از حلقه بی‌پایان در عامل جلوگیری کنیم؟

با تعریف شرایط توقف صریح، شامل حداکثر گام‌ها، حداکثر زمان و حداکثر تلاش‌های ناموفق.

آیا عامل‌ها نیازمند حافظه بلندمدت هستند؟

در وظایف ساده، حافظه کوتاه‌مدت کافی است. در وظایف پیچیده که به اطلاعات تاریخی نیاز دارند، حافظه بلندمدت ضروری است.

آیا پرامپت عامل بر هزینه اثر دارد؟

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

آیا پرامپت عامل با امنیت تداخل دارد؟

بله. عامل‌های با دسترسی به ابزار، سطح حمله گسترده‌تری دارند. برای جزئیات، پست بهترین روش‌های امنیت پرامپت را ببینید.

آیا پرامپت عامل با سایر تکنیک‌ها قابل ترکیب است؟

بله. می‌توان از تکنیک‌هایی مانند مجموعه‌های پرامپت و خودسازگاری در طراحی پرامپت عامل استفاده کرد.

آیا پرامپت عامل برای همه وظایف مناسب است؟

در وظایف چندمرحله‌ای که نیازمند تعامل با ابزار هستند، بله. در وظایف ساده، پرامپت معمولی کافی است.

چطور عملکرد عامل را در محیط تولید پایش کنیم؟

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

آیا پرامپت عامل نیازمند حاکمیت است؟

در سازمان‌های بزرگ، بله. برای جزئیات، پست حاکمیت پرامپت را ببینید.

آیا می‌توان از یک چارچوب آماده برای ساخت عامل استفاده کرد؟

بله. چارچوب‌هایی مانند LangChain و LangGraph امکانات ساختاریافته‌ای برای ساخت عامل فراهم می‌کنند. برای جزئیات، پست لنگ‌چین برای پرامپت نویسی را ببینید.

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

پرامپت نویسی برای عامل‌های هوشمند، یکی از پیچیده‌ترین و در عین حال جذاب‌ترین حوزه‌های پرامپت نویسی است. در این حوزه، پرامپت نه یک دستور، بلکه یک دستورالعمل عملیاتی است که چرخه تصمیم‌گیری، تعامل با ابزار، مدیریت حافظه و شرایط توقف را کنترل می‌کند. طراحی دقیق این اجزا، تفاوت میان یک عامل ناکارآمد و یک عامل حرفه‌ای است.

پرامپت عامل، نه یک دستور، بلکه یک دستورالعمل عملیاتی است که چرخه تصمیم‌گیری را مدیریت می‌کند.

در پروژه‌هایی که به ساخت عامل‌های خودمختار نیاز داشتیم، مشاهده شد که طراحی دقیق پرامپت، مهم‌ترین عامل موفقیت است. توصیه می‌شود ابتدا با الگوی ReAct شروع کنید و به‌تدریج به الگوهای پیشرفته‌تر مهاجرت کنید. اگر تجربه‌ای در ساخت عامل‌های هوشمند در پروژه‌های واقعی دارید، برای ما جالب است بدانید کدام الگو در دامنه شما بهترین عملکرد را داشته است.