الأدوات والموارد والتعليمات

قوالب التعليمات في MCP

4 دقيقة للقراءة

يسمح MCP للخوادم بكشف قوالب تعليمات قابلة لإعادة الاستخدام يمكن لمضيفي الذكاء الاصطناعي استدعاؤها. التعليمات هي بدايات محادثة مسبقة البناء مع وسائط قابلة للتكوين.

لماذا التعليمات؟

التعليمات مفيدة لـ:

  • توحيد التفاعلات الشائعة
  • توفير نقاط بداية خاصة بالمجال
  • تغليف التعليمات المعقدة

تعريف التعليمات

from mcp.types import Prompt, PromptArgument, PromptMessage, TextContent

@server.list_prompts()
async def list_prompts():
    return [
        Prompt(
            name="code_review",
            description="مراجعة الكود للممارسات الجيدة والمشاكل",
            arguments=[
                PromptArgument(
                    name="language",
                    description="لغة البرمجة",
                    required=True
                ),
                PromptArgument(
                    name="focus",
                    description="ما يجب التركيز عليه (الأمان، الأداء، الأسلوب)",
                    required=False
                )
            ]
        )
    ]

توليد محتوى التعليمات

عندما يُطلب تعليمات، أرجع الرسائل الفعلية:

@server.get_prompt()
async def get_prompt(name: str, arguments: dict):
    if name == "code_review":
        language = arguments["language"]
        focus = arguments.get("focus", "الممارسات الجيدة العامة")

        return [
            PromptMessage(
                role="user",
                content=TextContent(
                    type="text",
                    text=f"""يرجى مراجعة كود {language} التالي.
التركيز على: {focus}

قدم اقتراحات محددة مع أرقام الأسطر حيث ينطبق.
قيّم الكود من 1-10 واشرح تقييمك."""
                )
            )
        ]

تعليمات متعددة الأدوار

يمكن أن تتضمن التعليمات رسائل متعددة لسير العمل المعقد:

@server.get_prompt()
async def get_prompt(name: str, arguments: dict):
    if name == "debug_session":
        return [
            PromptMessage(
                role="user",
                content=TextContent(
                    type="text",
                    text="سأشارك خطأ. ساعدني في تصحيحه خطوة بخطوة."
                )
            ),
            PromptMessage(
                role="assistant",
                content=TextContent(
                    type="text",
                    text="سأساعدك في التصحيح. يرجى مشاركة رسالة الخطأ والكود ذي الصلة."
                )
            ),
            PromptMessage(
                role="user",
                content=TextContent(
                    type="text",
                    text=f"الخطأ: {arguments['error']}\nالكود: {arguments['code']}"
                )
            )
        ]

وسائط التعليمات الديناميكية

جلب خيارات الوسائط ديناميكياً:

Prompt(
    name="query_database",
    description="الاستعلام عن جدول محدد",
    arguments=[
        PromptArgument(
            name="table",
            description="اسم الجدول",
            required=True,
            # يمكن التحقق منه مقابل المخطط الفعلي
        )
    ]
)

في القسم التالي، سنبني خادم MCP كامل بأدوات وموارد وتعليمات. :::

اختبار

اختبار الوحدة 3: الأدوات والموارد والتعليمات

خذ الاختبار