هنگام توسعه برنامههای مدلهای زبانی بزرگ (LLM)، تفاوت بین یک نمونه اولیه و یک سیستم آماده برای تولید اغلب در یک عنصر خاص نهفته است: پرامپت سیستمی. برخلاف پرامپتهای کاربری که گذرا و وابسته به زمینه هستند، پرامپتهای سیستمی به عنوان چارچوب اساسی برای رفتار هوش مصنوعی عمل میکنند. آنها شخصیت، محدودیتها و مرزهای عملیاتی را تعریف میکنند که یکپارچگی را در هزاران تعامل تضمین میکنند.
برای توسعهدهندگان متوسط تا پیشرفته، عبور از دستورالعملهای ساده «به عنوان یک X عمل کن» حیاتی است. یک پرامپت سیستمی مستحکم باید موارد حاشیهای را مدیریت کند، قالبهای خروجی سختگیرانه را اعمال کند و توهمها (Hallucinations) را کاهش دهد. این مقاله اجزای معماری پرامپتهای سیستمی مؤثر را بررسی میکند و الگوهای عملی برای پیادهسازی ارائه میدهد.
تعریف هویت و دامنه
گام اول ایجاد یک هویت شفاف است. با این حال، این فقط درباره نقشآفرینی نیست؛ بلکه درباره تعیین دامنه دانش و محدودیتهای رفتاری مدل است. باید صریحاً بیان کنید که مدل چیست و به همان اندازه مهم، چیست نیست.
یک ربات پشتیبانی را در نظر بگیرید. بدون تعریف دقیق دامنه، مدل ممکن است به سمت توصیههای عمومی یا حتی توصیههای مالی منحرف شود که میتواند ریسک قانونی ایجاد کند. با تعریف محدودیتهای منفی، سطح خطا را کاهش میدهید.
SYSTEM_PROMPT = """
You are an expert technical support agent for Acme Corp's Python SDK.
## Identity
- Tone: Professional, empathetic, and concise.
- Role: Troubleshooting code issues and explaining API usage.
## Constraints
- You are ONLY to discuss Acme Corp's Python SDK.
- If a user asks about other languages or libraries, politely decline and suggest checking the official documentation.
- Never invent error codes or API endpoints. If you do not know the answer, state that clearly and escalate to a human agent.
"""
ساختاردهی برای پیشبینیپذیری
مدلهای LLM به ساختار حساس هستند. استفاده از سرتیترهای مارکداون، نکات موردی و جداکنندههای شفاف در پرامپت سیستمی به مدل کمک میکند تا دستورالعملها را مؤثرتر تجزیه کند. این موضوع به ویژه زمانی اهمیت دارد که قالبهای خروجی خاصی، مانند JSON، مورد نیاز باشد.
اگر برنامه شما به تجزیه دادههای ساختاریافته متکی است، پرامپت سیستمی باید اسکیمای (Schema) را صریحاً تعریف کند. ابهام در اینجا منجر به خطاهای تجزیه در بکاند شما میشود. همیشه اگر قالب خروجی پیچیده است، یک مثال «چندشوت» (few-shot) را در پرامپت سیستمی گنجانده باشید.
SYSTEM_PROMPT = """
Analyze the user's log entry and classify the issue.
## Output Format
Return ONLY valid JSON with the following schema:
{
"severity": "low" | "medium" | "high",
"category": "auth" | "database" | "network" | "unknown",
"summary": "A brief one-sentence summary of the issue"
}
## Examples
Input: "Failed to connect to db on port 5432"
Output: {"severity": "high", "category": "database", "summary": "Connection timeout to database port."}
Input: "User 1234 login attempt denied"
Output: {"severity": "medium", "category": "auth", "summary": "Authentication failure for user 1234."}
"""
زمینه پویا و زنجیرهبندی
پرامپتهای سیستمی ایستا قدرتمند هستند، اما پرامپتهای پویا انعطافپذیرترند. در برنامههای پیچیده، ممکن است متغیرهای پویا را با استفاده از موتورهای قالب (مانند Jinja2 در Python) در پرامپت سیستمی تزریق کنید. این کار به شما امکان میدهد رفتار مدل را بر اساس سطوح کاربر، زمان فعلی یا زمینه بازیابی شده (RAG) تنظیم کنید.
from string import Template
template_str = """
You are an assistant for $user_role.
Current Date: $current_date
Context: $retrieved_documents
Answer the user's query using the context provided. If the context does not contain the answer, say "I don't know."
"""
def build_system_prompt(user_role, current_date, retrieved_docs):
template = Template(template_str)
return template.safe_substitute(
user_role=user_role,
current_date=current_date,
retrieved_documents=retrieved_docs
)
نتیجهگیری
پرامپتهای سیستمی ستون فقرات برنامههای LLM قابل اعتماد هستند. آنها فقط متن نیستند؛ بلکه کدی هستند که مسیر استدلال مدل را شکل میدهد. با تعریف دقیق هویت، استفاده از قالبهای ساختاریافته و بهرهگیری از قالبهای پویا، توسعهدهندگان میتوانند توهمها را به طور قابل توجهی کاهش دهند و تجربه کاربری را بهبود بخشند. هنگام ساخت ویژگی بعدی هوش مصنوعی خود، پرامپت سیستمی خود را با همان دقتی که به قرارداد API خود میکنید، مدیریت کنید: به صورت شفاف، خاص و تکراری.