درس ۱۱ از ۳۳

Prompts در client (Prompts in the client)

عنوان اصلی: Prompts in the client

هدف یادگیری: discover و invoke کردن promptها از client، render به‌صورت slash command یا منوی template.

مفاهیم کلیدی: list_prompts، get_prompt، UX به‌صورت slash command، API completion برای auto-fill argument.

سمت client از prompts، آینه tools و resources است. بعد از initialization، یک‌بار list_prompts() را صدا بزنید و هر بار که notifications/prompts/list_changed می‌رسد دوباره. وقتی کاربر یک prompt را انتخاب می‌کند، argumentها را از طریق UI host جمع کنید (و اختیاری از API completion/complete برای پیشنهاد مقدار استفاده کنید)، سپس get_prompt(name, arguments) را صدا بزنید. آرایه messages برگردانده‌شده به‌عنوان نوبت بعدی user به مکالمه اضافه می‌شود.

مثال عملی — Python client

prompts = await session.list_prompts()
for p in prompts.prompts:
    print(p.name, "-", p.description)

result = await session.get_prompt(
    "code_review",
    arguments={"code": "def hello():\n    print('world')"},
)
for msg in result.messages:
    print(f"[{msg.role}] {msg.content.text}")

اشتباهات رایج

  • اسکیپ کردن list_prompts() در حلقه UI host — slash commandها ناپدید می‌شوند.
  • فرستادن messages برگشتی prompt به‌عنوان system prompt به‌جای نوبت‌های مکالمه. فیلد role canonical است.
  • auto-invoke کردن promptها. آن‌ها user-controlled هستند؛ LLM نباید به‌صورت خودسرانه prompts/get را صدا بزند.