Tác giả: Salman Ahmed, Ankush Goyal, Sergio Barraza, và Ravi Kumar
Ngày phát hành: 11 Tháng 2, 2025
Chuyên mục: Amazon Bedrock, Amazon Bedrock Agents, Amazon Cognito, AWS Amplify, AWS Lambda, Generative AI, Intermediate (200)
Sự tích hợp các khả năng generative AI đang thúc đẩy những thay đổi mang tính chuyển đổi trên nhiều ngành công nghiệp. Mặc dù thông tin thời tiết có thể truy cập qua nhiều kênh, nhưng các doanh nghiệp phụ thuộc nhiều vào dữ liệu khí tượng đòi hỏi các giải pháp mạnh mẽ và có khả năng mở rộng để quản lý và sử dụng hiệu quả những thông tin quan trọng này, đồng thời giảm thiểu các quy trình thủ công. Giải pháp này minh họa cách tạo ra một chuyên gia khí tượng ảo (virtual meteorologist) được hỗ trợ bởi AI, có khả năng trả lời các truy vấn phức tạp liên quan đến thời tiết bằng ngôn ngữ tự nhiên. Chúng tôi sử dụng các dịch vụ AWS khác nhau để triển khai một giải pháp hoàn chỉnh mà bạn có thể dùng để tương tác với API cung cấp thông tin thời tiết thời gian thực. Trong giải pháp này, chúng tôi sử dụng Amazon Bedrock Agents.
Amazon Bedrock Agents giúp tinh giản quy trình làm việc và tự động hóa các tác vụ lặp đi lặp lại. Amazon Bedrock Agents có thể kết nối an toàn với các nguồn dữ liệu của công ty bạn và tăng cường yêu cầu của người dùng bằng các phản hồi chính xác. Bạn có thể sử dụng Amazon Bedrock Agents để thiết kế một action schema (lược đồ hành động) phù hợp với yêu cầu của mình, cho phép bạn kiểm soát bất cứ khi nào agent bắt đầu hành động được chỉ định. Cách tiếp cận linh hoạt này trang bị cho bạn khả năng tích hợp và thực thi logic nghiệp vụ một cách liền mạch trong dịch vụ backend ưa thích của mình, thúc đẩy sự kết hợp gắn kết giữa chức năng và sự linh hoạt. Ngoài ra còn có khả năng lưu giữ bộ nhớ (memory retention) xuyên suốt quá trình tương tác, cho phép trải nghiệm người dùng được cá nhân hóa hơn.
Trong bài viết này, chúng tôi trình bày một cách tiếp cận hợp lý để triển khai một agent hỗ trợ AI bằng cách kết hợp Amazon Bedrock Agents và một foundation model (FM). Chúng tôi hướng dẫn bạn quy trình cấu hình agent và triển khai logic cụ thể cần thiết cho chuyên gia khí tượng ảo để cung cấp các phản hồi chính xác liên quan đến thời tiết. Ngoài ra, chúng tôi sử dụng nhiều dịch vụ AWS khác nhau, bao gồm AWS Amplify để lưu trữ front end, AWS Lambda functions để xử lý logic yêu cầu, Amazon Cognito để xác thực người dùng, và AWS Identity and Access Management (IAM) để kiểm soát quyền truy cập vào agent.
Tổng quan giải pháp
Sơ đồ dưới đây cung cấp cái nhìn tổng quan và làm nổi bật các thành phần chính. Kiến trúc sử dụng Amazon Cognito để xác thực người dùng và Amplify làm môi trường lưu trữ cho ứng dụng front-end của chúng tôi. Amazon Bedrock Agents chuyển tiếp chi tiết từ truy vấn của người dùng đến các action groups, từ đó gọi các Lambda functions tùy chỉnh. Mỗi action group và Lambda function xử lý một tác vụ cụ thể:
- geo-coordinates – Xử lý tọa độ địa lý (geo-coordinates) để lấy thông tin chi tiết về một vị trí cụ thể.
- weather – Thu thập thông tin thời tiết cho vị trí được cung cấp.
- date-time – Lấy ngày và giờ hiện tại.

Điều kiện tiên quyết
Bạn cần chuẩn bị những điều sau để hoàn thành giải pháp trong bài viết này:
- Một tài khoản AWS.
- Quyền truy cập FM trong Amazon Bedrock cho model Anthropic’s Claude 3.5 Sonnet tại cùng AWS Region nơi bạn sẽ triển khai giải pháp này.
- Mẫu AWS CloudFormation đi kèm được tải xuống từ aws-samples GitHub repo.
Triển khai tài nguyên giải pháp sử dụng AWS CloudFormation
Khi bạn chạy mẫu AWS CloudFormation, các tài nguyên sau sẽ được triển khai (lưu ý rằng sẽ phát sinh chi phí cho các tài nguyên AWS được sử dụng):
- Tài nguyên Amazon Cognito:
- User pool –
CognitoUserPoolforVirtualMeteorologistApp - App client –
VirtualMeteorologistApp - Identity pools –
cognito-identity-pool-vm
- User pool –
- Tài nguyên Lambda:
- Function –
<Stack name>-geo-coordinates-<auto-generated> - Function –
<Stack name>-weather-<auto-generated> - Function –
<Stack name>-date-time-<auto-generated>
- Function –
- Amazon Bedrock Agents: virtual-meteorologist
- Action groups (1) –
obtain-latitude-longitude-from-place-name - Action groups (2) –
obtain-weather-information-with-coordinates - Action groups (3) –
get-current-date-time-from-timezone
- Action groups (1) –
Sau khi bạn triển khai mẫu CloudFormation, hãy sao chép các thông tin sau từ tab Outputs trên CloudFormation console để sử dụng trong quá trình cấu hình ứng dụng của bạn sau khi nó được triển khai trong AWS Amplify.
AWSRegionBedrockAgentAliasIdBedrockAgentIdBedrockAgentNameIdentityPoolIdUserPoolClientIdUserPoolId

Triển khai ứng dụng AWS Amplify
Bạn cần triển khai thủ công ứng dụng Amplify bằng cách sử dụng mã nguồn front-end tìm thấy trên GitHub. Hoàn thành các bước sau:
- Tải xuống mã nguồn front-end
AWS-Amplify-Frontend.ziptừ GitHub. - Sử dụng tệp .zip để triển khai thủ công ứng dụng trong Amplify.
- Quay lại trang Amplify và sử dụng tên miền (domain) được tạo tự động để truy cập ứng dụng.
Sử dụng Amazon Cognito để xác thực người dùng
Amazon Cognito là một dịch vụ định danh mà bạn có thể sử dụng để xác thực và ủy quyền cho người dùng. Chúng tôi sử dụng Amazon Cognito trong giải pháp của mình để xác minh người dùng trước khi họ có thể sử dụng ứng dụng. Chúng tôi cũng sử dụng identity pool để cung cấp thông tin xác thực AWS tạm thời cho người dùng khi họ tương tác với Amazon Bedrock API.
Sử dụng Amazon Bedrock Agents để tự động hóa các tác vụ ứng dụng
Với Amazon Bedrock Agents, bạn có thể xây dựng và cấu hình các agent tự chủ trong ứng dụng của mình. Một agent giúp người dùng cuối hoàn thành các hành động dựa trên dữ liệu tổ chức và thông tin đầu vào của người dùng. Các Agent điều phối các tương tác giữa các FM, nguồn dữ liệu, ứng dụng phần mềm và cuộc trò chuyện của người dùng.
Sử dụng action group để định nghĩa các hành động mà Amazon Bedrock agents thực hiện
Một action group định nghĩa một tập hợp các hành động liên quan mà một Amazon Bedrock agent có thể thực hiện để hỗ trợ người dùng. Khi cấu hình một action group, bạn có các tùy chọn để xử lý thông tin do người dùng cung cấp, bao gồm thêm đầu vào của người dùng vào action group của agent, chuyển dữ liệu đến Lambda function cho logic nghiệp vụ tùy chỉnh, hoặc trả lại quyền kiểm soát trực tiếp thông qua phản hồi InvokeAgent. Trong ứng dụng của chúng tôi, chúng tôi đã tạo ba action groups để cung cấp cho Amazon Bedrock agent các chức năng thiết yếu sau: truy xuất tọa độ cho các vị trí cụ thể, lấy thông tin ngày và giờ hiện tại, và lấy dữ liệu thời tiết cho các vị trí nhất định. Các action groups này cho phép agent truy cập và xử lý thông tin quan trọng, nâng cao khả năng phản hồi chính xác và toàn diện đối với các truy vấn của người dùng liên quan đến các dịch vụ dựa trên vị trí và điều kiện thời tiết.
Sử dụng Lambda cho Amazon Bedrock action group
Là một phần của giải pháp này, ba Lambda functions được triển khai để hỗ trợ các action groups đã được định nghĩa cho Amazon Bedrock agent của chúng tôi:
- Location coordinates Lambda function – Function này được kích hoạt bởi action group
obtain-latitude-longitude-from-place-name. Nó nhận tên địa điểm làm đầu vào và trả về tọa độ vĩ độ và kinh độ tương ứng. Function sử dụng dịch vụ geocoding hoặc cơ sở dữ liệu để thực hiện việc tra cứu này. - Date and time Lambda function – Được gọi bởi action group
get-current-date-time-from-timezone, function này cung cấp thông tin ngày và giờ hiện tại. - Weather information Lambda function – Function này được gọi bởi action group
obtain-weather-information-with-coordinates. Nó chấp nhận tọa độ địa lý từ Lambda function đầu tiên và trả về các điều kiện thời tiết hiện tại cùng dự báo cho khu vực được chỉ định. Lambda function này sử dụng API thời tiết để lấy dữ liệu khí tượng cập nhật.
Mỗi Lambda function này nhận một sự kiện đầu vào chứa metadata liên quan và các trường được điền từ thao tác API của Amazon Bedrock agent hoặc các tham số function. Các function xử lý đầu vào này, thực hiện các tác vụ cụ thể của chúng và trả về phản hồi với thông tin cần thiết. Phản hồi này sau đó được Amazon Bedrock agent sử dụng để xây dựng câu trả lời cho truy vấn của người dùng. Bằng cách sử dụng các Lambda functions này, Amazon Bedrock agent của chúng tôi có khả năng truy cập các nguồn dữ liệu bên ngoài và thực hiện các tính toán phức tạp, nâng cao đáng kể khả năng xử lý các yêu cầu của người dùng liên quan đến thông tin vị trí, thời gian và thời tiết.
Sử dụng AWS Amplify cho mã nguồn front-end
Amplify cung cấp một môi trường phát triển để xây dựng các ứng dụng web và di động an toàn, có thể mở rộng. Các nhà phát triển có thể tập trung vào mã nguồn của họ thay vì lo lắng về cơ sở hạ tầng bên dưới. Amplify cũng tích hợp với nhiều nhà cung cấp Git. Đối với giải pháp này, chúng tôi tải lên thủ công mã nguồn front-end bằng phương pháp đã nêu ở phần trước của bài viết.
Hướng dẫn sử dụng ứng dụng
Điều hướng đến URL được cung cấp sau khi bạn tạo ứng dụng trong Amplify. Khi truy cập URL ứng dụng, bạn sẽ được nhắc cung cấp thông tin liên quan đến Amazon Cognito và Amazon Bedrock Agents. Thông tin này là bắt buộc để xác thực người dùng một cách an toàn và cho phép front end tương tác với Amazon Bedrock agent. Nó cho phép ứng dụng quản lý các phiên người dùng và thực hiện các lệnh gọi API được ủy quyền đến các dịch vụ AWS thay mặt cho người dùng.
Bạn có thể nhập thông tin với các giá trị bạn đã thu thập từ outputs của CloudFormation stack. Bạn sẽ được yêu cầu nhập các trường sau, như hiển thị trong ảnh chụp màn hình bên dưới:
- User Pool ID
- User Pool ClientID
- Identity Pool ID
- Region
- Agent Name
- Agent ID
- Agent Alias ID
- Region

Bạn cần đăng nhập bằng tên người dùng và mật khẩu của mình. Một mật khẩu tạm thời đã được tạo tự động trong quá trình triển khai và gửi đến địa chỉ email bạn đã cung cấp khi khởi chạy mẫu CloudFormation. Ở lần đăng nhập đầu tiên, bạn sẽ được yêu cầu đặt lại mật khẩu, như hiển thị trong video sau.

Bây giờ bạn có thể bắt đầu đặt câu hỏi trong ứng dụng, ví dụ: “Can we do barbecue today in Dallas, TX?” (Hôm nay chúng tôi có thể nướng thịt ngoài trời ở Dallas, TX không?). Trong vài giây, ứng dụng sẽ cung cấp cho bạn kết quả chi tiết đề cập đến việc liệu bạn có thể nướng thịt ở Dallas, TX hay không. Video sau đây hiển thị cuộc trò chuyện này.

Các trường hợp sử dụng ví dụ
Dưới đây là một vài truy vấn mẫu để minh họa khả năng của chuyên gia khí tượng ảo của bạn:
- “What’s the weather like in New York City today?” (Thời tiết ở Thành phố New York hôm nay thế nào?)
- “Should I plan an outdoor birthday party in Miami next weekend?” (Tôi có nên lên kế hoạch cho một bữa tiệc sinh nhật ngoài trời ở Miami vào cuối tuần tới không?)
- “Will it snow in Denver on Christmas Day?” (Liệu trời có tuyết ở Denver vào Giáng sinh không?)
- “Can I go swimming on a beach in Chicago today?” (Hôm nay tôi có thể đi bơi ở bãi biển tại Chicago không?)
Những truy vấn này thể hiện khả năng của agent trong việc cung cấp thông tin thời tiết hiện tại, đưa ra lời khuyên dựa trên dự báo thời tiết và dự đoán điều kiện thời tiết trong tương lai. Bạn thậm chí có thể hỏi một câu hỏi liên quan đến một hoạt động như bơi lội, và nó sẽ trả lời dựa trên điều kiện thời tiết xem hoạt động đó có phù hợp để thực hiện hay không.
Dọn dẹp tài nguyên
Nếu bạn quyết định ngừng sử dụng chuyên gia khí tượng ảo, bạn có thể làm theo các bước sau để xóa nó, các tài nguyên liên quan được triển khai bằng AWS CloudFormation và bản triển khai Amplify:
- Xóa CloudFormation stack:
- Trên AWS CloudFormation console, chọn Stacks trong ngăn điều hướng.
- Tìm stack bạn đã tạo trong quá trình triển khai (bạn đã đặt tên cho nó).
- Chọn stack và chọn Delete.
- Xóa ứng dụng Amplify và các tài nguyên của nó. Để biết hướng dẫn, hãy tham khảo Clean Up Resources.
Kết luận
Giải pháp này minh họa sức mạnh của việc kết hợp Amazon Bedrock Agents với các dịch vụ AWS khác để tạo ra một trợ lý thời tiết thông minh, có khả năng đàm thoại. Bằng cách sử dụng AI và các công nghệ đám mây, các doanh nghiệp có thể tự động hóa các truy vấn phức tạp và cung cấp thông tin chi tiết có giá trị cho người dùng của họ.
Tài nguyên bổ sung
Để tìm hiểu thêm về Amazon Bedrock, hãy tham khảo các tài nguyên sau:
- GitHub repo: Amazon Bedrock Workshop
- Amazon Bedrock User Guide
- Workshop: Using generative AI on AWS for diverse content types
Để tìm hiểu thêm về mô hình Anthropic’s Claude 3.5 Sonnet, hãy tham khảo tài nguyên sau:
Về các tác giả

Salman Ahmed là Giám đốc Tài khoản Kỹ thuật Cấp cao (Senior Technical Account Manager) tại AWS Enterprise Support. Ông thích giúp đỡ khách hàng trong ngành du lịch và khách sạn thiết kế, triển khai và hỗ trợ cơ sở hạ tầng đám mây. Với niềm đam mê về các dịch vụ mạng và nhiều năm kinh nghiệm, ông giúp khách hàng áp dụng các dịch vụ mạng AWS khác nhau. Ngoài công việc, Salman thích nhiếp ảnh, du lịch và xem các đội thể thao yêu thích của mình thi đấu.

Sergio Barraza là Trưởng nhóm Hỗ trợ Doanh nghiệp Cấp cao (Senior Enterprise Support Lead) tại AWS, giúp các khách hàng năng lượng thiết kế và tối ưu hóa các giải pháp đám mây. Với niềm đam mê phát triển phần mềm, ông hướng dẫn các khách hàng năng lượng thông qua việc áp dụng dịch vụ AWS. Ngoài công việc, Sergio là một nhạc sĩ chơi đa nhạc cụ gồm guitar, piano và trống, và ông cũng luyện tập Vịnh Xuân Quyền.

Ravi Kumar là Giám đốc Tài khoản Kỹ thuật Cấp cao tại AWS Enterprise Support, người giúp khách hàng trong ngành du lịch và khách sạn hợp lý hóa hoạt động đám mây của họ trên AWS. Ông là một chuyên gia CNTT hướng tới kết quả với hơn 20 năm kinh nghiệm. Trong thời gian rảnh rỗi, Ravi thích các hoạt động sáng tạo như vẽ tranh. Ông cũng thích chơi cricket và đi du lịch đến những địa điểm mới.

Ankush Goyal là Trưởng nhóm Hỗ trợ Doanh nghiệp tại AWS Enterprise Support, người giúp khách hàng hợp lý hóa hoạt động đám mây của họ trên AWS. Ông là một chuyên gia CNTT hướng tới kết quả với hơn 20 năm kinh nghiệm.