LangChain คืออะไร?
LangChain เป็น framework สำหรับสร้าง applications ที่ใช้ Large Language Models (LLMs) ทำให้การพัฒนา AI apps ง่ายและเร็วขึ้น
ทำไมต้องใช้ LangChain?
ปัญหาเมื่อไม่ใช้ LangChain:
- ต้องเขียนโค้ดซ้ำๆ สำหรับ prompt templates
- จัดการ context และ memory ยาก
- เชื่อมต่อกับ external data sources ซับซ้อน
- Chain หลาย LLM calls ยุ่งยาก
LangChain ช่วยแก้:
- ✅ Modular components - ใช้ซ้ำได้
- ✅ Built-in integrations - เชื่อมต่อง่าย
- ✅ Memory management - จำบริบทได้
- ✅ Chains - ต่อ LLM calls ง่าย
🧱 Components หลักของ LangChain
1. Models
Support LLMs หลากหลาย:
- OpenAI (GPT-3.5, GPT-4)
- Anthropic (Claude)
- Hugging Face
- Local models (Llama, etc.)
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7)
response = llm("What is LangChain?")
print(response)
2. Prompts
จัดการ prompts อย่างเป็นระบบ:
from langchain import PromptTemplate
template = """
คุณเป็น {role}
ช่วยตอบคำถาม: {question}
"""
prompt = PromptTemplate(
template=template,
input_variables=["role", "question"]
)
formatted = prompt.format(
role="ผู้เชี่ยวชาญ AI",
question="LangChain คืออะไร?"
)
3. Chains
เชื่อมต่อหลาย steps เข้าด้วยกัน:
from langchain import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(
role="AI Expert",
question="What is LangChain?"
)
4. Memory
จำบทสนทนาก่อนหน้า:
from langchain.memory import ConversationBufferMemory
from langchain import ConversationChain
memory = ConversationBufferMemory()
conversation = ConversationChain(
llm=llm,
memory=memory
)
conversation.run("สวัสดี ฉันชื่อ John")
conversation.run("ฉันชื่ออะไร?") # จะตอบว่า "John"
5. Agents
AI ที่ตัดสินใจใช้ tools เอง:
from langchain.agents import load_tools, initialize_agent
tools = load_tools(["wikipedia", "calculator"])
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description"
)
agent.run("What is 25 * 4 + 10?")
🎯 Use Cases
1. Q&A over Documents
ถาม-ตอบจากเอกสารของคุณเอง:
from langchain.document_loaders import TextLoader
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
# Load documents
loader = TextLoader("data.txt")
documents = loader.load()
# Create vector store
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)
# Create QA chain
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
qa.run("What does the document say about AI?")
2. Chatbot with Memory
Chatbot ที่จำบทสนทนา:
from langchain.memory import ConversationBufferWindowMemory
# จำแค่ 5 ข้อความล่าสุด
memory = ConversationBufferWindowMemory(k=5)
chat = ConversationChain(
llm=llm,
memory=memory
)
chat.run("สวัสดี")
chat.run("ฉันสนใจเรียน AI")
chat.run("ฉันสนใจเรื่องอะไร?") # จะจำได้
3. SQL Agent
ถามคำถามเป็นภาษาธรรมดา แล้ว query database:
from langchain.agents import create_sql_agent
from langchain.sql_database import SQLDatabase
db = SQLDatabase.from_uri("sqlite:///mydb.db")
agent = create_sql_agent(llm, db)
agent.run("How many users registered last month?")
🔗 Chains ประเภทต่างๆ
1. Simple Chain
chain = LLMChain(llm=llm, prompt=prompt)
2. Sequential Chain
รัน chain ตามลำดับ:
from langchain.chains import SimpleSequentialChain
chain1 = LLMChain(llm=llm, prompt=prompt1)
chain2 = LLMChain(llm=llm, prompt=prompt2)
overall_chain = SimpleSequentialChain(chains=[chain1, chain2])
3. Router Chain
เลือก chain ตาม input:
from langchain.chains.router import MultiPromptChain
chain = MultiPromptChain(
router_chain=router,
destination_chains=destination_chains
)
💾 Vector Stores
Support หลาย Vector DBs:
- FAISS
- Pinecone
- Weaviate
- Chroma
- Qdrant
from langchain.vectorstores import Chroma
vectorstore = Chroma.from_documents(
documents=docs,
embedding=OpenAIEmbeddings()
)
# Similarity search
results = vectorstore.similarity_search("AI")
🛠️ Tools & Integrations
Built-in Tools:
- Wikipedia
- Calculator
- Python REPL
- Google Search
- Weather API
Custom Tools:
from langchain.tools import Tool
def my_function(input_text):
return f"Processed: {input_text}"
custom_tool = Tool(
name="MyTool",
func=my_function,
description="Useful for processing text"
)
📚 Document Loaders
Support หลายรูปแบบ:
- CSV
- HTML
- Markdown
- Google Drive
- Notion
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("document.pdf")
pages = loader.load_and_split()
⚡ Best Practices
1. Manage API Costs
- ใช้ caching
- จำกัด token usage
- เลือก model ที่เหมาะสม
2. Error Handling
try:
result = chain.run(input)
except Exception as e:
print(f"Error: {e}")
# Handle error
3. Debugging
from langchain.globals import set_debug
set_debug(True) # เห็น internal calls
4. Async Operations
async def process():
result = await chain.arun(input)
return result
🎓 Learning Path
สำหรับมือใหม่:
- เริ่มจาก simple LLMChain
- ลอง Prompt Templates
- เพิ่ม Memory
- ใช้ Document Loaders
- สร้าง Q&A system
Advanced:
- สร้าง Custom Agents
- ใช้ Vector Stores
- Build Multi-step Chains
- Deploy to production
🚀 Getting Started
# Install
pip install langchain openai
# Basic example
from langchain.llms import OpenAI
from langchain import PromptTemplate, LLMChain
llm = OpenAI(temperature=0.7)
template = "What is {topic}?"
prompt = PromptTemplate(template=template, input_variables=["topic"])
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run("LangChain"))
⚠️ Limitations
- Learning curve ชันสำหรับ advanced features
- Documentation บางส่วนยังไม่ครบ
- อัปเดตบ่อย API อาจเปลี่ยน
- Performance overhead จาก abstraction
🔮 Future of LangChain
Roadmap:
- Better streaming support
- More integrations
- Improved debugging tools
- Production-ready features
สรุป
LangChain ทำให้การสร้าง AI applications ง่ายขึ้นมาก:
- ✅ Modular และใช้ซ้ำได้
- ✅ Integrations มากมาย
- ✅ Active community
- ✅ Well-maintained
ถ้าคุณสร้าง AI apps ลอง LangChain ได้เลย จะประหยัดเวลาเยอะ!