درس ۴ از ۶، مدلها و پرامپت
قالب پرامپت و زنجیره با 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
۵ تمرین، ۱۰۰ امتیاز. حد قبولی ۶۰٪.