{"id":121483,"date":"2025-12-10T10:00:00","date_gmt":"2025-12-10T03:00:00","guid":{"rendered":"https:\/\/tino.vn\/blog\/?p=121483"},"modified":"2026-10-30T10:58:44","modified_gmt":"2026-10-30T03:58:44","slug":"langgraph-la-gi","status":"publish","type":"post","link":"https:\/\/tino.vn\/blog\/langgraph-la-gi\/","title":{"rendered":"LangGraph l\u00e0 g\u00ec? X\u00e2y d\u1ef1ng AI agent c\u00f3 tr\u1ea1ng th\u00e1i, v\u00f2ng l\u1eb7p v\u00e0 multi-agent"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>LangGraph l\u00e0 framework m\u00e3 ngu\u1ed3n m\u1edf (gi\u1ea5y ph\u00e9p MIT) c\u1ee7a LangChain, Inc. \u0111\u1ec3 x\u00e2y d\u1ef1ng AI agent v\u00e0 lu\u1ed3ng x\u1eed l\u00fd LLM c\u00f3 tr\u1ea1ng th\u00e1i, ch\u1ea1y d\u00e0i, d\u01b0\u1edbi d\u1ea1ng \u0111\u1ed3 th\u1ecb g\u1ed3m c\u00e1c node v\u00e0 c\u1ea1nh, cho ph\u00e9p v\u00f2ng l\u1eb7p, r\u1ebd nh\u00e1nh, l\u01b0u checkpoint v\u00e0 d\u1eebng ch\u1edd ng\u01b0\u1eddi duy\u1ec7t.<\/strong> B\u1ea3n hi\u1ec7n h\u00e0nh l\u00e0 <code>langgraph<\/code> 1.2.18 (\u0111\u1ed1i chi\u1ebfu 29\/10\/2026 tr\u00ean <a href=\"https:\/\/pypi.org\/project\/langgraph\/\" target=\"_blank\" rel=\"noopener nofollow\">PyPI<\/a>). Kh\u00e1i ni\u1ec7m agent n\u00f3i chung c\u00f3 \u1edf b\u00e0i <a href=\"https:\/\/tino.vn\/blog\/ai-agent-la-gi\/\">AI agent l\u00e0 g\u00ec<\/a>; model trong graph v\u1eabn g\u1ecdi qua API key, xem <a href=\"https:\/\/tino.vn\/blog\/llm-lay-api-key-mien-phi\/\">c\u00e1ch l\u1ea5y LLM API key mi\u1ec5n ph\u00ed<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">B\u00e0i n\u00e0y \u0111i qua ki\u1ebfn tr\u00fac State, Node, Edge, c\u00e1c t\u00ednh n\u0103ng ch\u00ednh, khi n\u00e0o ch\u1ecdn LangGraph thay v\u00ec LangChain, \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 code m\u1eabu ch\u1ea1y \u0111\u01b0\u1ee3c v\u1edbi b\u1ea3n 1.x.<\/p>\n\n\n\n<h2 id=\"T\u1ed5ng_quan_v\u1ec1_LangGraph\">T\u1ed5ng quan v\u1ec1 LangGraph<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph sinh ra cho nh\u1eefng b\u00e0i to\u00e1n m\u00e0 chu\u1ed7i x\u1eed l\u00fd th\u1eb3ng m\u1ed9t chi\u1ec1u kh\u00f4ng \u0111\u1ee7: agent ph\u1ea3i th\u1eed, xem k\u1ebft qu\u1ea3, quay l\u1ea1i s\u1eeda, h\u1ecfi l\u1ea1i ng\u01b0\u1eddi d\u00f9ng ho\u1eb7c ch\u1edd qu\u1ea3n l\u00fd duy\u1ec7t. B\u1ea1n m\u00f4 t\u1ea3 c\u00e1c b\u01b0\u1edbc th\u00e0nh node, n\u1ed1i ch\u00fang b\u1eb1ng c\u1ea1nh c\u00f3 \u0111i\u1ec1u ki\u1ec7n, v\u00e0 LangGraph gi\u1eef tr\u1ea1ng th\u00e1i chung xuy\u00ean su\u1ed1t.<\/p>\n\n\n\n<h3 id=\"LangGraph_l\u00e0_g\u00ec?\">LangGraph l\u00e0 g\u00ec?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.langchain.com\/langgraph\" target=\"_blank\" rel=\"noopener nofollow\">LangGraph <\/a>l\u00e0 framework \u0111i\u1ec1u ph\u1ed1i c\u1ea5p th\u1ea5p do \u0111\u1ed9i ng\u0169 LangChain ph\u00e1t tri\u1ec3n, d\u00f9ng \u0111\u01b0\u1ee3c \u0111\u1ed9c l\u1eadp ho\u1eb7c c\u00f9ng LangChain, d\u00e0nh cho vi\u1ec7c x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng s\u1eed d\u1ee5ng m\u00f4 h\u00ecnh ng\u00f4n ng\u1eef l\u1edbn (LLM) c\u00f3 kh\u1ea3 n\u0103ng duy tr\u00ec tr\u1ea1ng th\u00e1i v\u00e0 v\u1eadn h\u00e0nh theo m\u1ed9t ho\u1eb7c nhi\u1ec1u t\u00e1c t\u1eed (agent). Thay v\u00ec ph\u1ee5 thu\u1ed9c v\u00e0o quy tr\u00ecnh x\u1eed l\u00fd tuy\u1ebfn t\u00ednh d\u1ea1ng DAG (Directed Acyclic Graph), framework n\u00e0y cho ph\u00e9p k\u1ef9 s\u01b0 ki\u1ebfn t\u1ea1o lu\u1ed3ng t\u00e1c v\u1ee5 d\u01b0\u1edbi d\u1ea1ng \u0111\u1ed3 th\u1ecb linh ho\u1ea1t, h\u1ed7 tr\u1ee3 h\u00ecnh th\u00e0nh c\u00e1c v\u00f2ng l\u1eb7p x\u1eed l\u00fd li\u00ean t\u1ee5c nh\u1eb1m t\u0103ng c\u01b0\u1eddng kh\u1ea3 n\u0103ng suy lu\u1eadn, ghi nh\u1edb ng\u1eef c\u1ea3nh v\u00e0 ra quy\u1ebft \u0111\u1ecbnh th\u00edch \u1ee9ng.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gi\u1ea3i ph\u00e1p LangGraph \u0111\u1eb7c bi\u1ec7t hi\u1ec7u qu\u1ea3 cho nh\u1eefng h\u1ec7 th\u1ed1ng AI Agent \u0111\u00f2i h\u1ecfi ki\u1ec3m so\u00e1t lu\u1ed3ng d\u1eef li\u1ec7u ch\u1eb7t ch\u1ebd, duy tr\u00ec t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh trong c\u00e1c t\u00ecnh hu\u1ed1ng ph\u1ee9c t\u1ea1p.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00f2n <a href=\"https:\/\/tino.vn\/blog\/langchain-la-gi\/\">LangChain<\/a> l\u00e0 framework l\u1edbp cao \u0111\u1ec3 d\u1ef1ng \u1ee9ng d\u1ee5ng LLM; t\u1eeb b\u1ea3n 1.0, agent t\u1ea1o b\u1eb1ng <code>create_agent<\/code> c\u1ee7a LangChain ch\u1ea1y tr\u00ean LangGraph. Theo <a href=\"https:\/\/docs.langchain.com\/oss\/python\/langgraph\/overview\" target=\"_blank\" rel=\"noopener nofollow\">t\u00e0i li\u1ec7u LangGraph<\/a>, n\u00ean b\u1eaft \u0111\u1ea7u b\u1eb1ng agent c\u1ee7a LangChain n\u1ebfu ch\u1ec9 c\u1ea7n v\u00f2ng l\u1eb7p g\u1ecdi tool chu\u1ea9n, v\u00e0 xu\u1ed1ng LangGraph khi c\u1ea7n t\u1ef1 quy\u1ebft t\u1eebng b\u01b0\u1edbc.<\/p>\n\n\n\n<h3 id=\"Ki\u1ebfn_tr\u00fac_v\u00e0_th\u00e0nh_ph\u1ea7n_ch\u00ednh_trong_LangGraph\">Ki\u1ebfn tr\u00fac v\u00e0 th\u00e0nh ph\u1ea7n ch\u00ednh trong LangGraph<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">M\u1ed9t \u1ee9ng d\u1ee5ng LangGraph g\u1ed3m b\u1ed1n ph\u1ea7n: State l\u00e0 d\u1eef li\u1ec7u chung, Node l\u00e0 c\u00e1c b\u01b0\u1edbc x\u1eed l\u00fd, Edge quy\u1ebft \u0111\u1ecbnh b\u01b0\u1edbc ti\u1ebfp theo, v\u00e0 StateGraph gom t\u1ea5t c\u1ea3 l\u1ea1i r\u1ed3i bi\u00ean d\u1ecbch th\u00e0nh \u1ee9ng d\u1ee5ng ch\u1ea1y \u0111\u01b0\u1ee3c. Hi\u1ec3u b\u1ed1n ph\u1ea7n n\u00e0y l\u00e0 \u0111\u1ecdc \u0111\u01b0\u1ee3c h\u1ea7u h\u1ebft code LangGraph.<\/p>\n\n\n\n<h4 id=\"1._State_(Tr\u1ea1ng_th\u00e1i)\">1. State (Tr\u1ea1ng th\u00e1i)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u1ea1ng th\u00e1i \u0111\u00f3ng vai tr\u00f2 l\u00e0 &#8220;b\u1ed9 nh\u1edb chung&#8221; c\u1ee7a to\u00e0n b\u1ed9 \u1ee9ng d\u1ee5ng. Th\u00e0nh ph\u1ea7n n\u00e0y th\u01b0\u1eddng \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a d\u01b0\u1edbi d\u1ea1ng m\u1ed9t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u c\u1ee5 th\u1ec3 (nh\u01b0 TypedDict ho\u1eb7c Pydantic model; v\u1edbi chatbot th\u01b0\u1eddng d\u00f9ng s\u1eb5n <code>MessagesState<\/code>, ch\u1ee9a danh s\u00e1ch tin nh\u1eafn), c\u00f3 nhi\u1ec7m v\u1ee5 l\u01b0u tr\u1eef v\u00e0 theo d\u00f5i th\u00f4ng tin xuy\u00ean su\u1ed1t v\u00f2ng \u0111\u1eddi c\u1ee7a \u1ee9ng d\u1ee5ng. Khi lu\u1ed3ng c\u00f4ng vi\u1ec7c di chuy\u1ec3n qua c\u00e1c b\u01b0\u1edbc x\u1eed l\u00fd, tr\u1ea1ng th\u00e1i s\u1ebd \u0111\u01b0\u1ee3c b\u1ea3o l\u01b0u, c\u1eadp nh\u1eadt ho\u1eb7c b\u1ed5 sung d\u1eef li\u1ec7u m\u1edbi. C\u01a1 ch\u1ebf n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u1ed7i b\u01b0\u1edbc ti\u1ebfp theo \u0111\u1ec1u n\u1eafm \u0111\u01b0\u1ee3c \u0111\u1ea7y \u0111\u1ee7 ng\u1eef c\u1ea3nh c\u1ee7a c\u00e1c b\u01b0\u1edbc tr\u01b0\u1edbc \u0111\u00f3, gi\u00fap h\u1ec7 th\u1ed1ng \u0111\u01b0a ra ph\u1ea3n h\u1ed3i ch\u00ednh x\u00e1c v\u00e0 nh\u1ea5t qu\u00e1n.<\/p>\n\n\n\n<h4 id=\"2._Nodes_(N\u00fat_x\u1eed_l\u00fd)\">2. Nodes (N\u00fat x\u1eed l\u00fd)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c Nodes (n\u00fat) \u0111\u1ea1i di\u1ec7n cho nh\u1eefng \u0111\u01a1n v\u1ecb th\u1ef1c thi c\u00f4ng vi\u1ec7c c\u1ee5 th\u1ec3 ho\u1eb7c c\u00e1c t\u00e1c t\u1eed (Agents). M\u1ed7i Nodes th\u01b0\u1eddng l\u00e0 m\u1ed9t h\u00e0m <a href=\"https:\/\/tino.vn\/blog\/python-la-gi\/\">Python<\/a> ho\u1eb7c m\u1ed9t chu\u1ed7i x\u1eed l\u00fd (runnable) c\u1ee7a LangChain. Nhi\u1ec7m v\u1ee5 c\u1ee7a Nodes l\u00e0 ti\u1ebfp nh\u1eadn tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i l\u00e0m \u0111\u1ea7u v\u00e0o, th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 t\u00ednh to\u00e1n (nh\u01b0 g\u1ecdi API, truy v\u1ea5n c\u01a1 s\u1edf d\u1eef li\u1ec7u ho\u1eb7c x\u1eed l\u00fd logic n\u1ed9i b\u1ed9) v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t b\u1ea3n c\u1eadp nh\u1eadt cho tr\u1ea1ng th\u00e1i. Trong ki\u1ebfn tr\u00fac t\u1ed5ng th\u1ec3, c\u00e1c Nodes \u0111\u00f3ng vai tr\u00f2 l\u00e0 nh\u1eefng &#8220;tr\u1ea1m l\u00e0m vi\u1ec7c&#8221; n\u01a1i d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c bi\u1ebfn \u0111\u1ed5i tr\u01b0\u1edbc khi chuy\u1ec3n sang giai \u0111o\u1ea1n ti\u1ebfp theo.<\/p>\n\n\n\n<h4 id=\"3._Edges_(C\u1ea1nh_k\u1ebft_n\u1ed1i)\">3. Edges (C\u1ea1nh k\u1ebft n\u1ed1i)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">C\u1ea1nh l\u00e0 nh\u1eefng \u0111\u01b0\u1eddng li\u00ean k\u1ebft quy \u0111\u1ecbnh lu\u1ed3ng di chuy\u1ec3n c\u1ee7a d\u1eef li\u1ec7u gi\u1eefa c\u00e1c Nodes. LangGraph ph\u00e2n lo\u1ea1i th\u00e0nh hai d\u1ea1ng c\u1ea1nh ch\u00ednh \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a quy tr\u00ecnh:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>C\u1ea1nh th\u00f4ng th\u01b0\u1eddng (Normal Edges):<\/strong> Quy \u0111\u1ecbnh s\u1ef1 chuy\u1ec3n ti\u1ebfp tr\u1ef1c ti\u1ebfp v\u00e0 c\u1ed1 \u0111\u1ecbnh t\u1eeb n\u00fat n\u00e0y sang n\u00fat kh\u00e1c (V\u00ed d\u1ee5: Lu\u00f4n \u0111i t\u1eeb n\u00fat A sang n\u00fat B).<\/li>\n\n\n<li><strong>C\u1ea1nh c\u00f3 \u0111i\u1ec1u ki\u1ec7n (Conditional Edges):<\/strong> \u0110\u00e2y l\u00e0 y\u1ebfu t\u1ed1 t\u1ea1o n\u00ean s\u1ef1 th\u00f4ng minh cho h\u1ec7 th\u1ed1ng. Lo\u1ea1i c\u1ea1nh n\u00e0y cho ph\u00e9p \u1ee9ng d\u1ee5ng t\u1ef1 \u0111\u1ed9ng l\u1ef1a ch\u1ecdn h\u01b0\u1edbng \u0111i ti\u1ebfp theo d\u1ef1a tr\u00ean k\u1ebft qu\u1ea3 c\u1ee7a b\u01b0\u1edbc tr\u01b0\u1edbc \u0111\u00f3 ho\u1eb7c d\u1ef1a tr\u00ean tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i. Nh\u1edd v\u1eady, AI c\u00f3 th\u1ec3 r\u1ebd nh\u00e1nh logic, quay l\u1ea1i b\u01b0\u1edbc c\u0169 \u0111\u1ec3 s\u1eeda l\u1ed7i ho\u1eb7c k\u1ebft th\u00fac quy tr\u00ecnh m\u1ed9t c\u00e1ch linh ho\u1ea1t.<\/li>\n<\/ul>\n\n\n\n<h4 id=\"4._StateGraph_(\u0110\u1ed3_th\u1ecb_tr\u1ea1ng_th\u00e1i)\">4. StateGraph (\u0110\u1ed3 th\u1ecb tr\u1ea1ng th\u00e1i)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">T\u1ea5t c\u1ea3 c\u00e1c th\u00e0nh ph\u1ea7n tr\u00ean \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 \u0111i\u1ec1u ph\u1ed1i b\u1edfi m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng g\u1ecdi l\u00e0 StateGraph. \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u1edfi t\u1ea1o \u0111\u1ed3 th\u1ecb (\u0111i\u1ec3m v\u00e0o l\u00e0 <code>START<\/code>, \u0111i\u1ec3m k\u1ebft th\u00fac l\u00e0 <code>END<\/code>), x\u00e1c \u0111\u1ecbnh c\u1ea5u tr\u00fac tr\u1ea1ng th\u00e1i ban \u0111\u1ea7u v\u00e0 thi\u1ebft l\u1eadp m\u1ea1ng l\u01b0\u1edbi k\u1ebft n\u1ed1i gi\u1eefa c\u00e1c N\u00fat v\u00e0 C\u1ea1nh. Sau khi ho\u00e0n t\u1ea5t thi\u1ebft k\u1ebf, StateGraph s\u1ebd bi\u00ean d\u1ecbch (compile) to\u00e0n b\u1ed9 c\u1ea5u tr\u00fac th\u00e0nh m\u1ed9t \u1ee9ng d\u1ee5ng ho\u00e0n ch\u1ec9nh (th\u01b0\u1eddng l\u00e0 m\u1ed9t Runnable), s\u1eb5n s\u00e0ng nh\u1eadn \u0111\u1ea7u v\u00e0o t\u1eeb ng\u01b0\u1eddi d\u00f9ng v\u00e0 th\u1ef1c thi lu\u1ed3ng c\u00f4ng vi\u1ec7c theo logic \u0111\u00e3 l\u1eadp tr\u00ecnh.<\/p>\n\n\n\n<h2 id=\"C\u00e1c_t\u00ednh_n\u0103ng_n\u1ed5i_b\u1eadt_c\u1ee7a_LangGraph\">C\u00e1c t\u00ednh n\u0103ng n\u1ed5i b\u1eadt c\u1ee7a LangGraph<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">B\u1ed1n t\u00ednh n\u0103ng khi\u1ebfn LangGraph kh\u00e1c m\u1ed9t chu\u1ed7i g\u1ecdi LLM th\u00f4ng th\u01b0\u1eddng: v\u00f2ng l\u1eb7p \u0111\u1ec3 agent t\u1ef1 s\u1eeda, tr\u1ea1ng th\u00e1i b\u1ec1n v\u1eefng l\u01b0u qua checkpoint, \u0111i\u1ec3m d\u1eebng ch\u1edd con ng\u01b0\u1eddi can thi\u1ec7p, v\u00e0 kh\u1ea3 n\u0103ng cho nhi\u1ec1u agent c\u00f9ng l\u00e0m vi\u1ec7c tr\u00ean m\u1ed9t \u0111\u1ed3 th\u1ecb. M\u1ed7i t\u00ednh n\u0103ng d\u01b0\u1edbi \u0111\u00e2y g\u1eafn v\u1edbi m\u1ed9t b\u00e0i to\u00e1n c\u1ee5 th\u1ec3.<\/p>\n\n\n\n<h3 id=\"C\u1ea5u_tr\u00fac_v\u00f2ng_l\u1eb7p_(Cycles)_v\u00e0_kh\u1ea3_n\u0103ng_t\u1ef1_s\u1eeda_l\u1ed7i\">C\u1ea5u tr\u00fac v\u00f2ng l\u1eb7p (Cycles) v\u00e0 kh\u1ea3 n\u0103ng t\u1ef1 s\u1eeda l\u1ed7i<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u00e2y l\u00e0 t\u00ednh n\u0103ng \u0111\u1ecbnh danh c\u1ee7a LangGraph. Trong khi c\u00e1c framework tr\u01b0\u1edbc \u0111\u00e2y th\u01b0\u1eddng ho\u1ea1t \u0111\u1ed9ng theo c\u01a1 ch\u1ebf m\u1ed9t chi\u1ec1u (\u0111\u1ea7u v\u00e0o -&gt; x\u1eed l\u00fd -&gt; \u0111\u1ea7u ra), LangGraph cho ph\u00e9p thi\u1ebft l\u1eadp c\u00e1c v\u00f2ng l\u1eb7p. C\u01a1 ch\u1ebf n\u00e0y gi\u00fap AI Agent c\u00f3 th\u1ec3 quay l\u1ea1i c\u00e1c b\u01b0\u1edbc tr\u01b0\u1edbc \u0111\u00f3, suy ngh\u0129 l\u1ea1i ho\u1eb7c th\u1ef1c hi\u1ec7n l\u1ea1i m\u1ed9t h\u00e0nh \u0111\u1ed9ng n\u1ebfu k\u1ebft qu\u1ea3 ch\u01b0a \u0111\u1ea1t y\u00eau c\u1ea7u. Kh\u1ea3 n\u0103ng n\u00e0y m\u00f4 ph\u1ecfng s\u00e1t s\u01b0\u1eddn quy tr\u00ecnh t\u01b0 duy c\u1ee7a con ng\u01b0\u1eddi: th\u1eed nghi\u1ec7m, \u0111\u00e1nh gi\u00e1 sai s\u00f3t v\u00e0 s\u1eeda \u0111\u1ed5i.<\/p>\n\n\n\n<h3 id=\"Qu\u1ea3n_l\u00fd_tr\u1ea1ng_th\u00e1i_b\u1ec1n_v\u1eefng\">Qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i b\u1ec1n v\u1eefng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph t\u00edch h\u1ee3p s\u1eb5n kh\u1ea3 n\u0103ng ghi nh\u1edb tr\u1ea1ng th\u00e1i (State) m\u1ed9t c\u00e1ch t\u1ef1 \u0111\u1ed9ng. M\u1ecdi d\u1eef li\u1ec7u, l\u1ecbch s\u1eed h\u1ed9i tho\u1ea1i hay k\u1ebft qu\u1ea3 trung gian \u0111\u1ec1u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef v\u00e0 c\u1eadp nh\u1eadt qua t\u1eebng b\u01b0\u1edbc \u0111i trong \u0111\u1ed3 th\u1ecb. Nh\u1edd checkpointer, \u1ee9ng d\u1ee5ng c\u00f3 th\u1ec3 ch\u1ea1y ti\u1ebfp t\u1eeb b\u01b0\u1edbc g\u1ea7n nh\u1ea5t khi b\u1ecb gi\u00e1n \u0111o\u1ea1n (durable execution) v\u00e0 nh\u1edb ng\u1eef c\u1ea3nh qua nhi\u1ec1u l\u01b0\u1ee3t theo t\u1eebng <code>thread_id<\/code>.<\/p>\n\n\n\n<h3 id=\"Human-in-the-loop_(S\u1ef1_can_thi\u1ec7p_c\u1ee7a_con_ng\u01b0\u1eddi)\">Human-in-the-loop (S\u1ef1 can thi\u1ec7p c\u1ee7a con ng\u01b0\u1eddi)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1ed1i v\u1edbi c\u00e1c quy tr\u00ecnh nghi\u1ec7p v\u1ee5 nh\u1ea1y c\u1ea3m, vi\u1ec7c \u0111\u1ec3 AI t\u1ef1 quy\u1ebft \u0111\u1ecbnh ho\u00e0n to\u00e0n c\u00f3 th\u1ec3 g\u00e2y ra r\u1ee7i ro. LangGraph cung c\u1ea5p c\u01a1 ch\u1ebf cho ph\u00e9p con ng\u01b0\u1eddi tham gia v\u00e0o quy tr\u00ecnh duy\u1ec7t ho\u1eb7c ch\u1ec9nh s\u1eeda h\u00e0nh \u0111\u1ed9ng ti\u1ebfp theo c\u1ee7a AI tr\u01b0\u1edbc khi h\u1ec7 th\u1ed1ng th\u1ef1c thi; trong code, vi\u1ec7c n\u00e0y l\u00e0m b\u1eb1ng h\u00e0m <code>interrupt()<\/code> (xem v\u00ed d\u1ee5 b\u00ean d\u01b0\u1edbi). T\u00ednh n\u0103ng n\u00e0y \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng trong c\u00e1c l\u0129nh v\u1ef1c nh\u01b0 t\u00e0i ch\u00ednh, y t\u1ebf ho\u1eb7c ch\u0103m s\u00f3c kh\u00e1ch h\u00e0ng doanh nghi\u1ec7p.<\/p>\n\n\n\n<h3 id=\"H\u1ed7_tr\u1ee3_\u0111a_t\u00e1c_t\u1eed_(Multi-Agent_Collaboration)\">H\u1ed7 tr\u1ee3 \u0111a t\u00e1c t\u1eed (Multi-Agent Collaboration)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Th\u01b0 vi\u1ec7n n\u00e0y \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a vi\u1ec7c ph\u1ed1i h\u1ee3p gi\u1eefa nhi\u1ec1u AI Agent v\u1edbi nhau. Nh\u00e0 ph\u00e1t tri\u1ec3n c\u00f3 th\u1ec3 t\u1ea1o ra c\u00e1c &#8220;nh\u00f3m l\u00e0m vi\u1ec7c&#8221; k\u1ef9 thu\u1eadt s\u1ed1, n\u01a1i m\u1ed7i Agent \u0111\u1ea3m nhi\u1ec7m m\u1ed9t vai tr\u00f2 chuy\u00ean bi\u1ec7t (v\u00ed d\u1ee5: m\u1ed9t Agent chuy\u00ean vi\u1ebft code, m\u1ed9t Agent chuy\u00ean ki\u1ec3m th\u1eed) v\u00e0 giao ti\u1ebfp, trao \u0111\u1ed5i d\u1eef li\u1ec7u v\u1edbi nhau th\u00f4ng qua \u0111\u1ed3 th\u1ecb chung \u0111\u1ec3 ho\u00e0n th\u00e0nh m\u1ee5c ti\u00eau l\u1edbn.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Khi c\u00e1c agent t\u1ef1 chuy\u1ec3n vi\u1ec7c cho nhau thay v\u00ec \u0111i theo m\u1ed9t lu\u1ed3ng c\u1ed1 \u0111\u1ecbnh, m\u00f4 h\u00ecnh \u0111\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 <a href=\"https:\/\/tino.vn\/blog\/multi-agent-swarm\/\">multi-agent swarm<\/a>; h\u1ec7 sinh th\u00e1i LangGraph c\u00f3 g\u00f3i <a href=\"https:\/\/github.com\/langchain-ai\/langgraph-swarm-py\" target=\"_blank\" rel=\"noopener nofollow\">langgraph-swarm<\/a> cho ki\u1ec3u n\u00e0y. C\u00e1c m\u1eabu ki\u1ebfn tr\u00fac kh\u00e1c xem \u1edf <a href=\"https:\/\/tino.vn\/blog\/ai-system-design-pattern\/\">AI system design pattern<\/a>.<\/p>\n\n\n\n<h2 id=\"T\u1ea1i_sao_c\u1ea7n_s\u1eed_d\u1ee5ng_LangGraph_thay_v\u00ec_LangChain_thu\u1ea7n_t\u00fay?\">T\u1ea1i sao c\u1ea7n s\u1eed d\u1ee5ng LangGraph thay v\u00ec LangChain thu\u1ea7n t\u00fay?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e2u h\u1ecfi n\u00e0y \u0111\u1ebfn t\u1eeb th\u1eddi LangChain c\u00f2n d\u1ef1ng agent b\u1eb1ng chain v\u00e0 <code>AgentExecutor<\/code>. \u1ede b\u1ea3n 1.x, agent c\u1ee7a LangChain \u0111\u00e3 ch\u1ea1y tr\u00ean LangGraph, n\u00ean c\u00e2u h\u1ecfi th\u1ef1c t\u1ebf h\u01a1n l\u00e0: d\u00f9ng agent d\u1ef1ng s\u1eb5n, hay t\u1ef1 v\u1ebd \u0111\u1ed3 th\u1ecb \u0111\u1ec3 ki\u1ec3m so\u00e1t t\u1eebng b\u01b0\u1edbc. B\u1ed1n l\u00fd do d\u01b0\u1edbi \u0111\u00e2y v\u1eabn \u0111\u00fang cho l\u1ef1a ch\u1ecdn th\u1ee9 hai.<\/p>\n\n\n\n<h3 id=\"V\u01b0\u1ee3t_qua_gi\u1edbi_h\u1ea1n_c\u1ee7a_m\u00f4_h\u00ecnh_tuy\u1ebfn_t\u00ednh_(DAG)\">V\u01b0\u1ee3t qua gi\u1edbi h\u1ea1n c\u1ee7a m\u00f4 h\u00ecnh tuy\u1ebfn t\u00ednh (DAG)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chain ki\u1ec3u c\u0169 c\u1ee7a LangChain ho\u1ea1t \u0111\u1ed9ng theo c\u1ea5u tr\u00fac DAG &#8211; t\u1ee9c l\u00e0 c\u00e1c lu\u1ed3ng x\u1eed l\u00fd \u0111i th\u1eb3ng t\u1eeb \u0111i\u1ec3m A \u0111\u1ebfn \u0111i\u1ec3m B m\u00e0 kh\u00f4ng c\u00f3 s\u1ef1 quay \u0111\u1ea7u. \u0110i\u1ec1u n\u00e0y ho\u1ea1t \u0111\u1ed9ng t\u1ed1t cho c\u00e1c t\u00e1c v\u1ee5 \u0111\u01a1n gi\u1ea3n nh\u01b0 t\u00f3m t\u1eaft v\u0103n b\u1ea3n hay d\u1ecbch thu\u1eadt. Tuy nhi\u00ean, \u0111\u1ec3 x\u00e2y d\u1ef1ng m\u1ed9t Agent th\u00f4ng minh bi\u1ebft t\u1ef1 suy lu\u1eadn v\u00e0 ho\u1ea1t \u0111\u1ed9ng trong m\u00f4i tr\u01b0\u1eddng bi\u1ebfn \u0111\u1ed9ng, l\u1eadp tr\u00ecnh vi\u00ean c\u1ea7n c\u00e1c v\u00f2ng l\u1eb7p (Loops). LangGraph cung c\u1ea5p kh\u1ea3 n\u0103ng n\u00e0y, cho ph\u00e9p t\u1ea1o ra c\u00e1c quy tr\u00ecnh linh ho\u1ea1t v\u00e0 &#8220;th\u00f4ng minh&#8221; h\u01a1n nhi\u1ec1u so v\u1edbi c\u00e1c chu\u1ed7i c\u1ee9ng nh\u1eafc.<\/p>\n\n\n\n<h3 id=\"Ki\u1ec3m_so\u00e1t_lu\u1ed3ng_\u0111i_chi_ti\u1ebft_h\u01a1n\">Ki\u1ec3m so\u00e1t lu\u1ed3ng \u0111i chi ti\u1ebft h\u01a1n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Trong LangChain b\u1ea3n c\u0169, vi\u1ec7c s\u1eed d\u1ee5ng <code>AgentExecutor<\/code> (nay thu\u1ed9c g\u00f3i <code>langchain-classic<\/code>) th\u01b0\u1eddng gi\u1ed1ng nh\u01b0 l\u00e0m vi\u1ec7c v\u1edbi m\u1ed9t &#8220;h\u1ed9p \u0111en&#8221; \u2013 l\u1eadp tr\u00ecnh vi\u00ean kh\u00f3 can thi\u1ec7p s\u00e2u v\u00e0o c\u00e1ch Agent \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh b\u00ean trong. Ng\u01b0\u1ee3c l\u1ea1i, LangGraph trao quy\u1ec1n ki\u1ec3m so\u00e1t ho\u00e0n to\u00e0n cho ng\u01b0\u1eddi ph\u00e1t tri\u1ec3n. B\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a ch\u00ednh x\u00e1c t\u1eebng tr\u1ea1ng th\u00e1i, t\u1eebng \u0111i\u1ec1u ki\u1ec7n r\u1ebd nh\u00e1nh v\u00e0 c\u00e1ch h\u1ec7 th\u1ed1ng ph\u1ea3n \u1ee9ng trong m\u1ecdi t\u00ecnh hu\u1ed1ng c\u1ee5 th\u1ec3. S\u1ef1 minh b\u1ea1ch n\u00e0y gi\u00fap vi\u1ec7c g\u1ee1 l\u1ed7i (debug) v\u00e0 t\u1ed1i \u01b0u h\u00f3a h\u1ec7 th\u1ed1ng tr\u1edf n\u00ean d\u1ec5 d\u00e0ng h\u01a1n.<\/p>\n\n\n\n<h3 id=\"Qu\u1ea3n_l\u00fd_b\u1ed9_nh\u1edb_\u01b0u_vi\u1ec7t_h\u01a1n\">Qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb \u01b0u vi\u1ec7t h\u01a1n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">V\u1edbi LangChain, vi\u1ec7c duy tr\u00ec b\u1ed1i c\u1ea3nh trong c\u00e1c chu\u1ed7i d\u00e0i th\u01b0\u1eddng \u0111\u00f2i h\u1ecfi nhi\u1ec1u thao t\u00e1c th\u1ee7 c\u00f4ng v\u00e0 d\u1ec5 g\u1eb7p l\u1ed7i m\u1ea5t d\u1eef li\u1ec7u. LangGraph gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 n\u00e0y th\u00f4ng qua \u0111\u1ed1i t\u01b0\u1ee3ng State \u0111\u01b0\u1ee3c chia s\u1ebb to\u00e0n c\u1ee5c. C\u00e1ch ti\u1ebfp c\u1eadn n\u00e0y gi\u00fap vi\u1ec7c truy\u1ec1n t\u1ea3i d\u1eef li\u1ec7u gi\u1eefa c\u00e1c b\u01b0\u1edbc x\u1eed l\u00fd tr\u1edf n\u00ean m\u01b0\u1ee3t m\u00e0, \u0111\u1ed3ng th\u1eddi gi\u1ea3m thi\u1ec3u \u0111\u00e1ng k\u1ec3 m\u00e3 ngu\u1ed3n th\u1eeba (boilerplate code) c\u1ea7n vi\u1ebft \u0111\u1ec3 qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb.<\/p>\n\n\n\n<h3 id=\"Kh\u1ea3_n\u0103ng_m\u1edf_r\u1ed9ng_cho_c\u00e1c_h\u1ec7_th\u1ed1ng_l\u1edbn\">Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng cho c\u00e1c h\u1ec7 th\u1ed1ng l\u1edbn<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Khi \u1ee9ng d\u1ee5ng ph\u00e1t tri\u1ec3n l\u1edbn h\u01a1n, vi\u1ec7c n\u1ed1i d\u00e0i c\u00e1c chu\u1ed7i LangChain s\u1ebd t\u1ea1o ra m\u1ed9t c\u1ea5u tr\u00fac c\u1ed3ng k\u1ec1nh v\u00e0 kh\u00f3 b\u1ea3o tr\u00ec (&#8220;Spaghetti code&#8221;). LangGraph t\u1ed5 ch\u1ee9c m\u00e3 ngu\u1ed3n d\u01b0\u1edbi d\u1ea1ng c\u00e1c n\u00fat v\u00e0 c\u1ea1nh \u0111\u1ed9c l\u1eadp, gi\u00fap ki\u1ebfn tr\u00fac \u1ee9ng d\u1ee5ng tr\u1edf n\u00ean m\u00f4-\u0111un h\u00f3a. Nh\u1edd \u0111\u00f3, \u0111\u1ed9i ng\u0169 k\u1ef9 thu\u1eadt c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng th\u00eam m\u1edbi, s\u1eeda \u0111\u1ed5i ho\u1eb7c n\u00e2ng c\u1ea5p t\u1eebng ph\u1ea7n nh\u1ecf c\u1ee7a h\u1ec7 th\u1ed1ng m\u00e0 kh\u00f4ng l\u00e0m \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn to\u00e0n b\u1ed9 quy tr\u00ecnh v\u1eadn h\u00e0nh.<\/p>\n\n\n\n<h2 id=\"LangGraph_hay_LangChain:_Khi_n\u00e0o_n\u00ean_ch\u1ecdn?\">LangGraph hay LangChain: Khi n\u00e0o n\u00ean ch\u1ecdn?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ch\u1ecdn LangChain khi lu\u1ed3ng x\u1eed l\u00fd r\u00f5 r\u00e0ng v\u00e0 agent ch\u1ec9 c\u1ea7n v\u00f2ng g\u1ecdi tool chu\u1ea9n; ch\u1ecdn LangGraph khi lu\u1ed3ng c\u00f3 nhi\u1ec1u nh\u00e1nh, v\u00f2ng l\u1eb7p, nhi\u1ec1u agent ho\u1eb7c ph\u1ea3i d\u1eebng ch\u1edd ng\u01b0\u1eddi duy\u1ec7t. B\u1ea3ng d\u01b0\u1edbi so s\u00e1nh theo n\u0103m ti\u00eau ch\u00ed k\u1ef9 thu\u1eadt, c\u1ed9t LangChain m\u00f4 t\u1ea3 ki\u1ec3u chain v\u00e0 AgentExecutor c\u0169.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Ti\u00eau ch\u00ed<\/strong><\/th><th><strong>LangChain ki\u1ec3u c\u0169 (Chains &amp; AgentExecutor)<\/strong><\/th><th><strong>LangGraph<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>Ki\u1ebfn tr\u00fac lu\u1ed3ng (Flow)<\/strong><\/td><td><strong>Tuy\u1ebfn t\u00ednh (DAG):<\/strong> D\u1eef li\u1ec7u \u0111i theo m\u1ed9t \u0111\u01b0\u1eddng th\u1eb3ng ho\u1eb7c ph\u00e2n nh\u00e1nh \u0111\u01a1n gi\u1ea3n (A -&gt; B -&gt; C). Kh\u00f4ng c\u00f3 \u0111\u01b0\u1eddng quay l\u1ea1i.<\/td><td><strong>\u0110\u1ed3 th\u1ecb v\u00f2ng (Cyclic):<\/strong> D\u1eef li\u1ec7u c\u00f3 th\u1ec3 quay l\u1ea1i c\u00e1c b\u01b0\u1edbc tr\u01b0\u1edbc \u0111\u00f3 (Loop). H\u1ed7 tr\u1ee3 c\u00e1c quy tr\u00ecnh l\u1eb7p \u0111i l\u1eb7p l\u1ea1i ph\u1ee9c t\u1ea1p.<\/td><\/tr><tr><td><strong>Qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i (State)<\/strong><\/td><td><strong>R\u1eddi r\u1ea1c:<\/strong> Tr\u1ea1ng th\u00e1i th\u01b0\u1eddng \u0111\u01b0\u1ee3c truy\u1ec1n ng\u1ea7m ho\u1eb7c qu\u1ea3n l\u00fd th\u1ee7 c\u00f4ng qua <code>Memory<\/code>. Kh\u00f3 ki\u1ec3m so\u00e1t khi chu\u1ed7i x\u1eed l\u00fd qu\u00e1 d\u00e0i.<\/td><td><strong>T\u1eadp trung &amp; B\u1ec1n v\u1eefng:<\/strong> Tr\u1ea1ng th\u00e1i l\u00e0 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng to\u00e0n c\u1ee5c (Global State), \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt r\u00f5 r\u00e0ng qua t\u1eebng n\u00fat x\u1eed l\u00fd. D\u1ec5 d\u00e0ng theo d\u00f5i v\u00e0 g\u1ee1 l\u1ed7i.<\/td><\/tr><tr><td><strong>Ki\u1ec3m so\u00e1t logic<\/strong><\/td><td><strong>M\u1ee9c \u0111\u1ed9 tr\u1eebu t\u01b0\u1ee3ng cao:<\/strong> S\u1eed d\u1ee5ng c\u00e1c th\u00e0nh ph\u1ea7n c\u00f3 s\u1eb5n (nh\u01b0 <code>AgentExecutor<\/code>) gi\u00fap tri\u1ec3n khai nhanh nh\u01b0ng kh\u00f3 t\u00f9y bi\u1ebfn s\u00e2u v\u00e0o logic b\u00ean trong.<\/td><td><strong>M\u1ee9c \u0111\u1ed9 chi ti\u1ebft cao:<\/strong> L\u1eadp tr\u00ecnh vi\u00ean \u0111\u1ecbnh ngh\u0129a ch\u00ednh x\u00e1c t\u1eebng b\u01b0\u1edbc \u0111i, \u0111i\u1ec1u ki\u1ec7n r\u1ebd nh\u00e1nh v\u00e0 c\u00e1ch h\u1ec7 th\u1ed1ng ph\u1ea3n \u1ee9ng v\u1edbi l\u1ed7i.<\/td><\/tr><tr><td><strong>\u0110a t\u00e1c t\u1eed (Multi-Agent)<\/strong><\/td><td><strong>H\u1ea1n ch\u1ebf:<\/strong> Vi\u1ec7c ph\u1ed1i h\u1ee3p nhi\u1ec1u Agent kh\u00e1 ph\u1ee9c t\u1ea1p v\u00e0 thi\u1ebfu s\u1ef1 nh\u1ea5t qu\u00e1n trong giao ti\u1ebfp.<\/td><td><strong>T\u1ed1i \u01b0u:<\/strong> \u0110\u01b0\u1ee3c thi\u1ebft k\u1ebf chuy\u00ean bi\u1ec7t \u0111\u1ec3 x\u00e2y d\u1ef1ng h\u1ec7 sinh th\u00e1i nhi\u1ec1u Agent ph\u1ed1i h\u1ee3p nh\u1ecbp nh\u00e0ng.<\/td><\/tr><tr><td><strong>\u0110\u1ed9 kh\u00f3 (Learning Curve)<\/strong><\/td><td><strong>Th\u1ea5p:<\/strong> D\u1ec5 ti\u1ebfp c\u1eadn cho ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u ho\u1eb7c c\u00e1c \u1ee9ng d\u1ee5ng \u0111\u01a1n gi\u1ea3n (MVP).<\/td><td><strong>Trung b\u00ecnh &#8211; Cao:<\/strong> Y\u00eau c\u1ea7u hi\u1ec3u bi\u1ebft v\u1ec1 l\u00fd thuy\u1ebft \u0111\u1ed3 th\u1ecb v\u00e0 t\u01b0 duy l\u1eadp tr\u00ecnh h\u01b0\u1edbng tr\u1ea1ng th\u00e1i.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">V\u1edbi LangChain 1.x, kho\u1ea3ng c\u00e1ch \u1edf c\u1ed9t &#8220;Qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i&#8221; \u0111\u00e3 h\u1eb9p l\u1ea1i v\u00ec <code>create_agent<\/code> d\u00f9ng chung checkpointer c\u1ee7a LangGraph. Kh\u00e1c bi\u1ec7t c\u00f2n l\u1ea1i ch\u1ee7 y\u1ebfu l\u00e0 m\u1ee9c \u0111\u1ed9 b\u1ea1n t\u1ef1 \u0111\u1ecbnh ngh\u0129a lu\u1ed3ng.<\/p>\n\n\n\n<h3 id=\"Khi_n\u00e0o_n\u00ean_ch\u1ecdn_LangChain?\">Khi n\u00e0o n\u00ean ch\u1ecdn LangChain?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LangChain v\u1eabn l\u00e0 l\u1ef1a ch\u1ecdn tuy\u1ec7t v\u1eddi cho c\u00e1c \u1ee9ng d\u1ee5ng c\u00f3 quy tr\u00ecnh x\u1eed l\u00fd r\u00f5 r\u00e0ng, c\u1ed1 \u0111\u1ecbnh v\u00e0 kh\u00f4ng y\u00eau c\u1ea7u AI ph\u1ea3i &#8220;suy ngh\u0129 l\u1ea1i&#8221;. H\u00e3y s\u1eed d\u1ee5ng LangChain khi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>X\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng RAG c\u01a1 b\u1ea3n:<\/strong> H\u1ecfi \u0111\u00e1p tr\u00ean t\u00e0i li\u1ec7u v\u1edbi quy tr\u00ecnh chu\u1ea9n (Truy v\u1ea5n -&gt; T\u00ecm ki\u1ebfm -&gt; Tr\u1ea3 l\u1eddi).<\/li>\n\n\n<li><strong>C\u00e1c t\u00e1c v\u1ee5 tuy\u1ebfn t\u00ednh:<\/strong> T\u00f3m t\u1eaft v\u0103n b\u1ea3n, d\u1ecbch thu\u1eadt, tr\u00edch xu\u1ea5t th\u00f4ng tin \u0111\u01a1n gi\u1ea3n.<\/li>\n\n\n<li><strong>C\u1ea7n tri\u1ec3n khai nhanh:<\/strong> Khi m\u1ee5c ti\u00eau l\u00e0 \u0111\u01b0a ra s\u1ea3n ph\u1ea9m th\u1eed nghi\u1ec7m trong th\u1eddi gian ng\u1eafn m\u00e0 kh\u00f4ng c\u1ea7n logic \u0111i\u1ec1u h\u01b0\u1edbng ph\u1ee9c t\u1ea1p.<\/li>\n\n\n<li><strong>Ng\u01b0\u1eddi ph\u00e1t tri\u1ec3n m\u1edbi l\u00e0m quen:<\/strong> \u0110\u1ed9i ng\u0169 k\u1ef9 thu\u1eadt ch\u01b0a c\u00f3 nhi\u1ec1u kinh nghi\u1ec7m v\u1edbi LLM v\u00e0 mu\u1ed1n t\u1eadn d\u1ee5ng c\u00e1c m\u1eabu (templates) c\u00f3 s\u1eb5n.<br><\/li>\n<\/ul>\n\n\n\n<h3 id=\"Khi_n\u00e0o_n\u00ean_ch\u1ecdn_LangGraph?\">Khi n\u00e0o n\u00ean ch\u1ecdn LangGraph?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph ph\u00f9 h\u1ee3p khi \u1ee9ng d\u1ee5ng \u0111\u00f2i h\u1ecfi s\u1ef1 linh ho\u1ea1t, kh\u1ea3 n\u0103ng t\u1ef1 ch\u1ee7 v\u00e0 \u0111\u1ed9 tin c\u1eady cao. H\u00e3y chuy\u1ec3n sang LangGraph khi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>X\u00e2y d\u1ef1ng AI Agent t\u1ef1 h\u00e0nh:<\/strong> H\u1ec7 th\u1ed1ng c\u1ea7n t\u1ef1 l\u00ean k\u1ebf ho\u1ea1ch, th\u1ef1c hi\u1ec7n h\u00e0nh \u0111\u1ed9ng, ki\u1ec3m tra k\u1ebft qu\u1ea3 v\u00e0 t\u1ef1 s\u1eeda l\u1ed7i n\u1ebfu th\u1ea5t b\u1ea1i (V\u00ed d\u1ee5: Agent vi\u1ebft code t\u1ef1 ch\u1ea1y th\u1eed v\u00e0 s\u1eeda bug).<\/li>\n\n\n<li><strong>Quy tr\u00ecnh nghi\u1ec7p v\u1ee5 c\u00f3 v\u00f2ng l\u1eb7p:<\/strong> C\u00e1c t\u00e1c v\u1ee5 y\u00eau c\u1ea7u s\u1ef1 t\u01b0\u01a1ng t\u00e1c qua l\u1ea1i li\u00ean t\u1ee5c, v\u00ed d\u1ee5 nh\u01b0 m\u1ed9t chatbot thu th\u1eadp th\u00f4ng tin kh\u00e1ch h\u00e0ng c\u1ea7n h\u1ecfi l\u1ea1i n\u1ebfu d\u1eef li\u1ec7u nh\u1eadp v\u00e0o kh\u00f4ng h\u1ee3p l\u1ec7.<\/li>\n\n\n<li><strong>H\u1ec7 th\u1ed1ng Multi-Agent:<\/strong> C\u1ea7n ph\u1ed1i h\u1ee3p m\u1ed9t nh\u00f3m c\u00e1c tr\u1ee3 l\u00fd \u1ea3o chuy\u00ean bi\u1ec7t (m\u1ed9t tr\u1ee3 l\u00fd t\u00ecm ki\u1ebfm, m\u1ed9t tr\u1ee3 l\u00fd vi\u1ebft b\u00e0i, m\u1ed9t tr\u1ee3 l\u00fd ki\u1ec3m duy\u1ec7t) l\u00e0m vi\u1ec7c c\u00f9ng nhau.<\/li>\n\n\n<li><strong>Y\u00eau c\u1ea7u Human-in-the-loop:<\/strong> \u1ee8ng d\u1ee5ng c\u1ea7n t\u1ea1m d\u1eebng \u0111\u1ec3 ch\u1edd con ng\u01b0\u1eddi ph\u00ea duy\u1ec7t tr\u01b0\u1edbc khi ti\u1ebfp t\u1ee5c b\u01b0\u1edbc ti\u1ebfp theo (V\u00ed d\u1ee5: Duy\u1ec7t chi ng\u00e2n s\u00e1ch, ph\u00ea duy\u1ec7t n\u1ed9i dung nh\u1ea1y c\u1ea3m).<\/li>\n<\/ul>\n\n\n\n<h2 id=\"\u1ee8ng_d\u1ee5ng_th\u1ef1c_t\u1ebf_c\u1ee7a_LangGraph_trong_doanh_nghi\u1ec7p\">\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a LangGraph trong doanh nghi\u1ec7p<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph \u0111\u01b0\u1ee3c d\u00f9ng \u1edf c\u00e1c quy tr\u00ecnh nhi\u1ec1u b\u01b0\u1edbc c\u00f3 ki\u1ec3m tra v\u00e0 s\u1eeda l\u1ed7i: ch\u0103m s\u00f3c kh\u00e1ch h\u00e0ng c\u1ea7n h\u1ecfi l\u1ea1i th\u00f4ng tin, ph\u00e2n t\u00edch d\u1eef li\u1ec7u t\u1ef1 s\u1eeda c\u00e2u SQL, v\u00f2ng code, test, s\u1eeda, ph\u00ea duy\u1ec7t n\u1ed9i dung c\u00f3 ng\u01b0\u1eddi tham gia v\u00e0 nghi\u00ean c\u1ee9u l\u1eb7p nhi\u1ec1u l\u01b0\u1ee3t.<\/p>\n\n\n\n<h3 id=\"H\u1ec7_th\u1ed1ng_ch\u0103m_s\u00f3c_kh\u00e1ch_h\u00e0ng_&amp;_x\u1eed_l\u00fd_khi\u1ebfu_n\u1ea1i_chuy\u00ean_s\u00e2u\">H\u1ec7 th\u1ed1ng ch\u0103m s\u00f3c kh\u00e1ch h\u00e0ng &amp; x\u1eed l\u00fd khi\u1ebfu n\u1ea1i chuy\u00ean s\u00e2u<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c chatbot truy\u1ec1n th\u1ed1ng th\u01b0\u1eddng g\u1eb7p kh\u00f3 kh\u0103n khi kh\u00e1ch h\u00e0ng thay \u0111\u1ed5i \u00fd \u0111\u1ecbnh ho\u1eb7c cung c\u1ea5p th\u00f4ng tin r\u1eddi r\u1ea1c. V\u1edbi LangGraph, doanh nghi\u1ec7p c\u00f3 th\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c tr\u1ee3 l\u00fd \u1ea3o c\u00f3 kh\u1ea3 n\u0103ng:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Thu th\u1eadp v\u00e0 x\u00e1c th\u1ef1c th\u00f4ng tin:<\/strong> N\u1ebfu kh\u00e1ch h\u00e0ng mu\u1ed1n \u0111\u1ed5i v\u00e9 m\u00e1y bay, AI s\u1ebd ki\u1ec3m tra tr\u1ea1ng th\u00e1i v\u00e9. N\u1ebfu thi\u1ebfu th\u00f4ng tin (ng\u00e0y m\u1edbi, gi\u1edd bay), h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 \u0111\u1ed9ng quay l\u1ea1i b\u01b0\u1edbc h\u1ecfi (Loop) cho \u0111\u1ebfn khi c\u00f3 \u0111\u1ee7 d\u1eef li\u1ec7u h\u1ee3p l\u1ec7 thay v\u00ec b\u00e1o l\u1ed7i.<\/li>\n\n\n<li><strong>Duy tr\u00ec ng\u1eef c\u1ea3nh d\u00e0i h\u1ea1n:<\/strong> H\u1ec7 th\u1ed1ng ghi nh\u1edb to\u00e0n b\u1ed9 l\u1ecbch s\u1eed trao \u0111\u1ed5i \u0111\u1ec3 x\u1eed l\u00fd c\u00e1c y\u00eau c\u1ea7u k\u00e9o d\u00e0i qua nhi\u1ec1u ng\u00e0y m\u00e0 kh\u00f4ng b\u1eaft kh\u00e1ch h\u00e0ng l\u1eb7p l\u1ea1i v\u1ea5n \u0111\u1ec1 t\u1eeb \u0111\u1ea7u.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"Tr\u1ee3_l\u00fd_ph\u00e2n_t\u00edch_d\u1eef_li\u1ec7u_&amp;_l\u1eadp_b\u00e1o_c\u00e1o_t\u00e0i_ch\u00ednh\">Tr\u1ee3 l\u00fd ph\u00e2n t\u00edch d\u1eef li\u1ec7u &amp; l\u1eadp b\u00e1o c\u00e1o t\u00e0i ch\u00ednh<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quy tr\u00ecnh ph\u00e2n t\u00edch d\u1eef li\u1ec7u th\u01b0\u1eddng \u0111\u00f2i h\u1ecfi nhi\u1ec1u b\u01b0\u1edbc th\u1eed sai. LangGraph cho ph\u00e9p thi\u1ebft l\u1eadp m\u1ed9t quy tr\u00ecnh l\u00e0m vi\u1ec7c kh\u00e9p k\u00edn cho AI Agent:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>T\u1ef1 \u0111\u1ed9ng s\u1eeda l\u1ed7i truy v\u1ea5n:<\/strong> Khi Agent t\u1ea1o ra m\u1ed9t c\u00e2u l\u1ec7nh SQL \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u doanh thu nh\u01b0ng g\u1eb7p l\u1ed7i c\u00fa ph\u00e1p, \u0111\u1ed3 th\u1ecb s\u1ebd \u0111i\u1ec1u h\u01b0\u1edbng quy tr\u00ecnh quay l\u1ea1i b\u01b0\u1edbc &#8220;Vi\u1ebft code&#8221; \u0111\u1ec3 s\u1eeda l\u1ea1i c\u00e2u l\u1ec7nh d\u1ef1a tr\u00ean th\u00f4ng b\u00e1o l\u1ed7i, thay v\u00ec tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 r\u1ed7ng cho ng\u01b0\u1eddi d\u00f9ng.<\/li>\n\n\n<li><strong>T\u1ed5ng h\u1ee3p \u0111a ngu\u1ed3n:<\/strong> H\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 ph\u1ed1i h\u1ee3p nhi\u1ec1u Agent con (m\u1ed9t Agent t\u00ecm ki\u1ebfm tin t\u1ee9c th\u1ecb tr\u01b0\u1eddng, m\u1ed9t Agent \u0111\u1ecdc b\u00e1o c\u00e1o n\u1ed9i b\u1ed9) \u0111\u1ec3 t\u1ed5ng h\u1ee3p th\u00e0nh m\u1ed9t b\u1ea3n b\u00e1o c\u00e1o chi\u1ebfn l\u01b0\u1ee3c ho\u00e0n ch\u1ec9nh.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"700\" height=\"375\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-7.png\" alt=\"S\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac AI agent d\u00f9ng LangGraph n\u1ed1i OpenAI, Auth0, Vercel AI SDK, Gmail, SerpApi\" class=\"wp-image-121489\" title=\"\" srcset=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-7.png 700w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-7-300x161.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption class=\"wp-element-caption\">V\u00ed d\u1ee5 ki\u1ebfn tr\u00fac m\u1ed9t AI agent d\u00f9ng LangGraph, n\u1ed1i LLM, l\u1edbp x\u00e1c th\u1ef1c v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 nh\u01b0 Gmail, SerpApi<\/figcaption><\/figure>\n\n\n\n<h3 id=\"T\u1ef1_\u0111\u1ed9ng_h\u00f3a_quy_tr\u00ecnh_ph\u00e1t_tri\u1ec3n_ph\u1ea7n_m\u1ec1m\">T\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u00e2y l\u00e0 nh\u00f3m \u1ee9ng d\u1ee5ng d\u00f9ng v\u00f2ng l\u1eb7p r\u00f5 nh\u1ea5t c\u1ee7a LangGraph. C\u00e1c c\u00f4ng ty c\u00f4ng ngh\u1ec7 c\u00f3 th\u1ec3 t\u1ea1o ra c\u00e1c &#8220;K\u1ef9 s\u01b0 AI&#8221; \u1ea3o h\u1ed7 tr\u1ee3 \u0111\u1ed9i ng\u0169 l\u1eadp tr\u00ecnh vi\u00ean:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Quy tr\u00ecnh Code &#8211; Test &#8211; Fix:<\/strong> Agent vi\u1ebft m\u00e3 ngu\u1ed3n -&gt; Ch\u1ea1y th\u1eed nghi\u1ec7m (Unit Test) -&gt; N\u1ebfu th\u1ea5t b\u1ea1i, h\u1ec7 th\u1ed1ng quay ng\u01b0\u1ee3c l\u1ea1i b\u01b0\u1edbc vi\u1ebft m\u00e3 \u0111\u1ec3 s\u1eeda l\u1ed7i -&gt; Ch\u1ea1y l\u1ea1i ki\u1ec3m th\u1eed. V\u00f2ng l\u1eb7p n\u00e0y ti\u1ebfp di\u1ec5n cho \u0111\u1ebfn khi m\u00e3 ngu\u1ed3n ch\u1ea1y \u0111\u00fang y\u00eau c\u1ea7u.<\/li>\n\n\n<li><strong>Review code t\u1ef1 \u0111\u1ed9ng:<\/strong> AI Agent \u0111\u00f3ng vai tr\u00f2 ng\u01b0\u1eddi ki\u1ec3m duy\u1ec7t, qu\u00e9t c\u00e1c l\u1ed7 h\u1ed5ng b\u1ea3o m\u1eadt v\u00e0 \u0111\u1ec1 xu\u1ea5t ch\u1ec9nh s\u1eeda tr\u01b0\u1edbc khi m\u00e3 \u0111\u01b0\u1ee3c h\u1ee3p nh\u1ea5t v\u00e0o h\u1ec7 th\u1ed1ng ch\u00ednh.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"Quy_tr\u00ecnh_ph\u00ea_duy\u1ec7t_n\u1ed9i_dung_c\u00f3_s\u1ef1_tham_gia_c\u1ee7a_con_ng\u01b0\u1eddi\">Quy tr\u00ecnh ph\u00ea duy\u1ec7t n\u1ed9i dung c\u00f3 s\u1ef1 tham gia c\u1ee7a con ng\u01b0\u1eddi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Trong c\u00e1c l\u0129nh v\u1ef1c nh\u1ea1y c\u1ea3m nh\u01b0 Marketing hay Ph\u00e1p l\u00fd, vi\u1ec7c \u0111\u1ec3 AI t\u1ef1 \u0111\u0103ng t\u1ea3i n\u1ed9i dung ch\u1ee9a \u0111\u1ef1ng nhi\u1ec1u r\u1ee7i ro. LangGraph cung c\u1ea5p gi\u1ea3i ph\u00e1p t\u00edch h\u1ee3p con ng\u01b0\u1eddi v\u00e0o lu\u1ed3ng x\u1eed l\u00fd:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>C\u01a1 ch\u1ebf t\u1ea1m d\u1eebng:<\/strong> AI so\u1ea1n th\u1ea3o n\u1ed9i dung email marketing ho\u1eb7c h\u1ee3p \u0111\u1ed3ng -&gt; H\u1ec7 th\u1ed1ng chuy\u1ec3n sang tr\u1ea1ng th\u00e1i &#8220;Ch\u1edd duy\u1ec7t&#8221; v\u00e0 g\u1eedi th\u00f4ng b\u00e1o cho qu\u1ea3n l\u00fd.<\/li>\n\n\n<li><strong>Ph\u1ea3n h\u1ed3i linh ho\u1ea1t:<\/strong> N\u1ebfu qu\u1ea3n l\u00fd ch\u1ecdn &#8220;\u0110\u1ed3ng \u00fd&#8221;, quy tr\u00ecnh ti\u1ebfp t\u1ee5c \u0111i \u0111\u1ebfn b\u01b0\u1edbc &#8220;G\u1eedi&#8221;. N\u1ebfu ch\u1ecdn &#8220;Ch\u1ec9nh s\u1eeda&#8221;, h\u1ec7 th\u1ed1ng s\u1ebd quay l\u1ea1i b\u01b0\u1edbc &#8220;So\u1ea1n th\u1ea3o&#8221; k\u00e8m theo ghi ch\u00fa g\u00f3p \u00fd c\u1ee7a qu\u1ea3n l\u00fd \u0111\u1ec3 AI vi\u1ebft l\u1ea1i.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"Tr\u1ee3_l\u00fd_nghi\u00ean_c\u1ee9u_th\u1ecb_tr\u01b0\u1eddng_&amp;_t\u1ed5ng_h\u1ee3p_tin_t\u1ee9c\">Tr\u1ee3 l\u00fd nghi\u00ean c\u1ee9u th\u1ecb tr\u01b0\u1eddng &amp; t\u1ed5ng h\u1ee3p tin t\u1ee9c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Thay v\u00ec ch\u1ec9 t\u00ecm ki\u1ebfm m\u1ed9t l\u1ea7n v\u00e0 tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 s\u01a1 s\u00e0i, \u1ee9ng d\u1ee5ng LangGraph c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n quy tr\u00ecnh nghi\u00ean c\u1ee9u s\u00e2u:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agent th\u1ef1c hi\u1ec7n t\u00ecm ki\u1ebfm ban \u0111\u1ea7u -&gt; \u0110\u1ecdc v\u00e0 \u0111\u00e1nh gi\u00e1 \u0111\u1ed9 tin c\u1eady c\u1ee7a ngu\u1ed3n tin -&gt; N\u1ebfu th\u00f4ng tin ch\u01b0a \u0111\u1ee7, h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng t\u1ea1o t\u1eeb kh\u00f3a t\u00ecm ki\u1ebfm m\u1edbi v\u00e0 l\u1eb7p l\u1ea1i quy tr\u00ecnh.<\/li>\n\n\n<li>Cu\u1ed1i c\u00f9ng, Agent bi\u00ean t\u1eadp l\u1ea1i to\u00e0n b\u1ed9 th\u00f4ng tin th\u00e0nh m\u1ed9t b\u00e0i ph\u00e2n t\u00edch chuy\u00ean s\u00e2u v\u1edbi \u0111\u1ea7y \u0111\u1ee7 d\u1eabn ch\u1ee9ng, gi\u00fap ban l\u00e3nh \u0111\u1ea1o ti\u1ebft ki\u1ec7m h\u00e0ng gi\u1edd \u0111\u1ecdc t\u00e0i li\u1ec7u.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"H\u01b0\u1edbng_d\u1eabn_c\u00e0i_\u0111\u1eb7t_v\u00e0_s\u1eed_d\u1ee5ng_LangGraph_c\u01a1_b\u1ea3n\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng LangGraph c\u01a1 b\u1ea3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1ec3 ch\u1ea1y c\u00e1c v\u00ed d\u1ee5 d\u01b0\u1edbi \u0111\u00e2y, b\u1ea1n c\u1ea7n Python 3.10 tr\u1edf l\u00ean (y\u00eau c\u1ea7u c\u1ee7a langgraph 1.2.18 tr\u00ean PyPI) v\u00e0 m\u1ed9t API key c\u1ee7a h\u00e3ng model. Code b\u00e1m theo <a href=\"https:\/\/docs.langchain.com\/oss\/python\/langgraph\/quickstart\" target=\"_blank\" rel=\"noopener nofollow\">quickstart ch\u00ednh th\u1ee9c<\/a>, \u0111\u00e3 ch\u1ea1y th\u1eed v\u1edbi model gi\u1ea3 tr\u00ean langgraph 1.2.18; khi ch\u1ea1y th\u1eadt, \u0111\u1ed5i t\u00ean model cho ph\u00f9 h\u1ee3p.<\/p>\n\n\n\n<h3 id=\"C\u00e0i_\u0111\u1eb7t_th\u01b0_vi\u1ec7n\">C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m venv .venv\nsource .venv\/bin\/activate        # Windows: .venv\\Scripts\\activate\npip install -U langgraph langchain \"langchain[openai]\"\nexport OPENAI_API_KEY=\"...\"        # Windows PowerShell: $env:OPENAI_API_KEY=\"...\"\n# D\u00f9ng Claude\/Gemini: c\u00e0i \"langchain[anthropic]\" ho\u1eb7c \"langchain[google-genai]\" v\u00e0 \u0111\u1eb7t key t\u01b0\u01a1ng \u1ee9ng<\/code><\/pre>\n\n\n\n<h3 id=\"C\u1ea5u_tr\u00fac_c\u01a1_b\u1ea3n_c\u1ee7a_m\u1ed9t_LangGraph\">C\u1ea5u tr\u00fac c\u01a1 b\u1ea3n c\u1ee7a m\u1ed9t LangGraph<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from langchain.chat_models import init_chat_model\nfrom langgraph.graph import StateGraph, MessagesState, START, END\nfrom langgraph.checkpoint.memory import InMemorySaver\n\nmodel = init_chat_model(\"openai:gpt-6-luna\")   # d\u1ea1ng \"h\u00e3ng:model\", \u0111\u1ed5i theo model b\u1ea1n d\u00f9ng\n\n# Node: nh\u1eadn state, tr\u1ea3 ph\u1ea7n state c\u1ea7n c\u1eadp nh\u1eadt\ndef chatbot(state: MessagesState):\n    return {\"messages\": [model.invoke(state[\"messages\"])]}\n\nbuilder = StateGraph(MessagesState)   # MessagesState t\u1ef1 n\u1ed1i th\u00eam tin nh\u1eafn m\u1edbi v\u00e0o danh s\u00e1ch\nbuilder.add_node(\"chatbot\", chatbot)\nbuilder.add_edge(START, \"chatbot\")\nbuilder.add_edge(\"chatbot\", END)\n\napp = builder.compile(checkpointer=InMemorySaver())   # checkpointer gi\u1eef state gi\u1eefa c\u00e1c l\u01b0\u1ee3t<\/code><\/pre>\n\n\n\n<h3 id=\"Ch\u1ea1y_graph_\u0111\u01a1n_gi\u1ea3n_nh\u1ea5t_(chatbot_c\u01a1_b\u1ea3n)\">Ch\u1ea1y graph \u0111\u01a1n gi\u1ea3n nh\u1ea5t (chatbot c\u01a1 b\u1ea3n)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>config = {\"configurable\": {\"thread_id\": \"abc123\"}}   # m\u1ed7i cu\u1ed9c h\u1ed9i tho\u1ea1i m\u1ed9t thread_id\nuser = {\"messages\": [{\"role\": \"user\", \"content\": \"Xin ch\u00e0o, b\u1ea1n t\u00ean g\u00ec?\"}]}\n\nfor event in app.stream(user, config, stream_mode=\"values\"):\n    event[\"messages\"][-1].pretty_print()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">K\u1ebft qu\u1ea3 s\u1ebd in ra tin nh\u1eafn c\u1ee7a assistant.<\/p>\n\n\n\n<h3 id=\"V\u00ed_d\u1ee5_th\u1ef1c_t\u1ebf:_Agent_c\u00f3_c\u00f4ng_c\u1ee5_(Tools)_+_v\u00f2ng_l\u1eb7p\">V\u00ed d\u1ee5 th\u1ef1c t\u1ebf: Agent c\u00f3 c\u00f4ng c\u1ee5 (Tools) + v\u00f2ng l\u1eb7p<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from langchain.tools import tool\nfrom langgraph.prebuilt import ToolNode, tools_condition\n\n@tool\ndef search(query: str) -&gt; str:\n    \"\"\"T\u00ecm ki\u1ebfm tr\u00ean Internet (gi\u1ea3 l\u1eadp).\"\"\"\n    return f\"K\u1ebft qu\u1ea3 gi\u1ea3 l\u1eadp cho: {query}\"\n\ntools = [search]\nmodel_with_tools = model.bind_tools(tools)\n\ndef agent(state: MessagesState):\n    return {\"messages\": [model_with_tools.invoke(state[\"messages\"])]}\n\nbuilder = StateGraph(MessagesState)\nbuilder.add_node(\"agent\", agent)\nbuilder.add_node(\"tools\", ToolNode(tools))\nbuilder.add_edge(START, \"agent\")\nbuilder.add_conditional_edges(\"agent\", tools_condition)   # c\u00f3 tool_calls -&gt; \"tools\", kh\u00f4ng -&gt; END\nbuilder.add_edge(\"tools\", \"agent\")                       # ch\u1ea1y tool xong quay l\u1ea1i agent\ngraph = builder.compile(checkpointer=InMemorySaver())\n\nconfig = {\"configurable\": {\"thread_id\": \"123\"}}\nmsg = {\"messages\": [{\"role\": \"user\", \"content\": \"Th\u1eddi ti\u1ebft h\u00f4m nay \u1edf H\u00e0 N\u1ed9i th\u1ebf n\u00e0o?\"}]}\nfor chunk in graph.stream(msg, config, stream_mode=\"values\"):\n    chunk[\"messages\"][-1].pretty_print()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1400\" height=\"750\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2026\/10\/langgraph-la-gi-vong-lap-agent.webp\" alt=\"S\u01a1 \u0111\u1ed3 LangGraph: START t\u1edbi node agent g\u1ecdi model; n\u1ebfu c\u00f3 tool_calls th\u00ec sang node tools r\u1ed3i tr\u1ea3 k\u1ebft qu\u1ea3 v\u1ec1 agent; kh\u00f4ng g\u1ecdi tool th\u00ec t\u1edbi END; checkpointer l\u01b0u state theo thread_id\" class=\"wp-image-132873\" title=\"\" srcset=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2026\/10\/langgraph-la-gi-vong-lap-agent.webp 1400w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2026\/10\/langgraph-la-gi-vong-lap-agent-300x161.webp 300w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2026\/10\/langgraph-la-gi-vong-lap-agent-1024x549.webp 1024w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2026\/10\/langgraph-la-gi-vong-lap-agent-768x411.webp 768w\" sizes=\"(max-width: 1400px) 100vw, 1400px\" \/><\/figure>\n\n\n\n<h3 id=\"Visualize_graph_(r\u1ea5t_h\u1eefu_\u00edch_khi_debug)\">Visualize graph (r\u1ea5t h\u1eefu \u00edch khi debug)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># In s\u01a1 \u0111\u1ed3 d\u1ea1ng Mermaid (d\u00e1n v\u00e0o tr\u00ecnh xem Mermaid \u0111\u1ec3 th\u1ea5y h\u00ecnh), kh\u00f4ng c\u1ea7n m\u1ea1ng\nprint(graph.get_graph().draw_mermaid())<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mu\u1ed1n xem v\u00e0 ch\u1ea1y th\u1eed graph tr\u00ean giao di\u1ec7n web (LangGraph Studio), d\u00f9ng CLI. Theo <a href=\"https:\/\/docs.langchain.com\/langsmith\/cli\" target=\"_blank\" rel=\"noopener nofollow\">t\u00e0i li\u1ec7u CLI<\/a>, l\u1ec7nh <code>langgraph dev<\/code> ch\u1ea1y server ph\u00e1t tri\u1ec3n t\u1ea1i <code>127.0.0.1:2024<\/code>, kh\u00f4ng c\u1ea7n Docker, c\u1ea7n Python 3.11 tr\u1edf l\u00ean v\u00e0 m\u1ed9t file <code>langgraph.json<\/code> khai b\u00e1o graph.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -U \"langgraph-cli[inmem]\"\nlanggraph dev<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"700\" height=\"375\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-8.png\" alt=\"Giao di\u1ec7n trace LangGraph hi\u1ec3n th\u1ecb c\u00e1c b\u01b0\u1edbc agent, tools v\u00e0 d\u1eef li\u1ec7u input, output c\u1ee7a m\u1ed9t l\u01b0\u1ee3t ch\u1ea1y\" class=\"wp-image-121490\" title=\"\" srcset=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-8.png 700w, https:\/\/tino.vn\/blog\/wp-content\/uploads\/2025\/12\/langgraph-la-gi-8-300x161.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption class=\"wp-element-caption\">Trace m\u1ed9t l\u01b0\u1ee3t ch\u1ea1y graph (agent g\u1ecdi tool search r\u1ed3i tr\u1ea3 l\u1eddi). Giao di\u1ec7n t\u1ea1i th\u1eddi \u0111i\u1ec3m ch\u1ee5p, c\u00f3 th\u1ec3 \u0111\u00e3 \u0111\u1ed5i<\/figcaption><\/figure>\n\n\n\n<h3 id=\"M\u1ed9t_s\u1ed1_m\u1eb9o_hay\">M\u1ed9t s\u1ed1 m\u1eb9o hay<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lu\u00f4n g\u1eafn checkpointer khi c\u1ea7n nh\u1edb qua nhi\u1ec1u l\u01b0\u1ee3t: <code>InMemorySaver<\/code> \u0111\u1ec3 th\u1eed, <code>PostgresSaver<\/code> (g\u00f3i <code>langgraph-checkpoint-postgres<\/code>) khi ch\u1ea1y th\u1eadt \u0111\u1ec3 state kh\u00f4ng m\u1ea5t khi kh\u1edfi \u0111\u1ed9ng l\u1ea1i.<\/li>\n\n\n<li>D\u00f9ng <code>MessagesState<\/code> ho\u1eb7c reducer <code>add_messages<\/code> (import t\u1eeb <code>langgraph.graph.message<\/code>) \u0111\u1ec3 tin nh\u1eafn m\u1edbi \u0111\u01b0\u1ee3c n\u1ed1i th\u00eam, kh\u00f4ng ghi \u0111\u00e8.<\/li>\n\n\n<li>D\u00f9ng <code>ToolNode<\/code> v\u00e0 <code>tools_condition<\/code> c\u00f3 s\u1eb5n thay v\u00ec t\u1ef1 vi\u1ebft h\u00e0m r\u1ebd nh\u00e1nh cho v\u00f2ng g\u1ecdi tool.<\/li>\n\n\n<li>Th\u00eam b\u01b0\u1edbc ch\u1edd ng\u01b0\u1eddi duy\u1ec7t b\u1eb1ng <code>interrupt()<\/code>; graph d\u1eebng l\u1ea1i, l\u01b0u state, v\u00e0 ch\u1ea1y ti\u1ebfp khi b\u1ea1n g\u1eedi <code>Command(resume=...)<\/code> v\u1edbi c\u00f9ng <code>thread_id<\/code>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>from langgraph.types import interrupt, Command\n\ndef duyet(state: MessagesState):\n    quyet_dinh = interrupt({\"ban_nhap\": state[\"messages\"][-1].content})   # d\u1eebng, ch\u1edd ng\u01b0\u1eddi duy\u1ec7t\n    return {\"messages\": [{\"role\": \"user\", \"content\": f\"Qu\u1ea3n l\u00fd: {quyet_dinh}\"}]}\n\n# ... th\u00eam node \"duyet\" v\u00e0o graph, compile v\u1edbi checkpointer ...\ncfg = {\"configurable\": {\"thread_id\": \"duyet-1\"}}\ngraph.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"B\u1ea3n nh\u00e1p email\"}]}, cfg)   # tr\u1ea3 v\u1ec1 __interrupt__\ngraph.invoke(Command(resume=\"\u0110\u1ed3ng \u00fd g\u1eedi\"), cfg)                                    # ch\u1ea1y ti\u1ebfp<\/code><\/pre>\n\n\n\n<h3 id=\"T\u1ea1o_d\u1ef1_\u00e1n_t\u1eeb_template\">T\u1ea1o d\u1ef1 \u00e1n t\u1eeb template<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -U \"langgraph-cli[inmem]\"\nlanggraph new my-agent --template new-langgraph-project-python<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">V\u1edbi langgraph-cli 0.4.40 (\u0111\u1ed1i chi\u1ebfu 29\/10\/2026), c\u00e1c template c\u00f3 s\u1eb5n g\u1ed3m <code>new-langgraph-project-python<\/code>, <code>agent-python<\/code>, <code>deep-agent-python<\/code> v\u00e0 b\u1ea3n JavaScript t\u01b0\u01a1ng \u1ee9ng; ch\u1ea1y <code>langgraph new --help<\/code> \u0111\u1ec3 xem danh s\u00e1ch hi\u1ec7n h\u00e0nh.<\/p>\n\n\n\n<h3 id=\"B\u1ea3o_m\u1eadt_API_key\">B\u1ea3o m\u1eadt API key<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0110\u1eb7t key trong bi\u1ebfn m\u00f4i tr\u01b0\u1eddng ho\u1eb7c file <code>.env<\/code> n\u1eb1m trong <code>.gitignore<\/code>; kh\u00f4ng ghi key v\u00e0o code, kh\u00f4ng commit l\u00ean repo c\u00f4ng khai, kh\u00f4ng \u0111\u01b0a v\u00e0o ph\u1ea7n ch\u1ea1y tr\u00ean tr\u00ecnh duy\u1ec7t.<\/li>\n\n\n<li>\u0110\u1eb7t gi\u1edbi h\u1ea1n chi ti\u00eau trong console c\u1ee7a h\u00e3ng model: graph c\u00f3 v\u00f2ng l\u1eb7p m\u00e0 thi\u1ebfu \u0111i\u1ec1u ki\u1ec7n d\u1eebng c\u00f3 th\u1ec3 g\u1ecdi model li\u00ean t\u1ee5c.<\/li>\n\n\n<li>Nghi l\u1ed9 key th\u00ec thu h\u1ed3i v\u00e0 t\u1ea1o key m\u1edbi ngay, r\u1ed3i ki\u1ec3m tra trang Usage.<\/li>\n\n\n<li>Xem th\u00eam c\u00e1ch qu\u1ea3n l\u00fd credential an to\u00e0n \u1edf b\u00e0i <a href=\"https:\/\/tino.vn\/blog\/bao-mat-credentials-va-api-keys-trong-n8n\/\">b\u1ea3o m\u1eadt credentials v\u00e0 API key trong n8n<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"Ch\u1ea1y_LangGraph_agent_24\/7:_t\u1ef1_host_hay_d\u00f9ng_n\u1ec1n_t\u1ea3ng?\">Ch\u1ea1y LangGraph agent 24\/7: t\u1ef1 host hay d\u00f9ng n\u1ec1n t\u1ea3ng?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Khi agent c\u1ea7n ch\u1ea1y li\u00ean t\u1ee5c, nh\u1eadn webhook ho\u1eb7c ch\u1ea1y theo l\u1ecbch, b\u1ea1n c\u00f3 hai h\u01b0\u1edbng: d\u00f9ng d\u1ecbch v\u1ee5 tri\u1ec3n khai c\u00f3 qu\u1ea3n l\u00fd c\u1ee7a LangChain (LangSmith Deployment), ho\u1eb7c t\u1ef1 host tr\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00ecnh. T\u1ef1 host cho b\u1ea1n quy\u1ec1n ki\u1ec3m so\u00e1t d\u1eef li\u1ec7u v\u00e0 chi ph\u00ed c\u1ed1 \u0111\u1ecbnh, \u0111\u1ed5i l\u1ea1i ph\u1ea3i t\u1ef1 v\u1eadn h\u00e0nh.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0110\u00f3ng g\u00f3i:<\/strong> <code>langgraph build<\/code> t\u1ea1o Docker image ch\u1ee9a API server cho graph; ho\u1eb7c t\u1ef1 b\u1ecdc graph trong m\u1ed9t API web (FastAPI, Flask) v\u00e0 ch\u1ea1y b\u1eb1ng Docker.<\/li>\n\n\n<li><strong>L\u01b0u state:<\/strong> thay <code>InMemorySaver<\/code> b\u1eb1ng checkpointer Postgres \u0111\u1ec3 kh\u00f4ng m\u1ea5t h\u1ed9i tho\u1ea1i khi kh\u1edfi \u0111\u1ed9ng l\u1ea1i.<\/li>\n\n\n<li><strong>B\u1ea3o v\u1ec7 endpoint:<\/strong> \u0111\u1eb7t sau HTTPS v\u00e0 x\u00e1c th\u1ef1c; agent c\u00f3 tool th\u1eadt th\u00ec ai g\u1ecdi \u0111\u01b0\u1ee3c endpoint l\u00e0 ra l\u1ec7nh \u0111\u01b0\u1ee3c cho agent.<\/li>\n\n\n<li><strong>T\u00e0i nguy\u00ean:<\/strong> graph ch\u1ec9 g\u1ecdi model qua API n\u00ean VPS CPU th\u00f4ng th\u01b0\u1eddng l\u00e0 \u0111\u1ee7; n\u1ebfu mu\u1ed1n ch\u1ea1y model local, xem <a href=\"https:\/\/tino.vn\/blog\/local-model-la-gi\/\">local model l\u00e0 g\u00ec<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">C\u1ea7n m\u00e1y ch\u1ee7 ch\u1ea1y 24\/7 cho agent? <a href=\"https:\/\/tino.vn\/vps-gia-re\" target=\"_blank\" rel=\"noopener\">VPS NVMe c\u1ee7a Tino<\/a> \u0111\u1eb7t t\u1ea1i Vi\u1ec7t Nam, c\u00f3 quy\u1ec1n root \u0111\u1ec3 c\u00e0i Docker, Postgres v\u00e0 graph c\u1ee7a b\u1ea1n. Xem c\u1ea5u h\u00ecnh v\u00e0 gi\u00e1 tr\u00ean trang s\u1ea3n ph\u1ea9m. So s\u00e1nh c\u00e1c l\u1ef1a ch\u1ecdn kh\u00e1c \u1edf b\u00e0i <a href=\"https:\/\/tino.vn\/blog\/vps-chay-ai-agent\/\">ch\u1ecdn VPS ch\u1ea1y AI agent<\/a>.<\/p>\n\n\n\n<h2 id=\"Gi\u1edbi_h\u1ea1n_v\u00e0_khi_n\u00e0o_kh\u00f4ng_n\u00ean_d\u00f9ng_LangGraph\">Gi\u1edbi h\u1ea1n v\u00e0 khi n\u00e0o kh\u00f4ng n\u00ean d\u00f9ng LangGraph<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph cho nhi\u1ec1u quy\u1ec1n ki\u1ec3m so\u00e1t nh\u01b0ng kh\u00f4ng mi\u1ec5n ph\u00ed v\u1ec1 c\u00f4ng s\u1ee9c: b\u1ea1n ph\u1ea3i t\u1ef1 thi\u1ebft k\u1ebf state, c\u1ea1nh v\u00e0 \u0111i\u1ec1u ki\u1ec7n d\u1eebng. V\u1edbi b\u00e0i to\u00e1n nh\u1ecf, l\u1edbp \u0111\u1ed3 th\u1ecb n\u00e0y c\u00f3 th\u1ec3 l\u00e0m code d\u00e0i h\u01a1n m\u00e0 kh\u00f4ng th\u00eam gi\u00e1 tr\u1ecb, n\u00ean c\u00e2n nh\u1eafc c\u00e1c tr\u01b0\u1eddng h\u1ee3p d\u01b0\u1edbi \u0111\u00e2y tr\u01b0\u1edbc khi ch\u1ecdn.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ch\u1ec9 c\u1ea7n agent g\u1ecdi tool chu\u1ea9n: d\u00f9ng <code>create_agent<\/code> c\u1ee7a LangChain, \u00edt code h\u01a1n m\u00e0 v\u1eabn ch\u1ea1y tr\u00ean LangGraph.<\/li>\n\n\n<li>Lu\u1ed3ng c\u1ed1 \u0111\u1ecbnh, kh\u00f4ng c\u00f3 AI t\u1ef1 quy\u1ebft b\u01b0\u1edbc ti\u1ebfp theo: m\u1ed9t workflow th\u00f4ng th\u01b0\u1eddng ho\u1eb7c c\u00f4ng c\u1ee5 nh\u01b0 n8n d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n.<\/li>\n\n\n<li>\u0110\u1ed9i ng\u0169 ch\u01b0a quen t\u01b0 duy state v\u00e0 \u0111\u1ed3 th\u1ecb: v\u00f2ng l\u1eb7p thi\u1ebfu \u0111i\u1ec1u ki\u1ec7n d\u1eebng c\u00f3 th\u1ec3 ch\u1ea1y m\u00e3i v\u00e0 t\u1ed1n token; lu\u00f4n \u0111\u1eb7t gi\u1edbi h\u1ea1n s\u1ed1 b\u01b0\u1edbc (<code>recursion_limit<\/code>).<\/li>\n\n\n<li>C\u1ea7n ch\u1ea1y model l\u1edbn ngay tr\u00ean m\u00e1y ch\u1ee7: LangGraph ch\u1ec9 \u0111i\u1ec1u ph\u1ed1i, kh\u00f4ng gi\u00fap model ch\u1ea1y nhanh h\u01a1n; ph\u1ea7n c\u1ee9ng v\u1eabn quy\u1ebft \u0111\u1ecbnh.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"C\u00e2u_h\u1ecfi_th\u01b0\u1eddng_g\u1eb7p\">C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p<\/h2>\n\n\n\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"LangGraph_c\u00f3_thay_th\u1ebf_ho\u00e0n_to\u00e0n_LangChain_kh\u00f4ng?\">LangGraph c\u00f3 thay th\u1ebf ho\u00e0n to\u00e0n LangChain kh\u00f4ng?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Kh\u00f4ng. Hai th\u01b0 vi\u1ec7n b\u1ed5 sung cho nhau: LangChain cung c\u1ea5p model, tool v\u00e0 agent d\u1ef1ng s\u1eb5n (<code>create_agent<\/code>), c\u00f2n LangGraph l\u00e0 l\u1edbp \u0111i\u1ec1u ph\u1ed1i b\u00ean d\u01b0\u1edbi. B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng LangGraph m\u1ed9t m\u00ecnh, nh\u01b0ng th\u01b0\u1eddng v\u1eabn d\u00f9ng c\u00e1c l\u1edbp model, tool c\u1ee7a LangChain b\u00ean trong node.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"Ng\u01b0\u1eddi_m\u1edbi_b\u1eaft_\u0111\u1ea7u_h\u1ecdc_AI_c\u00f3_n\u00ean_d\u00f9ng_LangGraph_ngay_kh\u00f4ng?\">Ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u h\u1ecdc AI c\u00f3 n\u00ean d\u00f9ng LangGraph ngay kh\u00f4ng?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">N\u00ean b\u1eaft \u0111\u1ea7u b\u1eb1ng agent c\u1ee7a LangChain ho\u1eb7c g\u1ecdi API tr\u1ef1c ti\u1ebfp \u0111\u1ec3 hi\u1ec3u model, prompt v\u00e0 tool tr\u01b0\u1edbc. LangGraph ph\u00f9 h\u1ee3p khi b\u1ea1n \u0111\u00e3 c\u1ea7n v\u00f2ng l\u1eb7p, tr\u1ea1ng th\u00e1i v\u00e0 \u0111i\u1ec3m duy\u1ec7t; l\u1ed9 tr\u00ecnh g\u1ee3i \u00fd c\u00f3 \u1edf b\u00e0i <a href=\"https:\/\/tino.vn\/blog\/lo-trinh-hoc-llms-ai-agents\/\">l\u1ed9 tr\u00ecnh h\u1ecdc LLMs v\u00e0 AI agents<\/a>.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"LangGraph_c\u00f3_mi\u1ec5n_ph\u00ed_kh\u00f4ng?\">LangGraph c\u00f3 mi\u1ec5n ph\u00ed kh\u00f4ng?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Th\u01b0 vi\u1ec7n LangGraph l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf, gi\u1ea5y ph\u00e9p MIT (PyPI, 29\/10\/2026), kh\u00f4ng thu ph\u00ed. Chi ph\u00ed ph\u00e1t sinh t\u1eeb API model, m\u00e1y ch\u1ee7 ch\u1ea1y graph v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 tr\u1ea3 ph\u00ed tu\u1ef3 ch\u1ecdn nh\u01b0 LangSmith; xem <a href=\"https:\/\/tino.vn\/blog\/phan-biet-chat-voi-token-credit-cua-ai\/\">c\u00e1ch t\u00ednh token v\u00e0 credit c\u1ee7a AI<\/a>.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"LangGraph_h\u1ed7_tr\u1ee3_nh\u1eefng_ng\u00f4n_ng\u1eef_l\u1eadp_tr\u00ecnh_n\u00e0o?\">LangGraph h\u1ed7 tr\u1ee3 nh\u1eefng ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh n\u00e0o?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Python v\u00e0 <a href=\"https:\/\/tino.vn\/blog\/javascript-la-gi\/\">JavaScript<\/a>\/TypeScript (LangGraph.js). B\u1ea3n Python y\u00eau c\u1ea7u Python 3.10 tr\u1edf l\u00ean.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"S\u1ef1_kh\u00e1c_bi\u1ec7t_gi\u1eefa_LangGraph_v\u00e0_AutoGPT_l\u00e0_g\u00ec?\">S\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa LangGraph v\u00e0 AutoGPT l\u00e0 g\u00ec?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">AutoGPT l\u00e0 m\u1ed9t \u1ee9ng d\u1ee5ng agent d\u1ef1ng s\u1eb5n \u0111\u1ec3 giao vi\u1ec7c. LangGraph l\u00e0 framework \u0111\u1ec3 l\u1eadp tr\u00ecnh vi\u00ean t\u1ef1 x\u00e2y agent theo nghi\u1ec7p v\u1ee5 ri\u00eang, ki\u1ec3m so\u00e1t t\u1eebng b\u01b0\u1edbc v\u00e0 \u0111i\u1ec3m d\u1eebng.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\n<script type=\"application\/ld+json\">\n\t{\n\t\t\"@context\": \"https:\/\/schema.org\",\n\t\t\"@type\": \"FAQPage\",\n\t\t\"mainEntity\": [\n\t\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"LangGraph c\u00f3 thay th\u1ebf ho\u00e0n to\u00e0n LangChain kh\u00f4ng?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>Kh\u00f4ng. Hai th\u01b0 vi\u1ec7n b\u1ed5 sung cho nhau: LangChain cung c\u1ea5p model, tool v\u00e0 agent d\u1ef1ng s\u1eb5n (create_agent), c\u00f2n LangGraph l\u00e0 l\u1edbp \u0111i\u1ec1u ph\u1ed1i b\u00ean d\u01b0\u1edbi. B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng LangGraph m\u1ed9t m\u00ecnh, nh\u01b0ng th\u01b0\u1eddng v\u1eabn d\u00f9ng c\u00e1c l\u1edbp model, tool c\u1ee7a LangChain b\u00ean trong node.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"Ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u h\u1ecdc AI c\u00f3 n\u00ean d\u00f9ng LangGraph ngay kh\u00f4ng?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>N\u00ean b\u1eaft \u0111\u1ea7u b\u1eb1ng agent c\u1ee7a LangChain ho\u1eb7c g\u1ecdi API tr\u1ef1c ti\u1ebfp \u0111\u1ec3 hi\u1ec3u model, prompt v\u00e0 tool tr\u01b0\u1edbc. LangGraph ph\u00f9 h\u1ee3p khi b\u1ea1n \u0111\u00e3 c\u1ea7n v\u00f2ng l\u1eb7p, tr\u1ea1ng th\u00e1i v\u00e0 \u0111i\u1ec3m duy\u1ec7t; l\u1ed9 tr\u00ecnh g\u1ee3i \u00fd c\u00f3 \u1edf b\u00e0i <a>l\u1ed9 tr\u00ecnh h\u1ecdc LLMs v\u00e0 AI agents<\/a>.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"LangGraph c\u00f3 mi\u1ec5n ph\u00ed kh\u00f4ng?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>Th\u01b0 vi\u1ec7n LangGraph l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf, gi\u1ea5y ph\u00e9p MIT (PyPI, 29\/10\/2026), kh\u00f4ng thu ph\u00ed. Chi ph\u00ed ph\u00e1t sinh t\u1eeb API model, m\u00e1y ch\u1ee7 ch\u1ea1y graph v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 tr\u1ea3 ph\u00ed tu\u1ef3 ch\u1ecdn nh\u01b0 LangSmith; xem <a>c\u00e1ch t\u00ednh token v\u00e0 credit c\u1ee7a AI<\/a>.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"LangGraph h\u1ed7 tr\u1ee3 nh\u1eefng ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh n\u00e0o?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>Python v\u00e0 <a>JavaScript<\/a>\/TypeScript (LangGraph.js). B\u1ea3n Python y\u00eau c\u1ea7u Python 3.10 tr\u1edf l\u00ean.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"S\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa LangGraph v\u00e0 AutoGPT l\u00e0 g\u00ec?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>AutoGPT l\u00e0 m\u1ed9t \u1ee9ng d\u1ee5ng agent d\u1ef1ng s\u1eb5n \u0111\u1ec3 giao vi\u1ec7c. LangGraph l\u00e0 framework \u0111\u1ec3 l\u1eadp tr\u00ecnh vi\u00ean t\u1ef1 x\u00e2y agent theo nghi\u1ec7p v\u1ee5 ri\u00eang, ki\u1ec3m so\u00e1t t\u1eebng b\u01b0\u1edbc v\u00e0 \u0111i\u1ec3m d\u1eebng.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t]\n\t}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>LangGraph l\u00e0 framework m\u00e3 ngu\u1ed3n m\u1edf (gi\u1ea5y ph\u00e9p MIT) c\u1ee7a LangChain, Inc. \u0111\u1ec3 x\u00e2y d\u1ef1ng AI agent v\u00e0 lu\u1ed3ng x\u1eed l\u00fd LLM c\u00f3 tr\u1ea1ng th\u00e1i, ch\u1ea1y d\u00e0i, d\u01b0\u1edbi d\u1ea1ng \u0111\u1ed3 th\u1ecb g\u1ed3m c\u00e1c node v\u00e0 c\u1ea1nh, cho ph\u00e9p v\u00f2ng l\u1eb7p, r\u1ebd nh\u00e1nh, l\u01b0u checkpoint v\u00e0 d\u1eebng ch\u1edd ng\u01b0\u1eddi duy\u1ec7t. B\u1ea3n hi\u1ec7n h\u00e0nh l\u00e0 langgraph 1.2.18 [&hellip;]<\/p>\n","protected":false},"author":23,"featured_media":121491,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7724],"tags":[6938],"class_list":["post-121483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-agent","tag-webmasters"],"_links":{"self":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/121483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/comments?post=121483"}],"version-history":[{"count":4,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/121483\/revisions"}],"predecessor-version":[{"id":133053,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/121483\/revisions\/133053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media\/121491"}],"wp:attachment":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media?parent=121483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/categories?post=121483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/tags?post=121483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}