LangChain
LangChain یکی از محبوبترین فریمورکهای متنباز برای ساخت اپلیکیشنهای مبتنی بر مدل زبانی است — از یک چتبات ساده تا ایجنتهای پیچیده با چند ابزار.
LangChain چیست؟
هدف اصلی LangChain، استانداردسازی و سادهسازی اتصال قطعات مختلف یک اپلیکیشن هوش مصنوعی به یکدیگر است: مدل زبانی، پرامپت، منابع داده بیرونی، حافظه و ابزارها. بهجای نوشتن کد دستساز برای هر ادغام، LangChain رابطهای یکسانی ارائه میدهد که با دهها ارائهدهندهی مدل و ابزار مختلف کار میکند.
اجزای اصلی
- Models — رابط یکسان برای فراخوانی مدلهای زبانی مختلف
- Prompts — قالبهای پرامپت قابلاستفادهی مجدد و پارامتری
- Chains — ترکیب چند مرحله (پرامپت → مدل → پردازش خروجی) در یک واحد قابلفراخوانی
- Retrievers — رابط یکسان برای اتصال به پایگاههای داده برداری، برای پیادهسازی RAG
- Tools / Agents — تعریف ابزارهایی که مدل میتواند فراخوانی کند و منطق تصمیمگیری برای استفاده از آنها
LCEL: زبان ترکیب زنجیرهها
LangChain Expression Language (LCEL) روشی اعلانی (Declarative) برای ترکیب اجزا با عملگر | (pipe) است —
شبیه لولهکشی در خط فرمان یونیکس. هر جزء ورودی میگیرد، پردازش میکند و خروجی را به جزء بعدی پاس میدهد.
نمونه کد
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_anthropic import ChatAnthropic
prompt = ChatPromptTemplate.from_template(
"قیمت و موجودی محصول {product} را به فارسی خلاصه کن."
)
model = ChatAnthropic(model="claude-sonnet")
chain = prompt | model | StrOutputParser()
result = chain.invoke({"product": "هدفون بیسیم مدل X"})
print(result)
Streaming و Callbacks
منتظر ماندن تا کل پاسخ مدل تولید شود، برای رابطهای کاربری تعاملی تجربهی خوبی نیست — به همین دلیل هر جزء LCEL علاوه بر
invoke()، متد stream() را هم پیادهسازی میکند که توکنها را همان لحظه که تولید میشوند، یکییکی برمیگرداند
(دقیقاً همان تجربهی «تایپشدن زندهی» پاسخ در اکثر چتباتهای امروزی).
علاوه بر این، Callbacks اجازه میدهند به رویدادهای میانی یک زنجیره (شروع فراخوانی مدل، دریافت هر توکن، فراخوانی یک ابزار، بروز خطا) هوک بزنید — بدون تغییر منطق اصلی زنجیره. این مکانیزم پایهی کار ابزارهایی مثل LangSmith برای ثبت لاگ و ردیابی است.
اکوسیستم مرتبط
LangSmith ابزار مشاهدهپذیری (Observability) و دیباگ برای ردیابی اجرای زنجیرهها است. برای ساخت ایجنتهای پیچیدهتر با کنترل دقیقتر روی جریان اجرا (بهخصوص حلقه و شاخهی شرطی)، تیم LangChain فریمورک LangGraph را روی همین اجزا ساخته است.
چه زمانی LangChain مناسب است؟
برای اپلیکیشنهایی با جریان نسبتاً خطی (پرامپت → مدل → پردازش، یا یک پایپلاین RAG استاندارد)، LangChain سرعت توسعه را بهشکل چشمگیری بالا میبرد. برای رفتار ایجنتی پیچیده با تصمیمگیریهای چندشاخه و حالت پایدار، معمولاً LangGraph انتخاب بهتری است.
سوالات متداول
آیا LangChain فقط برای Python است؟
خیر، نسخهی JavaScript/TypeScript آن هم بهطور کامل نگهداری میشود.