LangChain for Beginners: Build Your First AI Agent
LangChain is the framework that powers most production AI applications. This step-by-step guide shows you how to build a real AI agent using LangChain.
LangChain برای مبتدیان: اولین عامل هوش مصنوعی خود را بسازید
LangChain به استاندارد اصلی ساخت اپلیکیشنهای هوش مصنوعی در محیط واقعی تبدیل شده است. اگر تا به حال مستقیماً با API اوپنای کار کردهاید، میدانید که برای ساخت یک چتبات ساده کافی است — اما LangChain چیز دیگری است. این فریمورک به شما امکان میدهد سیستمهای پیچیده هوش مصنوعی بسازید: عاملهایی که در اینترنت جستجو میکنند، کد اجرا میکنند، از اسناد شما یاد میگیرند و وظایف چندمرحلهای را انجام میدهند.
این راهنما شما را از صفر تا ساخت یک عامل هوش مصنوعی واقعی میبرد — با کدهای اجراشدنی در هر مرحله.
LangChain چیست؟
LangChain یک فریمورک متنباز پایتون (و جاوااسکریپت) برای ساخت اپلیکیشنهای مبتنی بر مدلهای زبانی بزرگ است. این پروژه در اواخر ۲۰۲۲ منتشر شد و به سرعت در صنعت فراگیر شد. LangChain ابزارهای آمادهای فراهم میکند که ساخت سیستمهای هوش مصنوعی پیچیده را بسیار سریعتر از کار با API خام میکند.
LangChain چه مشکلاتی را حل میکند؟
بدون یک فریمورک مثل LangChain، ساخت یک اپلیکیشن هوش مصنوعی واقعی نیازمند حل دهها مشکل زیرساختی از صفر است:
- چگونه به هوش مصنوعی حافظه مکالمات قبلی بدهیم؟
- چگونه هوش مصنوعی را به اسناد و دانش شرکت متصل کنیم؟
- چگونه به هوش مصنوعی ابزار بدهیم — مثل جستجو در وب یا اجرای کد؟
- چگونه چندین فراخوانی هوش مصنوعی را به یک pipeline زنجیر کنیم؟
- چگونه بین ارائهدهندگان مختلف (OpenAI, Anthropic, Google) جابجا شویم؟
LangChain همه این مشکلات را با اجزای استاندارد و قابل ترکیب حل میکند.
مفاهیم اصلی
قبل از نوشتن کد، بیایید مفاهیم کلیدی را بفهمیم:
Models (مدلها)
Wrapper هایی که رابط یکسانی برای هر ارائهدهنده LLM فراهم میکنند — OpenAI، Anthropic، Google یا مدلهای محلی. تغییر از GPT-4o به Claude فقط یک خط کد است.
Prompt Templates (قالبهای prompt)
ساختارهای قابل استفاده مجدد با جاهای خالی متغیر. به جای کدنویسی سخت prompt ها، قالبها به شما اجازه میدهند الگوهای prompt را یک بار تعریف کنید.
Chains (زنجیرهها)
LangChain Expression Language (LCEL) به شما اجازه میدهد pipeline های پیچیده با سینتکس ساده pipe بسازید: prompt | model | output_parser.
Memory (حافظه)
اجزایی برای ذخیره و بازیابی تاریخچه مکالمه. بدون حافظه، هر مکالمه از صفر شروع میشود.
Tools (ابزارها)
توابعی که عاملهای هوش مصنوعی میتوانند فراخوانی کنند: جستجوی وب، اجرای کد پایتون، query از پایگاه داده یا هر تابع سفارشی که تعریف کنید.
Agents (عاملها)
قویترین جز LangChain. یک عامل یک LLM است که تصمیم میگیرد از کدام ابزارها، به چه ترتیبی و چگونه استفاده کند.
Retrievers و Vector Stores
اجزایی برای جستجوی معنایی در اسناد — سیستم RAG برای پاسخ به سوالات از دانشنامههای خاص.
راهاندازی LangChain
pip install langchain langchain-openai langchain-community chromadb python-dotenv
فایل .env بسازید:
OPENAI_API_KEY=your_api_key_here
اولین زنجیره: سوال و جواب ساده
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# مدل
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# قالب prompt
prompt = ChatPromptTemplate.from_messages([
("system", "شما یک دستیار هوش مصنوعی مفید هستید. پاسخهای دقیق و مختصر بدهید."),
("user", "{question}")
])
# زنجیره
chain = prompt | model | StrOutputParser()
# استفاده
result = chain.invoke({"question": "LangChain چیست؟"})
print(result)
اضافه کردن حافظه
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessage, AIMessage
model = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_messages([
("system", "شما یک دستیار مفید هستید."),
MessagesPlaceholder(variable_name="history"),
("user", "{input}")
])
chain = prompt | model
# تاریخچه مکالمه
history = []
def chat(user_input: str) -> str:
response = chain.invoke({
"history": history,
"input": user_input
})
history.append(HumanMessage(content=user_input))
history.append(AIMessage(content=response.content))
return response.content
print(chat("سلام، اسمم علی است"))
print(chat("اسمم چیه؟")) # حافظه کار میکند!
ساخت سیستم RAG (پاسخ از اسناد)
RAG (Retrieval-Augmented Generation) به هوش مصنوعی امکان میدهد از اسناد شما پاسخ بدهد:
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_core.documents import Document
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# اسناد خود را اضافه کنید
documents = [
Document(page_content="لرنجنی یک پلتفرم آموزش هوش مصنوعی است که راهنماهای جامع در ۵۰+ زبان ارائه میدهد."),
Document(page_content="قیمت هر راهنما ۵ دلار است و پس از خرید دسترسی مادامالعمر دارید."),
]
# Vector store بسازید
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever()
# زنجیره RAG
prompt = ChatPromptTemplate.from_template("""
بر اساس context زیر به سوال پاسخ بدهید:
Context: {context}
سوال: {question}
""")
model = ChatOpenAI(model="gpt-4o-mini")
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
)
result = chain.invoke("قیمت راهنماهای لرنجنی چقدر است؟")
print(result.content)
ساخت اولین عامل (Agent)
عاملها میتوانند از ابزارها استفاده کنند و تصمیمات پیچیده بگیرند:
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.tools import tool
# ابزارهای سفارشی تعریف کنید
@tool
def get_weather(city: str) -> str:
"""آب و هوای شهر مورد نظر را برگردان."""
return f"آب و هوای {city}: ۲۵ درجه، آفتابی"
@tool
def calculate(expression: str) -> str:
"""یک عبارت ریاضی را محاسبه کن."""
try:
return str(eval(expression))
except:
return "خطا در محاسبه"
tools = [get_weather, calculate]
# عامل را بسازید
model = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "شما یک دستیار مفید هستید که میتواند از ابزارها استفاده کند."),
("user", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
agent = create_tool_calling_agent(model, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# اجرا
result = executor.invoke({"input": "آب و هوای تهران چطوره؟ و ۱۵ ضربدر ۲۳ چقدر میشه؟"})
print(result["output"])
LangGraph: عاملهای پیچیدهتر
برای workflow های چند مرحلهای با حلقه و شرط، LangGraph را استفاده کنید:
from langgraph.graph import StateGraph, END
from typing import TypedDict, List
class AgentState(TypedDict):
messages: List[str]
next_step: str
def research(state: AgentState) -> AgentState:
# منطق تحقیق
return {**state, "next_step": "write"}
def write(state: AgentState) -> AgentState:
# منطق نوشتن
return {**state, "next_step": END}
# ساخت graph
workflow = StateGraph(AgentState)
workflow.add_node("research", research)
workflow.add_node("write", write)
workflow.set_entry_point("research")
workflow.add_edge("research", "write")
workflow.add_edge("write", END)
app = workflow.compile()
پروژه عملی: دستیار تحلیل اسناد
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# بارگذاری و پردازش اسناد PDF
loader = PyPDFLoader("document.pdf")
pages = loader.load()
# تقسیم به قطعات کوچکتر
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(pages)
# ایجاد vector store
vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
# زنجیره پرسش و پاسخ
prompt = ChatPromptTemplate.from_template("""
شما یک دستیار تحلیل اسناد هستید. از context زیر برای پاسخ استفاده کنید.
اگر جواب در context نیست، صادقانه بگویید.
Context:
{context}
سوال: {question}
پاسخ دقیق و مستند:
""")
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| ChatOpenAI(model="gpt-4o")
)
# استفاده
answer = chain.invoke("نکات اصلی این سند چیست؟")
print(answer.content)
مراحل بعدی
بعد از تسلط بر LangChain، این موضوعات را بیاموزید:
- LangGraph — برای workflow های پیچیده multi-agent
- LangSmith — برای monitoring و debugging اپلیکیشنهای LangChain
- RAG پیشرفته — تکنیکهای بهبود دقت جستجو
- تنظیم دقیق مدل — fine-tuning برای use case های خاص
- استقرار در cloud — deploy کردن اپلیکیشنهای LangChain
جمعبندی
LangChain یک تغییر بزرگ در نحوه ساخت اپلیکیشنهای هوش مصنوعی ایجاد کرده است. با یادگیری این فریمورک، میتوانید از چتباتهای ساده به سیستمهای هوش مصنوعی پیچیدهای برسید که واقعاً ارزش تجاری ایجاد میکنند.
میخواهید عمیقتر یاد بگیرید؟ راهنمای جامع LangChain در پلتفرم LearnGeni موجود است — یادگیری کامل این فریمورک با مثالهای واقعی، پروژههای عملی و پشتیبانی به زبان فارسی. تمام راهنماها را ببینید.
Earn Your International AI Certificate
This article is part of the LearnGeni AI Mastery Program — 30 comprehensive guides in 50+ languages. Complete all 30 and earn a certificate backed by WhatsGeni (Official Meta AI Partner), recognized in 50+ countries.