{"id":24072,"date":"2025-11-11T10:04:34","date_gmt":"2025-11-11T03:04:34","guid":{"rendered":"https:\/\/gcloudvn.com\/?p=24072"},"modified":"2025-11-11T10:04:34","modified_gmt":"2025-11-11T03:04:34","slug":"huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys","status":"publish","type":"post","link":"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn T\u00edch h\u1ee3p Gemini API v\u00e0o \u1ee8ng d\u1ee5ng Web: T\u1eeb Prototype \u0111\u1ebfn ho\u00e0n thi\u1ec7n c\u00f9ng Gimasys"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">B\u1ea1n \u0111\u00e3 kinh ng\u1ea1c tr\u01b0\u1edbc kh\u1ea3 n\u0103ng c\u1ee7a c\u00e1c m\u00f4 h\u00ecnh AI th\u1ebf h\u1ec7 m\u1edbi: vi\u1ebft code, ph\u00e2n t\u00edch h\u00ecnh \u1ea3nh, t\u00f3m t\u1eaft nh\u1eefng v\u0103n b\u1ea3n d\u00e0i. V\u00e0 c\u00e2u h\u1ecfi th\u00f4i th\u00fac nh\u1ea5t trong t\u00e2m tr\u00ed c\u1ee7a m\u1ecdi nh\u00e0 ph\u00e1t tri\u1ec3n, m\u1ecdi gi\u00e1m \u0111\u1ed1c s\u1ea3n ph\u1ea9m l\u00fac n\u00e0y l\u00e0: &#8220;L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u00f4i c\u00f3 th\u1ec3 mang s\u1ee9c m\u1ea1nh \u0111\u00e1ng kinh ng\u1ea1c \u0111\u00f3 v\u00e0o ch\u00ednh \u1ee9ng d\u1ee5ng web c\u1ee7a t\u00f4i?&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">C\u00e2u tr\u1ea3 l\u1eddi kh\u00f4ng c\u00f2n l\u00e0 m\u1ed9t b\u00ed m\u1eadt hay \u0111\u1eb7c quy\u1ec1n c\u1ee7a c\u00e1c \u00f4ng l\u1edbn c\u00f4ng ngh\u1ec7. Gemini API ch\u00ednh l\u00e0 &#8220;c\u00e1nh c\u1ed5ng&#8221; \u0111\u00e3 \u0111\u01b0\u1ee3c m\u1edf ra, l\u00e0 c\u00e2y c\u1ea7u k\u1ebft n\u1ed1i tr\u1ef1c ti\u1ebfp \u0111\u1ebfn &#8220;b\u1ed9 n\u00e3o&#8221; AI m\u1ea1nh m\u1ebd nh\u1ea5t c\u1ee7a Google, cho ph\u00e9p b\u1ea1n x\u00e2y d\u1ef1ng c\u00e1c t\u00ednh n\u0103ng th\u00f4ng minh m\u00e0 tr\u01b0\u1edbc \u0111\u00e2y ch\u1ec9 c\u00f3 trong phim khoa h\u1ecdc vi\u1ec5n t\u01b0\u1edfng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tuy nhi\u00ean, h\u00e0nh tr\u00ecnh t\u00edch h\u1ee3p m\u1ed9t c\u00f4ng ngh\u1ec7 m\u1ea1nh m\u1ebd nh\u01b0 Gemini v\u00e0o \u1ee9ng d\u1ee5ng kh\u00f4ng ph\u1ea3i l\u00fac n\u00e0o c\u0169ng l\u00e0 m\u1ed9t \u0111\u01b0\u1eddng th\u1eb3ng. N\u00f3 bao g\u1ed3m hai giai \u0111o\u1ea1n r\u1ea5t kh\u00e1c bi\u1ec7t: t\u1eeb vi\u1ec7c x\u00e2y d\u1ef1ng m\u1ed9t b\u1ea3n d\u00f9ng th\u1eed nhanh (prototype) \u0111\u1ec3 ki\u1ec3m ch\u1ee9ng \u00fd t\u01b0\u1edfng, cho \u0111\u1ebfn vi\u1ec7c ph\u00e1t tri\u1ec3n n\u00f3 th\u00e0nh m\u1ed9t s\u1ea3n ph\u1ea9m ho\u00e0n thi\u1ec7n, c\u00f3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng, b\u1ea3o m\u1eadt v\u00e0 \u0111\u00e1ng tin c\u1eady cho h\u00e0ng ng\u00e0n ng\u01b0\u1eddi d\u00f9ng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">B\u00e0i vi\u1ebft n\u00e0y s\u1ebd l\u00e0 m\u1ed9t c\u1ea9m nang k\u1ef9 thu\u1eadt to\u00e0n di\u1ec7n, d\u1eabn d\u1eaft b\u1ea1n \u0111i qua c\u1ea3 hai giai \u0111o\u1ea1n c\u1ee7a h\u00e0nh tr\u00ecnh \u0111\u00f3. Ch\u00fang t\u00f4i s\u1ebd ch\u1ec9 cho b\u1ea1n c\u00e1ch \u0111\u1ec3 t\u1ef1 m\u00ecnh b\u1eaft \u0111\u1ea7u m\u1ed9t c\u00e1ch nhanh ch\u00f3ng, v\u00e0 quan tr\u1ecdng h\u01a1n, ch\u1ec9 ra con \u0111\u01b0\u1eddng chi\u1ebfn l\u01b0\u1ee3c \u0111\u1ec3 &#8220;\u0111i \u0111\u01b0\u1eddng d\u00e0i&#8221; m\u1ed9t c\u00e1ch b\u1ec1n v\u1eefng c\u00f9ng m\u1ed9t \u0111\u1ed1i t\u00e1c chuy\u00ean s\u00e2u nh\u01b0 Gimasys, bi\u1ebfn \u00fd t\u01b0\u1edfng AI c\u1ee7a b\u1ea1n th\u00e0nh m\u1ed9t l\u1ee3i th\u1ebf c\u1ea1nh tranh th\u1ef1c s\u1ef1.<\/span><\/p>\n<p><a href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/gemini-api-la-gi-5-ung-dung-dot-pha-va-cach-bat-dau-cung-chuyen-gia\/attachment\/geminiapi_socialshare-width-1300\/\" rel=\"attachment wp-att-24054\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24054\" src=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/GeminiAPI_SocialShare.width-1300.jpg\" alt=\"\" width=\"1300\" height=\"731\" srcset=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/GeminiAPI_SocialShare.width-1300.jpg 1300w, https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/GeminiAPI_SocialShare.width-1300-768x432.jpg 768w, https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/GeminiAPI_SocialShare.width-1300-18x10.jpg 18w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/a><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#Nhung_gi_ban_can_truoc_khi_bat_dau\" >Nh\u1eefng g\u00ec b\u1ea1n c\u1ea7n tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#1_API_Key\" >1. API Key<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#2_Nen_mong_Ky_thuat\" >2. N\u1ec1n m\u00f3ng K\u1ef9 thu\u1eadt<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#3_Cac_cong_cu_co_ban\" >3. C\u00e1c c\u00f4ng c\u1ee5 c\u01a1 b\u1ea3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#Huong_dan_Tich_hop_Xay_dung_ung_dung_%E2%80%9CHoi_Dap%E2%80%9D_don_gian\" >H\u01b0\u1edbng d\u1eabn T\u00edch h\u1ee3p: X\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng &#8220;H\u1ecfi &amp; \u0110\u00e1p&#8221; \u0111\u01a1n gi\u1ea3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#1_Kien_truc_Tong_quan_Vi_sao_can_Backend\" >1. Ki\u1ebfn tr\u00fac T\u1ed5ng quan: V\u00ec sao c\u1ea7n Backend?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#2_Buoc_1_Xay_dung_Backend_Vi_du_voi_Nodejs_Express\" >2. B\u01b0\u1edbc 1: X\u00e2y d\u1ef1ng Backend (V\u00ed d\u1ee5 v\u1edbi Node.js &amp; Express)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#3_Buoc_2_Xay_dung_Frontend_HTML_JavaScript_don_gian\" >3. B\u01b0\u1edbc 2: X\u00e2y d\u1ef1ng Frontend (HTML &amp; JavaScript \u0111\u01a1n gi\u1ea3n)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#4_Buoc_3_Chay_thu_va_Tan_huong_thanh_qua\" >4. B\u01b0\u1edbc 3: Ch\u1ea1y th\u1eed v\u00e0 T\u1eadn h\u01b0\u1edfng th\u00e0nh qu\u1ea3!<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#Tu_%E2%80%9CChay_duoc%E2%80%9D_den_%E2%80%9CSan_sang_Kinh_doanh%E2%80%9D_Nhung_Thach_thuc_ban_se_doi_mat\" >T\u1eeb &#8220;Ch\u1ea1y \u0111\u01b0\u1ee3c&#8221; \u0111\u1ebfn &#8220;S\u1eb5n s\u00e0ng Kinh doanh&#8221;: Nh\u1eefng Th\u00e1ch th\u1ee9c b\u1ea1n s\u1ebd \u0111\u1ed1i m\u1eb7t<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#1_Bao_mat_Quan_ly_API_Key_o_Quy_mo_lon\" >1. B\u1ea3o m\u1eadt &amp; Qu\u1ea3n l\u00fd API Key \u1edf Quy m\u00f4 l\u1edbn<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#2_Kha_nang_Mo_rong_Scalability\" >2. Kh\u1ea3 n\u0103ng M\u1edf r\u1ed9ng (Scalability)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#3_Tich_hop_du_lieu_doanh_nghiep\" >3. T\u00edch h\u1ee3p d\u1eef li\u1ec7u doanh nghi\u1ec7p<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#4_Toi_uu_Chi_phi_FinOps\" >4. T\u1ed1i \u01b0u Chi ph\u00ed (FinOps)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#5_Do_tre_va_Trai_nghiem_nguoi_dung_Latency_UX\" >5. \u0110\u1ed9 tr\u1ec5 v\u00e0 Tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng (Latency &amp; UX)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#Gimasys_Kien_truc_su_cho_Ung_dung_AI\" >Gimasys: Ki\u1ebfn tr\u00fac s\u01b0 cho \u1ee8ng d\u1ee5ng AI<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#1_Kien_truc_bao_mat_va_mo_rong_tren_Google_Cloud\" >1. Ki\u1ebfn tr\u00fac b\u1ea3o m\u1eadt v\u00e0 m\u1edf r\u1ed9ng tr\u00ean Google Cloud<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#2_Chuyen_gia_Tich_hop_he_thong\" >2. Chuy\u00ean gia T\u00edch h\u1ee3p h\u1ec7 th\u1ed1ng<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#3_Toi_uu_hieu_nang_va_chi_phi\" >3. T\u1ed1i \u01b0u hi\u1ec7u n\u0103ng v\u00e0 chi ph\u00ed<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#4_Giai_phap_End-to-End\" >4. Gi\u1ea3i ph\u00e1p End-to-End<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/huong-dan-tich-hop-gemini-api-vao-ung-dung-web-tu-prototype-den-hoan-thien-cung-gimasys\/#Ket_luan\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Nhung_gi_ban_can_truoc_khi_bat_dau\"><\/span><b>Nh\u1eefng g\u00ec b\u1ea1n c\u1ea7n tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Tr\u01b0\u1edbc khi ch\u00fang ta \u0111i s\u00e2u v\u00e0o nh\u1eefng d\u00f2ng m\u00e3 l\u1ec7nh \u0111\u1ea7u ti\u00ean, h\u00e3y \u0111\u1ea3m b\u1ea3o r\u1eb1ng b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c chu\u1ea9n b\u1ecb \u0111\u1ea7y \u0111\u1ee7 c\u00f4ng ngh\u1ec7. Vi\u1ec7c chu\u1ea9n b\u1ecb k\u1ef9 l\u01b0\u1ee1ng \u1edf b\u01b0\u1edbc n\u00e0y s\u1ebd gi\u00fap qu\u00e1 tr\u00ecnh t\u00edch h\u1ee3p di\u1ec5n ra su\u00f4n s\u1ebb v\u00e0 nhanh ch\u00f3ng h\u01a1n r\u1ea5t nhi\u1ec1u.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_API_Key\"><\/span><b>1. API Key<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u00e2y l\u00e0 th\u1ee9 quan tr\u1ecdng nh\u1ea5t, l\u00e0 &#8220;ch\u00eca kh\u00f3a&#8221; \u0111\u1ec3 \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n c\u00f3 th\u1ec3 giao ti\u1ebfp v\u00e0 y\u00eau c\u1ea7u s\u1ee9c m\u1ea1nh t\u1eeb c\u00e1c m\u00f4 h\u00ecnh Gemini.<\/span><\/p>\n<p><b>C\u00e1ch l\u1ea5y API Key:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Truy c\u1eadp v\u00e0o Google AI Studio.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u0110\u0103ng nh\u1eadp b\u1eb1ng t\u00e0i kho\u1ea3n Google c\u1ee7a b\u1ea1n.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u1ede giao di\u1ec7n ch\u00ednh, t\u00ecm \u0111\u1ebfn m\u1ee5c &#8220;Get API key&#8221;.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ea1o m\u1ed9t API Key m\u1edbi. \u0110\u00e2y l\u00e0 m\u1ed9t chu\u1ed7i k\u00fd t\u1ef1 b\u00ed m\u1eadt, h\u00e3y sao ch\u00e9p v\u00e0 l\u01b0u n\u00f3 l\u1ea1i m\u1ed9t c\u00e1ch c\u1ea9n th\u1eadn.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Note: <a href=\"https:\/\/gcloudvn.com\/en\/google-cloud-platform\/\">Google<\/a> hi\u1ec7n \u0111ang cung c\u1ea5p m\u1ed9t g\u00f3i s\u1eed d\u1ee5ng mi\u1ec5n ph\u00ed cho Gemini Pro API th\u00f4ng qua AI Studio, r\u1ea5t tuy\u1ec7t v\u1eddi cho vi\u1ec7c h\u1ecdc h\u1ecfi v\u00e0 x\u00e2y d\u1ef1ng c\u00e1c b\u1ea3n d\u00f9ng th\u1eed nhanh (prototype).<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Nen_mong_Ky_thuat\"><\/span><b>2. N\u1ec1n m\u00f3ng K\u1ef9 thu\u1eadt<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 x\u00e2y d\u1ef1ng m\u1ed9t \u1ee9ng d\u1ee5ng web ho\u00e0n ch\u1ec9nh, ch\u00fang ta c\u1ea7n hai ph\u1ea7n: backend (m\u00e1y ch\u1ee7) \u0111\u1ec3 x\u1eed l\u00fd logic v\u00e0 g\u1ecdi API m\u1ed9t c\u00e1ch an to\u00e0n, v\u00e0 frontend (giao di\u1ec7n) \u0111\u1ec3 ng\u01b0\u1eddi d\u00f9ng t\u01b0\u01a1ng t\u00e1c.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Backend (Ph\u00eda m\u00e1y ch\u1ee7): \u0110\u00e2y l\u00e0 n\u01a1i b\u1ea1n s\u1ebd g\u1ecdi \u0111\u1ebfn Gemini API. B\u1ea1n c\u1ea7n c\u00f3 ki\u1ebfn th\u1ee9c c\u01a1 b\u1ea3n v\u1ec1 m\u1ed9t trong hai l\u1ef1a ch\u1ecdn r\u1ea5t ph\u1ed5 bi\u1ebfn v\u00e0 d\u1ec5 ti\u1ebfp c\u1eadn sau:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Node.js (c\u00f9ng v\u1edbi framework Express).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Python (c\u00f9ng v\u1edbi framework Flask).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Frontend (Ph\u00eda ng\u01b0\u1eddi d\u00f9ng): \u0110\u00e2y l\u00e0 giao di\u1ec7n m\u00e0 ng\u01b0\u1eddi d\u00f9ng s\u1ebd nh\u00ecn th\u1ea5y v\u00e0 t\u01b0\u01a1ng t\u00e1c.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Ch\u1ec9 c\u1ea7n ki\u1ebfn th\u1ee9c c\u01a1 b\u1ea3n v\u1ec1 HTML, CSS, v\u00e0 JavaScript l\u00e0 \u0111\u1ee7 \u0111\u1ec3 x\u00e2y d\u1ef1ng m\u1ed9t giao di\u1ec7n \u0111\u01a1n gi\u1ea3n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ch\u00fang ta s\u1ebd kh\u00f4ng c\u1ea7n \u0111\u1ebfn c\u00e1c framework ph\u1ee9c t\u1ea1p nh\u01b0 React hay Vue cho v\u00ed d\u1ee5 trong b\u00e0i vi\u1ebft n\u00e0y, nh\u1eb1m gi\u1eef cho m\u1ecdi th\u1ee9 \u0111\u01a1n gi\u1ea3n v\u00e0 d\u1ec5 hi\u1ec3u nh\u1ea5t.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Cac_cong_cu_co_ban\"><\/span><b>3. C\u00e1c c\u00f4ng c\u1ee5 c\u01a1 b\u1ea3n<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Cu\u1ed1i c\u00f9ng, h\u00e3y \u0111\u1ea3m b\u1ea3o c\u00e1c c\u00f4ng c\u1ee5 c\u01a1 b\u1ea3n \u0111\u00e3 s\u1eb5n s\u00e0ng tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tr\u00ecnh so\u1ea1n th\u1ea3o m\u00e3 (Code Editor): Visual Studio Code (VS Code) l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn mi\u1ec5n ph\u00ed, m\u1ea1nh m\u1ebd v\u00e0 \u0111\u01b0\u1ee3c \u0111\u00f4ng \u0111\u1ea3o l\u1eadp tr\u00ecnh vi\u00ean tin d\u00f9ng.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Node.js ho\u1eb7c Python: \u0110\u1ea3m b\u1ea3o b\u1ea1n \u0111\u00e3 c\u00e0i \u0111\u1eb7t phi\u00ean b\u1ea3n ph\u00f9 h\u1ee3p c\u1ee7a Node.js ho\u1eb7c Python tr\u00ean m\u00e1y t\u00ednh c\u1ee7a m\u00ecnh, t\u00f9y thu\u1ed9c v\u00e0o l\u1ef1a ch\u1ecdn c\u00f4ng ngh\u1ec7 backend m\u00e0 b\u1ea1n s\u1ebd s\u1eed d\u1ee5ng.<\/span><\/li>\n<\/ul>\n<p><a href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/gemini-api-la-gi-5-ung-dung-dot-pha-va-cach-bat-dau-cung-chuyen-gia\/attachment\/2-5_bundle_keyword_social-share_1920-1080-width-1300-1\/\" rel=\"attachment wp-att-24055\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24055\" src=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/2.5_bundle_keyword_social-share_1920-1080.width-1300-1.png\" alt=\"\" width=\"1300\" height=\"731\" srcset=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/2.5_bundle_keyword_social-share_1920-1080.width-1300-1.png 1300w, https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/2.5_bundle_keyword_social-share_1920-1080.width-1300-1-768x432.png 768w, https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/2.5_bundle_keyword_social-share_1920-1080.width-1300-1-18x10.png 18w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Huong_dan_Tich_hop_Xay_dung_ung_dung_%E2%80%9CHoi_Dap%E2%80%9D_don_gian\"><\/span><b>H\u01b0\u1edbng d\u1eabn T\u00edch h\u1ee3p: X\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng &#8220;H\u1ecfi &amp; \u0110\u00e1p&#8221; \u0111\u01a1n gi\u1ea3n<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 minh h\u1ecda c\u00e1ch t\u00edch h\u1ee3p Gemini API, ch\u00fang ta s\u1ebd c\u00f9ng nhau x\u00e2y d\u1ef1ng m\u1ed9t \u1ee9ng d\u1ee5ng web &#8220;H\u1ecfi &amp; \u0110\u00e1p&#8221; \u0111\u01a1n gi\u1ea3n. Ng\u01b0\u1eddi d\u00f9ng s\u1ebd nh\u1eadp c\u00e2u h\u1ecfi v\u00e0o m\u1ed9t \u00f4 v\u0103n b\u1ea3n, g\u1eedi \u0111i, v\u00e0 \u1ee9ng d\u1ee5ng s\u1ebd hi\u1ec3n th\u1ecb c\u00e2u tr\u1ea3 l\u1eddi t\u1eeb Gemini.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_Kien_truc_Tong_quan_Vi_sao_can_Backend\"><\/span><b>1. Ki\u1ebfn tr\u00fac T\u1ed5ng quan: V\u00ec sao c\u1ea7n Backend?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Tr\u01b0\u1edbc h\u1ebft, h\u00e3y h\u00ecnh dung m\u00f4 h\u00ecnh ho\u1ea1t \u0111\u1ed9ng c\u1ee7a \u1ee9ng d\u1ee5ng n\u00e0y:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Frontend (Giao di\u1ec7n Ng\u01b0\u1eddi d\u00f9ng): \u0110\u00e2y l\u00e0 ph\u1ea7n kh\u00e1ch h\u00e0ng nh\u00ecn th\u1ea5y v\u00e0 t\u01b0\u01a1ng t\u00e1c. N\u00f3 s\u1ebd c\u00f3 m\u1ed9t \u00f4 nh\u1eadp li\u1ec7u cho c\u00e2u h\u1ecfi v\u00e0 m\u1ed9t n\u00fat g\u1eedi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Backend (M\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n): \u0110\u00e2y l\u00e0 c\u1ea7u n\u1ed1i b\u00ed m\u1eadt. N\u00f3 nh\u1eadn c\u00e2u h\u1ecfi t\u1eeb Frontend, sau \u0111\u00f3 g\u1ecdi \u0111\u1ebfn Gemini API m\u1ed9t c\u00e1ch an to\u00e0n v\u00e0 cu\u1ed1i c\u00f9ng, chuy\u1ec3n c\u00e2u tr\u1ea3 l\u1eddi t\u1eeb Gemini v\u1ec1 l\u1ea1i Frontend \u0111\u1ec3 hi\u1ec3n th\u1ecb cho ng\u01b0\u1eddi d\u00f9ng.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Gemini API (Google): Nh\u1eadn y\u00eau c\u1ea7u t\u1eeb Backend, x\u1eed l\u00fd b\u1eb1ng m\u00f4 h\u00ecnh AI v\u00e0 tr\u1ea3 v\u1ec1 c\u00e2u tr\u1ea3 l\u1eddi.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">L\u01b0u \u00fd quan tr\u1ecdng: Ch\u00fang ta KH\u00d4NG BAO GI\u1edc g\u1ecdi tr\u1ef1c ti\u1ebfp Gemini API t\u1eeb Frontend (tr\u00ecnh duy\u1ec7t). L\u00fd do l\u00e0 v\u00ec API Key c\u1ee7a b\u1ea1n l\u00e0 th\u00f4ng tin b\u00ed m\u1eadt. N\u1ebfu b\u1ea1n g\u1ecdi tr\u1ef1c ti\u1ebfp t\u1eeb Frontend, API Key s\u1ebd b\u1ecb l\u1ed9 ra ngo\u00e0i v\u00e0 k\u1ebb x\u1ea5u c\u00f3 th\u1ec3 l\u1ee3i d\u1ee5ng \u0111\u1ec3 s\u1eed d\u1ee5ng t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n, g\u00e2y ph\u00e1t sinh chi ph\u00ed ho\u1eb7c l\u1ea1m d\u1ee5ng. Backend \u0111\u00f3ng vai tr\u00f2 nh\u01b0 m\u1ed9t &#8220;ng\u01b0\u1eddi g\u00e1c c\u1ed5ng&#8221; an to\u00e0n, gi\u1eef API Key b\u00ed m\u1eadt v\u00e0 ch\u1ec9 cho ph\u00e9p giao ti\u1ebfp qua n\u00f3.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Buoc_1_Xay_dung_Backend_Vi_du_voi_Nodejs_Express\"><\/span><b>2. B\u01b0\u1edbc 1: X\u00e2y d\u1ef1ng Backend (V\u00ed d\u1ee5 v\u1edbi Node.js &amp; Express)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Ch\u00fang ta s\u1ebd d\u00f9ng Node.js v\u1edbi framework Express \u0111\u1ec3 t\u1ea1o m\u1ed9t m\u00e1y ch\u1ee7 \u0111\u01a1n gi\u1ea3n.<\/span><\/p>\n<p><b>Kh\u1edfi t\u1ea1o d\u1ef1 \u00e1n:<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">bash<\/span><\/p>\n<p><span style=\"font-weight: 400;\">mkdir gemini-qa-app<\/span><\/p>\n<p><span style=\"font-weight: 400;\">cd gemini-qa-app<\/span><\/p>\n<p><span style=\"font-weight: 400;\">npm init -y<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>C\u00e0i \u0111\u1eb7t c\u00e1c g\u00f3i c\u1ea7n thi\u1ebft:<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">bash<\/span><\/p>\n<p><span style=\"font-weight: 400;\">npm install express @google\/generative-ai dotenv<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">express: Framework web.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">@google\/generative-ai: Th\u01b0 vi\u1ec7n ch\u00ednh th\u1ee9c c\u1ee7a Google \u0111\u1ec3 g\u1ecdi Gemini API.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">dotenv: \u0110\u1ec3 qu\u1ea3n l\u00fd bi\u1ebfn m\u00f4i tr\u01b0\u1eddng (API Key).<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><b>T\u1ea1o file .env:<\/b><\/p>\n<p><span style=\"font-weight: 400;\">T\u1ea1o m\u1ed9t file c\u00f3 t\u00ean .env \u1edf th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a d\u1ef1 \u00e1n v\u00e0 th\u00eam API Key c\u1ee7a b\u1ea1n v\u00e0o:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">API_KEY=YOUR_GEMINI_API_KEY_HERE<\/span><\/p>\n<p><span style=\"font-weight: 400;\">(Thay YOUR_GEMINI_API_KEY_HERE b\u1eb1ng API Key b\u1ea1n \u0111\u00e3 l\u1ea5y t\u1eeb Google AI Studio).<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>T\u1ea1o file server.js:<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">JavaScript<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\/\/ [Code Snippet 1] &#8211; Kh\u1edfi t\u1ea1o m\u00e1y ch\u1ee7 Express<\/span><\/p>\n<p><span style=\"font-weight: 400;\">require(&#8216;dotenv&#8217;).config(); \/\/ Load bi\u1ebfn m\u00f4i tr\u01b0\u1eddng t\u1eeb file .env<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const express = require(&#8216;express&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const { GoogleGenerativeAI } = require(&#8216;@google\/generative-ai&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const app = express();<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const port = 3000;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\/\/ L\u1ea5y API Key t\u1eeb bi\u1ebfn m\u00f4i tr\u01b0\u1eddng<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const API_KEY = process.env.API_KEY;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">if (!API_KEY) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0console.error(&#8216;API_KEY not found in .env file&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0process.exit(1);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">const genAI = new GoogleGenerativeAI(API_KEY);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">app.use(express.json()); \/\/ \u0110\u1ec3 server c\u00f3 th\u1ec3 \u0111\u1ecdc d\u1eef li\u1ec7u JSON t\u1eeb request<\/span><\/p>\n<p><span style=\"font-weight: 400;\">app.use(express.static(&#8216;public&#8217;)); \/\/ Ph\u1ee5c v\u1ee5 file t\u0129nh t\u1eeb th\u01b0 m\u1ee5c &#8216;public&#8217;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\/\/ [Code Snippet 2] &#8211; Endpoint g\u1ecdi Gemini API<\/span><\/p>\n<p><span style=\"font-weight: 400;\">app.post(&#8216;\/ask-gemini&#8217;, async (req, res) =&gt; {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0try {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0const { question } = req.body;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0if (!question) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return res.status(400).json({ error: &#8216;Question is required&#8217; });<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0const model = genAI.getGenerativeModel({ model: &#8216;gemini-pro&#8217; });<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0const result = await model.generateContent(question);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0const response = await result.response;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0const text = response.text();<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0res.json({ answer: text });<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0} catch (error) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0console.error(&#8216;Error calling Gemini API:&#8217;, error);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0res.status(500).json({ error: &#8216;Failed to get response from Gemini API&#8217; });<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">});<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">app.listen(port, () =&gt; {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0console.log(`Backend server running at http:\/\/localhost:${port}`);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">});<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Buoc_2_Xay_dung_Frontend_HTML_JavaScript_don_gian\"><\/span><b>3. B\u01b0\u1edbc 2: X\u00e2y d\u1ef1ng Frontend (HTML &amp; JavaScript \u0111\u01a1n gi\u1ea3n)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">T\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c public trong th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a d\u1ef1 \u00e1n. B\u00ean trong th\u01b0 m\u1ee5c public, t\u1ea1o m\u1ed9t file index.html.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>T\u1ea1o file public\/index.html:<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">HTML<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;!&#8211; [Code Snippet 3] &#8211; C\u1ea5u tr\u00fac HTML &#8211;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;!DOCTYPE html&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;html lang=&quot;&rdquo;en&rdquo;&quot;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;head&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;meta charset=&#8221;UTF-8&#8243;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1.0&#8243;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Gemini Q&amp;A App&lt;\/title&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;style&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body { font-family: sans-serif; margin: 20px; background-color: #f4f4f4; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.container { max-width: 800px; margin: auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0h1 { text-align: center; color: #333; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#qaForm { display: flex; margin-bottom: 20px; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#questionInput { flex-grow: 1; padding: 10px; border: 1px solid #ddd; border-radius: 4px 0 0 4px; font-size: 16px; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#submitBtn { padding: 10px 15px; background-color: #4CAF50; color: white; border: none; border-radius: 0 4px 4px 0; cursor: pointer; font-size: 16px; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#submitBtn:hover { background-color: #45a049; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#responseArea { background-color: #e9e9e9; padding: 20px; border-radius: 4px; min-height: 100px; white-space: pre-wrap; word-wrap: break-word; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.loading { text-align: center; color: #666; }<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;\/style&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;\/head&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;body&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;div class=&quot;&rdquo;container&rdquo;&quot;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h1&gt;Ask Gemini&lt;\/h1&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;form id=&#8221;qaForm&#8221;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=&#8221;text&#8221; id=&#8221;questionInput&#8221; placeholder=&#8221;Enter your question here&#8230;&#8221; required&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=&#8221;submit&#8221; id=&#8221;submitBtn&#8221;&gt;Ask&lt;\/button&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=&quot;&rdquo;responseArea&rdquo;&quot;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!&#8211; Gemini&#8217;s answer will appear here &#8211;&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;script&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ [Code Snippet 4] &#8211; JavaScript \u0111\u1ec3 g\u1eedi y\u00eau c\u1ea7u v\u00e0 hi\u1ec3n th\u1ecb k\u1ebft qu\u1ea3<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const qaForm = document.getElementById(&#8216;qaForm&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const questionInput = document.getElementById(&#8216;questionInput&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const responseArea = document.getElementById(&#8216;responseArea&#8217;);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const submitBtn = document.getElementById(&#8216;submitBtn&#8217;);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0qaForm.addEventListener(&#8216;submit&#8217;, async (event) =&gt; {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0event.preventDefault(); \/\/ Ng\u0103n ch\u1eb7n form submit truy\u1ec1n th\u1ed1ng<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const question = questionInput.value.trim();<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!question) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0responseArea.textContent = &#8216;Please enter a question.&#8217;;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0responseArea.innerHTML = &lsquo;&lt;div class=&quot;&rdquo;loading&rdquo;&quot;&gt;Loading&hellip;&lt;\/div&gt;&rsquo;;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0submitBtn.disabled = true; \/\/ V\u00f4 hi\u1ec7u h\u00f3a n\u00fat g\u1eedi trong khi ch\u1edd ph\u1ea3n h\u1ed3i<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const response = await fetch(&#8216;\/ask-gemini&#8217;, {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0method: &#8216;POST&#8217;,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0headers: {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8216;Content-Type&#8217;: &#8216;application\/json&#8217;,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body: JSON.stringify({ question }),<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!response.ok) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw new Error(`HTTP error! status: ${response.status}`);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const data = await response.json();<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0responseArea.textContent = data.answer;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch (error) {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.error(&#8216;Error fetching data:&#8217;, error);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0responseArea.textContent = &#8216;Error: Could not get a response. Please try again.&#8217;;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} finally {<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0submitBtn.disabled = false; \/\/ K\u00edch ho\u1ea1t l\u1ea1i n\u00fat g\u1eedi<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0&lt;\/script&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;\/body&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;\/html&gt;<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_Buoc_3_Chay_thu_va_Tan_huong_thanh_qua\"><\/span><b>4. B\u01b0\u1edbc 3: Ch\u1ea1y th\u1eed v\u00e0 T\u1eadn h\u01b0\u1edfng th\u00e0nh qu\u1ea3!<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><b>Ch\u1ea1y Backend:<\/b><span style=\"font-weight: 400;\"> M\u1edf terminal ho\u1eb7c command prompt, \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn th\u01b0 m\u1ee5c gemini-qa-app v\u00e0 ch\u1ea1y l\u1ec7nh:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">bash<\/span><\/p>\n<p><span style=\"font-weight: 400;\">node server.js<\/span><\/p>\n<p><span style=\"font-weight: 400;\">B\u1ea1n s\u1ebd th\u1ea5y th\u00f4ng b\u00e1o Backend server running at http:\/\/localhost:3000.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>M\u1edf Frontend:<\/b><span style=\"font-weight: 400;\"> M\u1edf tr\u00ecnh duy\u1ec7t web c\u1ee7a b\u1ea1n v\u00e0 truy c\u1eadp \u0111\u1ecba ch\u1ec9:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">http:\/\/localhost:3000\/<\/span><\/p>\n<p><span style=\"font-weight: 400;\">B\u00e2y gi\u1edd, b\u1ea1n c\u00f3 th\u1ec3 nh\u1eadp c\u00e2u h\u1ecfi v\u00e0o \u00f4 v\u00e0 nh\u1ea5n &#8220;Ask&#8221; \u0111\u1ec3 nh\u1eadn c\u00e2u tr\u1ea3 l\u1eddi t\u1eeb Gemini!<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tu_%E2%80%9CChay_duoc%E2%80%9D_den_%E2%80%9CSan_sang_Kinh_doanh%E2%80%9D_Nhung_Thach_thuc_ban_se_doi_mat\"><\/span><b>T\u1eeb &#8220;Ch\u1ea1y \u0111\u01b0\u1ee3c&#8221; \u0111\u1ebfn &#8220;S\u1eb5n s\u00e0ng Kinh doanh&#8221;: Nh\u1eefng Th\u00e1ch th\u1ee9c b\u1ea1n s\u1ebd \u0111\u1ed1i m\u1eb7t<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Ch\u00fac m\u1eebng! N\u1ebfu \u0111\u00e3 l\u00e0m theo c\u00e1c b\u01b0\u1edbc tr\u00ean, b\u1ea1n \u0111\u00e3 th\u00e0nh c\u00f4ng x\u00e2y d\u1ef1ng \u0111\u01b0\u1ee3c \u1ee9ng d\u1ee5ng web \u0111\u1ea7u ti\u00ean c\u00f3 t\u00edch h\u1ee3p Tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nh\u01b0ng, t\u1eeb &#8220;Ch\u1ea1y \u0111\u01b0\u1ee3c&#8221; \u0111\u1ebfn &#8220;S\u1eb5n s\u00e0ng Kinh doanh&#8221; s\u1ebd x\u1ea3y ra v\u00f4 v\u00e0n th\u00e1ch th\u1ee9c m\u00e0 b\u1ea1n ph\u1ea3i \u0111\u1ed1i m\u1eb7t. Khi \u0111\u01b0a \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n t\u1eeb m\u00f4i tr\u01b0\u1eddng th\u1eed nghi\u1ec7m ra v\u1eadn h\u00e0nh th\u1ef1c t\u1ebf cho h\u00e0ng tr\u0103m, h\u00e0ng ng\u00e0n ng\u01b0\u1eddi d\u00f9ng, b\u1ea1n s\u1ebd ngay l\u1eadp t\u1ee9c \u0111\u1ed1i m\u1eb7t v\u1edbi nh\u1eefng b\u00e0i to\u00e1n ph\u1ee9c t\u1ea1p h\u01a1n r\u1ea5t nhi\u1ec1u.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">D\u01b0\u1edbi \u0111\u00e2y l\u00e0 nh\u1eefng th\u00e1ch th\u1ee9c th\u1ef1c t\u1ebf m\u00e0 m\u1ecdi d\u1ef1 \u00e1n AI chuy\u00ean nghi\u1ec7p \u0111\u1ec1u ph\u1ea3i gi\u1ea3i quy\u1ebft:<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_Bao_mat_Quan_ly_API_Key_o_Quy_mo_lon\"><\/span><b>1. B\u1ea3o m\u1eadt &amp; Qu\u1ea3n l\u00fd API Key \u1edf Quy m\u00f4 l\u1edbn<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Trong v\u00ed d\u1ee5, ch\u00fang ta d\u00f9ng m\u1ed9t API Key duy nh\u1ea5t. Nh\u01b0ng trong m\u1ed9t \u0111\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n, b\u1ea1n s\u1ebd c\u1ea7n nhi\u1ec1u key cho c\u00e1c m\u00f4i tr\u01b0\u1eddng kh\u00e1c nhau (ph\u00e1t tri\u1ec3n, ki\u1ec3m th\u1eed, s\u1ea3n ph\u1ea9m th\u1eadt).<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e1ch th\u1ee9c: L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 qu\u1ea3n l\u00fd an to\u00e0n h\u00e0ng lo\u1ea1t API key? L\u00e0m sao \u0111\u1ec3 c\u1ea5p quy\u1ec1n, thu h\u1ed3i v\u00e0 xoay v\u00f2ng (rotate) c\u00e1c key m\u1ed9t c\u00e1ch t\u1ef1 \u0111\u1ed9ng? M\u1ed9t API key b\u1ecb l\u1ed9 c\u00f3 th\u1ec3 g\u00e2y ra thi\u1ec7t h\u1ea1i t\u00e0i ch\u00ednh kh\u1ed5ng l\u1ed3.<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"2_Kha_nang_Mo_rong_Scalability\"><\/span><b>2. Kh\u1ea3 n\u0103ng M\u1edf r\u1ed9ng (Scalability)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">M\u00e1y ch\u1ee7 backend \u0111\u01a1n gi\u1ea3n m\u00e0 ch\u00fang ta v\u1eeba x\u00e2y d\u1ef1ng s\u1ebd ngay l\u1eadp t\u1ee9c &#8220;s\u1eadp&#8221; khi c\u00f3 v\u00e0i tr\u0103m ng\u01b0\u1eddi d\u00f9ng truy c\u1eadp c\u00f9ng l\u00fac.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e1ch th\u1ee9c: L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 h\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 ph\u1ee5c v\u1ee5 \u0111\u1ed3ng th\u1eddi h\u00e0ng ng\u00e0n y\u00eau c\u1ea7u m\u00e0 kh\u00f4ng b\u1ecb qu\u00e1 t\u1ea3i? B\u1ea1n s\u1ebd c\u1ea7n \u0111\u1ebfn ki\u1ebfn tr\u00fac microservices, b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i (load balancers), v\u00e0 c\u00e1c h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng m\u1edf r\u1ed9ng (auto-scaling) \u2013 nh\u1eefng kh\u00e1i ni\u1ec7m \u0111\u00f2i h\u1ecfi chuy\u00ean m\u00f4n s\u00e2u v\u1ec1 h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y.<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"3_Tich_hop_du_lieu_doanh_nghiep\"><\/span><b>3. T\u00edch h\u1ee3p d\u1eef li\u1ec7u doanh nghi\u1ec7p<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">M\u1ed9t \u1ee9ng d\u1ee5ng AI th\u1ef1c s\u1ef1 h\u1eefu \u00edch ph\u1ea3i &#8220;hi\u1ec3u&#8221; \u0111\u01b0\u1ee3c doanh nghi\u1ec7p c\u1ee7a b\u1ea1n.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e1ch th\u1ee9c: L\u00e0m sao \u0111\u1ec3 Gemini API c\u00f3 th\u1ec3 &#8220;\u0111\u1ecdc&#8221; v\u00e0 hi\u1ec3u \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u t\u1eeb h\u1ec7 th\u1ed1ng CRM, ERP, hay c\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ea3n ph\u1ea9m c\u1ee7a ri\u00eang b\u1ea1n? \u0110\u00e2y l\u00e0 b\u00e0i to\u00e1n v\u1ec1 t\u00edch h\u1ee3p h\u1ec7 th\u1ed1ng, x\u1eed l\u00fd x\u00e1c th\u1ef1c v\u00e0 \u0111\u1ea3m b\u1ea3o lu\u1ed3ng d\u1eef li\u1ec7u an to\u00e0n, \u0111\u00f2i h\u1ecfi kinh nghi\u1ec7m th\u1ef1c chi\u1ebfn.<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"4_Toi_uu_Chi_phi_FinOps\"><\/span><b>4. T\u1ed1i \u01b0u Chi ph\u00ed (FinOps)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">M\u1ed7i l\u1ea7n g\u1ecdi API \u0111\u1ec1u t\u1ed1n chi ph\u00ed. \u1ede quy m\u00f4 l\u1edbn, n\u1ebfu kh\u00f4ng c\u1ea9n th\u1eadn, h\u00f3a \u0111\u01a1n h\u00e0ng th\u00e1ng c\u1ee7a b\u1ea1n c\u00f3 th\u1ec3 t\u0103ng v\u1ecdt m\u1ed9t c\u00e1ch ch\u00f3ng m\u1eb7t.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e1ch th\u1ee9c: L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u1ed1i \u01b0u t\u1eebng c\u00e2u l\u1ec7nh (prompt)? Khi n\u00e0o n\u00ean s\u1eed d\u1ee5ng cache (b\u1ed9 nh\u1edb \u0111\u1ec7m) \u0111\u1ec3 tr\u00e1nh g\u1ecdi l\u1ea1i nh\u1eefng c\u00e2u h\u1ecfi gi\u1ed1ng nhau? L\u00e0m sao \u0111\u1ec3 theo d\u00f5i v\u00e0 ph\u00e2n t\u00edch chi ph\u00ed nh\u1eb1m \u0111\u01b0a ra c\u00e1c \u0111i\u1ec1u ch\u1ec9nh k\u1ecbp th\u1eddi?<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"5_Do_tre_va_Trai_nghiem_nguoi_dung_Latency_UX\"><\/span><b>5. \u0110\u1ed9 tr\u1ec5 v\u00e0 Tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng (Latency &amp; UX)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">C\u00e1c m\u00f4 h\u00ecnh AI l\u1edbn \u0111\u00f4i khi c\u1ea7n v\u00e0i gi\u00e2y \u0111\u1ec3 x\u1eed l\u00fd v\u00e0 ph\u1ea3n h\u1ed3i. Ng\u01b0\u1eddi d\u00f9ng hi\u1ec7n \u0111\u1ea1i r\u1ea5t thi\u1ebfu ki\u00ean nh\u1eabn.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Th\u00e1ch th\u1ee9c: L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 x\u1eed l\u00fd khi API ph\u1ea3n h\u1ed3i ch\u1eadm? B\u1ea1n c\u1ea7n tri\u1ec3n khai c\u00e1c k\u1ef9 thu\u1eadt nh\u01b0 streaming response (tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 theo d\u00f2ng thay v\u00ec ch\u1edd to\u00e0n b\u1ed9), hi\u1ec3n th\u1ecb c\u00e1c th\u00f4ng b\u00e1o ch\u1edd th\u00f4ng minh, hay c\u00f3 c\u01a1 ch\u1ebf d\u1ef1 ph\u00f2ng (fallback) \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng bao gi\u1edd ph\u1ea3i nh\u00ecn v\u00e0o m\u1ed9t m\u00e0n h\u00ecnh tr\u1ed1ng qu\u00e1 l\u00e2u.<\/span><\/li>\n<\/ul>\n<p><a href=\"https:\/\/gcloudvn.com\/en\/kienthuc\/gemini-api-la-gi-5-ung-dung-dot-pha-va-cach-bat-dau-cung-chuyen-gia\/attachment\/thang-72024-48-2\/\" rel=\"attachment wp-att-24056\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24056\" src=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/Thang-72024-48.png\" alt=\"\" width=\"600\" height=\"375\" srcset=\"https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/Thang-72024-48.png 600w, https:\/\/gcloudvn.com\/wp-content\/uploads\/2025\/11\/Thang-72024-48-18x12.png 18w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Gimasys_Kien_truc_su_cho_Ung_dung_AI\"><\/span><b>Gimasys: Ki\u1ebfn tr\u00fac s\u01b0 cho \u1ee8ng d\u1ee5ng AI<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u0110\u00e2y ch\u00ednh l\u00e0 l\u00fac s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa m\u1ed9t d\u1ef1 \u00e1n th\u1eed nghi\u1ec7m v\u00e0 m\u1ed9t gi\u1ea3i ph\u00e1p doanh nghi\u1ec7p chuy\u00ean nghi\u1ec7p tr\u1edf n\u00ean r\u00f5 r\u00e0ng nh\u1ea5t. V\u00e0 \u0111\u00e2y c\u0169ng l\u00e0 l\u00fac vai tr\u00f2 c\u1ee7a m\u1ed9t \u0111\u1ed1i t\u00e1c c\u00f3 kinh nghi\u1ec7m, m\u1ed9t ki\u1ebfn tr\u00fac s\u01b0 h\u1ec7 th\u1ed1ng nh\u01b0 Gimasys, ph\u00e1t huy gi\u00e1 tr\u1ecb c\u1ed1t l\u00f5i c\u1ee7a m\u00ecnh.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ch\u00fang t\u00f4i kh\u00f4ng ch\u1ec9 gi\u00fap b\u1ea1n x\u00e2y d\u1ef1ng m\u1ed9t \u1ee9ng d\u1ee5ng &#8220;ch\u1ea1y \u0111\u01b0\u1ee3c&#8221;, ch\u00fang t\u00f4i gi\u00fap b\u1ea1n x\u00e2y d\u1ef1ng m\u1ed9t t\u00e0i s\u1ea3n c\u00f4ng ngh\u1ec7 b\u1ec1n v\u1eefng, s\u1eb5n s\u00e0ng cho t\u0103ng tr\u01b0\u1edfng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u00e2y l\u00e0 c\u00e1ch <a href=\"https:\/\/gcloudvn.com\/en\/\">Gimasys<\/a> gi\u1ea3i quy\u1ebft c\u00e1c th\u00e1ch th\u1ee9c tr\u00ean:<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_Kien_truc_bao_mat_va_mo_rong_tren_Google_Cloud\"><\/span><b>1. Ki\u1ebfn tr\u00fac b\u1ea3o m\u1eadt v\u00e0 m\u1edf r\u1ed9ng tr\u00ean Google Cloud<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Thay v\u00ec m\u1ed9t backend \u0111\u01a1n gi\u1ea3n ch\u1ea1y tr\u00ean m\u1ed9t m\u00e1y ch\u1ee7 duy nh\u1ea5t, ch\u00fang t\u00f4i s\u1ebd gi\u00fap b\u1ea1n thi\u1ebft k\u1ebf v\u00e0 x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng c\u1ee7a m\u00ecnh tr\u00ean n\u1ec1n t\u1ea3ng Google Cloud, s\u1eed d\u1ee5ng c\u00e1c d\u1ecbch v\u1ee5 c\u1ea5p doanh nghi\u1ec7p nh\u01b0 Vertex AI (\u0111\u1ec3 qu\u1ea3n l\u00fd m\u00f4 h\u00ecnh AI), Cloud Run (cho c\u00e1c \u1ee9ng d\u1ee5ng serverless linh ho\u1ea1t), ho\u1eb7c Google Kubernetes Engine (GKE) (cho c\u00e1c h\u1ec7 th\u1ed1ng ph\u1ee9c t\u1ea1p). Ki\u1ebfn tr\u00fac n\u00e0y kh\u00f4ng ch\u1ec9 \u0111\u1ea3m b\u1ea3o an to\u00e0n cho API key v\u00e0 d\u1eef li\u1ec7u c\u1ee7a b\u1ea1n, m\u00e0 c\u00f2n c\u00f3 kh\u1ea3 n\u0103ng t\u1ef1 \u0111\u1ed9ng m\u1edf r\u1ed9ng \u0111\u1ec3 ph\u1ee5c v\u1ee5 h\u00e0ng tri\u1ec7u ng\u01b0\u1eddi d\u00f9ng m\u00e0 kh\u00f4ng b\u1ecb gi\u00e1n \u0111o\u1ea1n.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Chuyen_gia_Tich_hop_he_thong\"><\/span><b>2. Chuy\u00ean gia T\u00edch h\u1ee3p h\u1ec7 th\u1ed1ng<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u00e2y l\u00e0 n\u0103ng l\u1ef1c c\u1ed1t l\u00f5i l\u00e0m n\u00ean s\u1ef1 kh\u00e1c bi\u1ec7t c\u1ee7a Gimasys. Ch\u00fang t\u00f4i c\u00f3 kinh nghi\u1ec7m d\u00e0y d\u1eb7n trong vi\u1ec7c x\u00e2y d\u1ef1ng nh\u1eefng &#8220;c\u1ea7u n\u1ed1i&#8221; d\u1eef li\u1ec7u v\u1eefng ch\u1eafc, gi\u00fap Gemini API c\u00f3 th\u1ec3 t\u01b0\u01a1ng t\u00e1c m\u1ed9t c\u00e1ch an to\u00e0n v\u00e0 hi\u1ec7u qu\u1ea3 v\u1edbi c\u00e1c h\u1ec7 th\u1ed1ng n\u1ed9i b\u1ed9 c\u1ee7a b\u1ea1n. D\u00f9 \u0111\u00f3 l\u00e0 Salesforce, SAP, hay m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u &#8220;c\u00e2y nh\u00e0 l\u00e1 v\u01b0\u1eddn&#8221;, ch\u00fang t\u00f4i s\u1ebd gi\u00fap AI c\u1ee7a b\u1ea1n &#8220;\u0111\u1ecdc&#8221; v\u00e0 &#8220;hi\u1ec3u&#8221; \u0111\u01b0\u1ee3c ng\u1eef c\u1ea3nh kinh doanh, t\u1ea1o ra c\u00e1c \u1ee9ng d\u1ee5ng th\u1ef1c s\u1ef1 th\u00f4ng minh v\u00e0 h\u1eefu \u00edch.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Toi_uu_hieu_nang_va_chi_phi\"><\/span><b>3. T\u1ed1i \u01b0u hi\u1ec7u n\u0103ng v\u00e0 chi ph\u00ed<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">V\u1edbi kinh nghi\u1ec7m l\u00e0 \u0110\u1ed1i t\u00e1c Cao c\u1ea5p (Premier Partner) c\u1ee7a Google Cloud, ch\u00fang t\u00f4i kh\u00f4ng ch\u1ec9 hi\u1ec3u c\u00f4ng ngh\u1ec7, ch\u00fang t\u00f4i hi\u1ec3u c\u00e1ch v\u1eadn h\u00e0nh n\u00f3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3 nh\u1ea5t. Ch\u00fang t\u00f4i s\u1ebd t\u01b0 v\u1ea5n cho b\u1ea1n c\u00e1ch thi\u1ebft k\u1ebf h\u1ec7 th\u1ed1ng \u0111\u1ec3 t\u1ed1i \u01b0u t\u1eebng l\u1ea7n g\u1ecdi API, s\u1eed d\u1ee5ng c\u00e1c l\u1edbp cache th\u00f4ng minh, v\u00e0 li\u00ean t\u1ee5c gi\u00e1m s\u00e1t \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n v\u1eeba m\u1ea1nh m\u1ebd, v\u1eeba c\u00f3 chi ph\u00ed v\u1eadn h\u00e0nh ti\u1ebft ki\u1ec7m nh\u1ea5t.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_Giai_phap_End-to-End\"><\/span><b>4. Gi\u1ea3i ph\u00e1p End-to-End<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">H\u1ee3p t\u00e1c v\u1edbi Gimasys c\u00f3 ngh\u0129a l\u00e0 b\u1ea1n c\u00f3 m\u1ed9t \u0111\u1ed1i t\u00e1c chi\u1ebfn l\u01b0\u1ee3c \u0111\u1ed3ng h\u00e0nh tr\u00ean m\u1ecdi ch\u1eb7ng \u0111\u01b0\u1eddng. Ch\u00fang t\u00f4i cung c\u1ea5p m\u1ed9t gi\u1ea3i ph\u00e1p to\u00e0n di\u1ec7n: t\u1eeb kh\u00e2u t\u01b0 v\u1ea5n \u00fd t\u01b0\u1edfng ban \u0111\u1ea7u, thi\u1ebft k\u1ebf ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng, tr\u1ef1c ti\u1ebfp ph\u00e1t tri\u1ec3n s\u1ea3n ph\u1ea9m, tri\u1ec3n khai l\u00ean h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y, cho \u0111\u1ebfn vi\u1ec7c v\u1eadn h\u00e0nh v\u00e0 t\u1ed1i \u01b0u h\u00f3a sau n\u00e0y. \u0110i\u1ec1u n\u00e0y gi\u00fap b\u1ea1n ho\u00e0n to\u00e0n y\u00ean t\u00e2m t\u1eadp trung v\u00e0o vi\u1ec7c ph\u00e1t tri\u1ec3n kinh doanh, trong khi ch\u00fang t\u00f4i lo ph\u1ea7n k\u1ef9 thu\u1eadt ph\u1ee9c t\u1ea1p.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ket_luan\"><\/span><b>Conclusion<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">H\u00e0nh tr\u00ecnh t\u00edch h\u1ee3p Gemini API v\u00e0o \u1ee9ng d\u1ee5ng web c\u1ee7a b\u1ea1n l\u00e0 m\u1ed9t con \u0111\u01b0\u1eddng th\u00fa v\u1ecb, \u0111\u1ea7y ti\u1ec1m n\u0103ng \u0111\u1ec3 ki\u1ebfn t\u1ea1o n\u00ean nh\u1eefng tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng th\u00f4ng minh v\u00e0 v\u01b0\u1ee3t tr\u1ed9i. T\u1eeb vi\u1ec7c nhanh ch\u00f3ng d\u1ef1ng prototype v\u1edbi Google AI Studio \u0111\u1ec3 ki\u1ec3m ch\u1ee9ng \u00fd t\u01b0\u1edfng, cho \u0111\u1ebfn vi\u1ec7c x\u00e2y d\u1ef1ng m\u1ed9t gi\u1ea3i ph\u00e1p ho\u00e0n thi\u1ec7n, c\u00f3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng v\u00e0 b\u1ea3o m\u1eadt, b\u1ea1n \u0111ang \u0111\u1eb7t n\u1ec1n m\u00f3ng cho th\u1ebf h\u1ec7 \u1ee9ng d\u1ee5ng web ti\u1ebfp theo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tuy nhi\u00ean, kho\u1ea3ng c\u00e1ch gi\u1eefa m\u1ed9t b\u1ea3n prototype ho\u1ea1t \u0111\u1ed9ng v\u00e0 m\u1ed9t s\u1ea3n ph\u1ea9m web AI v\u1eefng ch\u1eafc, s\u1eb5n s\u00e0ng ph\u1ee5c v\u1ee5 h\u00e0ng ng\u00e0n ng\u01b0\u1eddi d\u00f9ng trong m\u00f4i tr\u01b0\u1eddng doanh nghi\u1ec7p l\u00e0 m\u1ed9t kho\u1ea3ng c\u00e1ch \u0111\u00e1ng k\u1ec3. N\u00f3 \u0111\u00f2i h\u1ecfi chuy\u00ean m\u00f4n s\u00e2u v\u1ec1 ki\u1ebfn tr\u00fac h\u1ec7 th\u1ed1ng, t\u00edch h\u1ee3p d\u1eef li\u1ec7u, t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u n\u0103ng, v\u00e0 \u0111\u1eb7c bi\u1ec7t l\u00e0 kinh nghi\u1ec7m tri\u1ec3n khai \u1edf quy m\u00f4 l\u1edbn.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Contact <a href=\"https:\/\/gcloudvn.com\/en\/dang-ky-dung-thu\/\">Gimasys \u2013 \u0110\u1ed1i t\u00e1c Cao c\u1ea5p c\u1ee7a Google Cloud<\/a> ngay h\u00f4m nay. Ch\u00fang t\u00f4i kh\u00f4ng ch\u1ec9 h\u01b0\u1edbng d\u1eabn b\u1ea1n c\u00e1ch &#8220;g\u1ecdi&#8221; Gemini API, ch\u00fang t\u00f4i \u0111\u1ed3ng h\u00e0nh c\u00f9ng b\u1ea1n t\u1eeb kh\u00e2u t\u01b0 v\u1ea5n chi\u1ebfn l\u01b0\u1ee3c, x\u00e2y d\u1ef1ng h\u1ea1 t\u1ea7ng tr\u00ean Google Cloud, cho \u0111\u1ebfn tri\u1ec3n khai v\u00e0 t\u1ed1i \u01b0u h\u00f3a gi\u1ea3i ph\u00e1p, \u0111\u1ea3m b\u1ea3o \u1ee9ng d\u1ee5ng web c\u1ee7a b\u1ea1n kh\u00f4ng ch\u1ec9 th\u00f4ng minh m\u00e0 c\u00f2n \u0111\u00e1ng tin c\u1eady v\u00e0 t\u1ea1o ra gi\u00e1 tr\u1ecb b\u1ec1n v\u1eefng.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>B\u1ea1n \u0111\u00e3 kinh ng\u1ea1c tr\u01b0\u1edbc kh\u1ea3 n\u0103ng c\u1ee7a c\u00e1c m\u00f4 h\u00ecnh AI th\u1ebf h\u1ec7 m\u1edbi: vi\u1ebft code, ph\u00e2n t\u00edch h\u00ecnh \u1ea3nh, t\u00f3m t\u1eaft nh\u1eefng v\u0103n b\u1ea3n d\u00e0i. V\u00e0 c\u00e2u h\u1ecfi th\u00f4i th\u00fac nh\u1ea5t trong t\u00e2m tr\u00ed c\u1ee7a m\u1ecdi nh\u00e0 ph\u00e1t&hellip;<\/p>","protected":false},"author":2,"featured_media":24056,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1,135],"tags":[],"class_list":["post-24072","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kienthuc","category-google-cloud-platform","entry","has-media"],"_links":{"self":[{"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/posts\/24072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/comments?post=24072"}],"version-history":[{"count":0,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/posts\/24072\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/media\/24056"}],"wp:attachment":[{"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/media?parent=24072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/categories?post=24072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gcloudvn.com\/en\/wp-json\/wp\/v2\/tags?post=24072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}