قالب‌های پیشنهادی

مدل‌های زبان، متن را به عنوان ورودی می‌پذیرند که معمولاً به عنوان "پیشنهاد" اشاره می‌شود. در طی توسعه، اغلب پیشنهادها به صورت مستقیم پیش‌فرض نمی‌شوند؛ چرا که این امر منجر به مدیریت ناکارا می‌شود. به جای این‌کار، از قالب‌های پیشنهادی استفاده می‌شود تا پیشنهادها را مدیریت کنند. این شبیه به قالب‌های پیشنهادی برای محتوای پیام کوتاه (SMS) یا ایمیل است.

قالب پیشنهاد چیست؟

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

یک قالب پیشنهاد می‌تواند شامل محتوای زیر باشد:

  • دستورالعمل‌های ارسال شده به مدل زبان بزرگ (LLM).
  • مجموعه‌ای از نمونه‌های سؤال و پاسخ برای یادآوری مدل هوش مصنوعی از قالب انتظاری در برگرداندن درخواست‌ها.
  • سؤالات ارسال شده به مدل زبان.

ایجاد یک قالب پیشنهاد

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

from langchain.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "یک شوخی {صفت} درباره {موضوع} به من بگو."
)

prompt_template.format(adjective="خنده‌دار", content="مرغ‌ها")

نتیجه خروجی الگو:

'یک شوخی خنده‌دار درباره مرغ‌ها به من بگو.'

قالب‌های پیشنهاد پیام چت

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

به عنوان مثال، در رابط برآوردهای گفتگوی OpenAI، مدل گفتگوی OpenAI برای پیام‌های گفتگو مختلف، سه نوع نقش تعریف می‌کند: یاری، انسان یا نقش سیستمی:

  • پیام‌های یاری به پاسخ‌های هوش مصنوعی ارجاع داده می‌شود.
  • پیام‌های انسان به پیام‌های ارسالی توسط کاربر به هوش مصنوعی ارجاع داده می‌شود.
  • پیام‌های سیستم معمولاً برای توصیف هویت هوش مصنوعی استفاده می‌شود.

مثالی از ایجاد یک قالب پیام چت:

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("system", "شما یک ربات هوشمند هستید. نام شما {نام} است."),
        ("human", "سلام، حالت چطور است؟"),
        ("ai", "خوبم، ممنون!"),
        ("human", "{ورود_کاربر}")
    ]
)

messages = chat_template.format_messages(name="باب", user_input="نام شما چیست؟")

مثال دیگری از فرمت پیام:

from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI

chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "شما یک یاری مفید هستید که متن کاربر را دوباره می‌نویسد تا مهملیت آن بیشتر باشد."
            )
        ),
        HumanMessagePromptTemplate.from_template("{متن}"),
    ]
)

messages = chat_template.format_messages(text="من دوست ندارم چیزهای خوشمزه را بخورم")
print(messages)

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