Giới thiệu về LangChain
Xậy dựng một Smarter LLM Apps với Chains, Agents, and Tools
LangChain là gì?
Một framework để phát triển các ứng dụng có sử dụng LLM models. LangChain giúp việc phát triển đơn giản hơn bằng cách hỗ trợ:
Chain – chuỗi các bước xử lý đầu vào → prompt → LLM → xử lý kết quả
Agent – LLM tự quyết định hành động tiếp theo dựa trên ngữ cảnh
Tool – chức năng bên ngoài mà Agent có thể gọi (vd: search, tính toán, gọi API)
Memory – lưu lại trạng thái cuộc trò chuyện hoặc tiến trình công việc
LangChain cung cấp một giao diện chuẩn (standard interface) cho các mô hình ngôn ngữ (LLM) và các công nghệ liên quan như embedding model và vector store. Nhờ đó, lập trình viên có thể dễ dàng tích hợp và thay đổi giữa hàng trăm nhà cung cấp khác nhau mà không cần chỉnh sửa nhiều phần code. Điều này giúp việc kiểm thử, so sánh hiệu năng giữa các LLM trở nên đơn giản hơn, tất cả đều thông qua cùng một giao diện thống nhất.
Kiến trúc của LangChain
langchain-core
Cung cấp interface hoặc abstract class cho các module bên dưới như chat models, vector stores, tools and more
langchain
langchain-community
langgraph
Phẩn mở rộng của LangChain, xây dựng các ứng dụng phức tạp, nhiều trạng thái, logic phức tạp. LangGraph mô hình hoá cách bước bằng các khái niệm edges và nodes trong một graph.
langserve
Giúp việc deploy LangChain thành cách REST API
LangSmith
Debug, test và monitor các ứng dụng LLM.
Một ví dụ LLM đơn giản bằng chat models and prompt templates
Cài đặt
pip install langchainChat models
Bản thân LangChain không có chứa bất kì language model nào, khi cần sử dụng một model, chúng ta phải cài đăt từ provider tương ứng. Trong ví dụ này chúng ta sử dụng Google-GenAI model, cài đặt bằng cách
pip install -qU "langchain[google-genai]"Sau đó
import getpass
import os
os.environ["GOOGLE_API_KEY"] = "...." # Your google api key
from langchain.chat_models import init_chat_model
model = init_chat_model("gemini-2.5-flash", model_provider="google_genai")Chúng ta gọi hàm invoke với các messages là tham số
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage("Translate the following from English into Italian"),
HumanMessage("hi!"),
]
model.invoke(messages)
## HumanMessage: Message từ con người
## SystemMessage: Message tạo ra từ hệ thốngOutput: AIMessage(content='Ciao!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 20, 'total_tokens': 23, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0705bf87c0', 'finish_reason': 'stop', 'logprobs': None}, id='run-32654a56-627c-40e1-a141-ad9350bbfd3e-0', usage_metadata={'input_tokens': 20, 'output_tokens': 3, 'total_tokens': 23, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})Prompt Templates
Thông thường, bạn sẽ truyền một danh sách các message vào LLM — bao gồm cả input từ người dùng và các thông điệp logic do ứng dụng tạo ra. Phần logic này thường được trích xuất từ raw user input, sau đó trải qua các bước chuyển đổi (transformation) để tạo thành các message phù hợp. Quá trình này thường bao gồm việc thêm system message, lấy user message, rồi định dạng lại tất cả theo một template cố định trước khi gửi vào LLM.
Prompt template trong LangChain hỗ trợ bạn làm việc này bằng cách lấy user input và trả về prompt data sau đó được đưa vào LLM
Trong ví dụ sau, chúng ta tạo một prompt template với 2 biến, language (Ngôn ngữ để dich) và text (nội dung cần dịch)
from langchain_core.prompts import ChatPromptTemplate
system_template = "Translate the following from English into {language}"
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
prompt = prompt_template.invoke({"language": "Italian", "text": "hi!"})
print(prompt)
# output: ChatPromptValue(messages=[SystemMessage(content='Translate the following from English into Italian', additional_kwargs={}, response_metadata={}), HumanMessage(content='hi!', additional_kwargs={}, response_metadata={})])Sau đó bỏ vô model trong hàm .invoke
response = model.invoke(prompt)
print(response.content) # Ciao!Chúng ta vừa điểm qua kiến trúc tổng quan của LangChain và cách xây dựng một ứng dụng LLM đơn giản với language model và prompt template. Trong các bài viết tiếp theo, mình sẽ đi sâu vào các khái niệm cốt lõi hơn của LangChain. Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại bình luận!


