درس ۴ از ۶، مدل‌ها و پرامپت

قالب پرامپت و زنجیره با LCEL

متنی ۲۵ دقیقه به‌روز شده در ۶ آبان ۱۴۰۵

پرامپت‌هایی که با f-string ساخته می‌شوند خیلی زود بی‌نظم می‌شوند. ChatPromptTemplate پرامپت را به یک شیء قابل‌استفاده‌ی دوباره تبدیل می‌کند.

قالب پرامپت#

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "تو مدرس برنامه‌نویسی هستی. به زبان ساده و با یک مثال توضیح بده."),
    ("human", "{topic} را توضیح بده."),
])

prompt.invoke({"topic": "دکوراتور در پایتون"})

خروجی invoke روی قالب، فهرست پیام‌های آماده برای مدل است.

LCEL: وصل کردن اجزا#

هر جزء LangChain یک Runnable است و Runnableها را می‌شود با | پشت هم گذاشت. خروجی هر جزء ورودی جزء بعدی است:

from langchain_core.output_parsers import StrOutputParser

chain = prompt | model | StrOutputParser()
print(chain.invoke({"topic": "دکوراتور در پایتون"}))
ورودی (dict) ─◄ prompt ─◄ پیام‌ها ─◄ model ─◄ AIMessage ─◄ parser ─◄ str

چون زنجیره هم یک Runnable است، stream و batch را رایگان دارد:

chain.batch([{"topic": "generator"}, {"topic": "context manager"}])

تمرین این درس

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

تمرین: اولین زنجیره با LangChain

۵ تمرین، ۱۰۰ امتیاز. حد قبولی ۶۰٪.