Tác giả: [Salman Ahmed], [Ankush Goyal], [Sergio Barraza], và [Ravi Kumar]
Ngày phát hành: 11 FEB 2025
Chuyên mục: Amazon Bedrock, Amazon Bedrock Agents, Amazon Cognito, AWS Amplify, AWS Lambda, Generative AI, Intermediate (200)
Việc tích hợp các khả năng của generative AI đang thúc đẩy những thay đổi mang tính chuyển đổi trong 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, 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 và giảm thiểu các quy trình thủ công. Giải pháp này trình bày cách tạo ra một nhà khí tượng học ảo được hỗ trợ bởi AI, có khả năng trả lời các câu hỏi 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 nhiều 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 một API cung cấp thông tin thời tiết theo 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 tối ưu hóa 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à bổ sung cho 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 phù hợp với yêu cầu của mình, cho phép bạn kiểm soát mỗi khi Agent khởi tạo 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, tạo ra sự kết hợp hài hòa giữa chức năng và tính linh hoạt. Ngoài ra, Agent còn có khả năng ghi nhớ thông tin qua các lần tương tác, cho phép mang lại trải nghiệm người dùng cá nhân hóa hơn.
Trong bài viết này, chúng tôi trình bày một phương pháp tinh gọn để triển khai một Agent được hỗ trợ bởi AI bằng cách kết hợp Amazon Bedrock Agents và một foundation model (FM). Chúng tôi sẽ hướng dẫn bạn qua quy trình cấu hình Agent và triển khai logic cụ thể cần thiết để nhà khí tượng học ảo cung cấp các câu trả lời chính xác liên quan đến thời tiết. Thêm vào đó, chúng tôi sử dụng nhiều dịch vụ AWS khác nhau, bao gồm AWS Amplify để lưu trữ Frontend, các hàm AWS Lambda để 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 một 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 này 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 Frontend của chúng tôi. Amazon Bedrock Agents chuyển tiếp thông tin chi tiết từ truy vấn của người dùng đến các Action Group, sau đó các Action Group này sẽ gọi các hàm Lambda tùy chỉnh. Mỗi Action Group và hàm Lambda 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í đã 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 phải có những điều sau đây để 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 mô hình Claude 3.5 Sonnet của Anthropic trong cùng một 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ừ kho lưu trữ GitHub aws-samples.
Triển khai tài nguyên giải pháp bằ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ẽ có chi phí phát sinh 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 –
<Tên Stack>-geo-coordinates-<tự động tạo> - Function –
<Tên Stack>-weather-<tự động tạo> - Function –
<Tên Stack>-date-time-<tự động tạo>
- 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 bảng điều khiển CloudFormation để 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 ứng dụng Amplify theo cách thủ công bằng mã nguồn Frontend có trên GitHub. Hoàn thành các bước sau:
- Tải xuống mã nguồn Frontend AWS-Amplify-Frontend.zip từ GitHub.
- Sử dụng tệp .zip để triển khai ứng dụng theo cách thủ công trong Amplify.
- Quay lại trang Amplify và sử dụng tên miền đượ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ận dạng 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 trong khi họ tương tác với API của Amazon Bedrock.
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ự trị 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 của tổ chức và đầ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à các cuộc trò chuyện của người dùng.
Sử dụng Action Group để xác định các hành động mà Amazon Bedrock Agents thực hiện
Một Action Group xác định một tập hợp các hành động liên quan mà một Agent của Amazon Bedrock 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 một hàm Lambda để xử lý logic nghiệp vụ tùy chỉnh, hoặc trả về 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 Group để cung cấp cho Agent của Amazon Bedrock các chức năng thiết yếu sau: lấy tọa độ cho các vị trí cụ thể, lấy thông tin ngày giờ hiện tại, và tìm nạp dữ liệu thời tiết cho các vị trí đã cho. Các Action Group 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 cho các truy vấn của người dùng liên quan đến dịch vụ dựa trên vị trí và điều kiện thời tiết.
Sử dụng Lambda cho Action Group của Amazon Bedrock
Là một phần của giải pháp này, ba hàm Lambda được triển khai để hỗ trợ các Action Group được xác định cho Agent của Amazon Bedrock:
- Hàm Lambda tọa độ vị trí – Hàm này được kích hoạt bởi Action Group
obtain-latitude-longitude-from-place-name. Nó nhận đầu vào là tên một địa điểm và trả về tọa độ vĩ độ và kinh độ tương ứng. Hàm này sử dụng một dịch vụ hoặc cơ sở dữ liệu mã hóa địa lý (geocoding) để thực hiện việc tra cứu này. - Hàm Lambda ngày và giờ – Được gọi bởi Action Group
get-current-date-time-from-timezone, hàm này cung cấp thông tin ngày và giờ hiện tại. - Hàm Lambda thông tin thời tiết – Hàm này được gọi bởi Action Group
obtain-weather-information-with-coordinates. Nó chấp nhận tọa độ địa lý từ hàm Lambda đầu tiên và trả về điều kiện thời tiết hiện tại và dự báo cho khu vực được chỉ định. Hàm Lambda này đã sử dụng một API thời tiết để tìm nạp dữ liệu khí tượng cập nhật.
Mỗi hàm Lambda này nhận một sự kiện đầu vào chứa siêu dữ liệu liên quan và các trường được điền từ hoạt động API hoặc các tham số hàm của Agent Amazon Bedrock. Các hàm này 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ề một phản hồi với thông tin cần thiết. Phản hồi này sau đó được Agent của Amazon Bedrock 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 hàm Lambda này, Agent của Amazon Bedrock 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 Frontend
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ó khả năng 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 mã nguồn Frontend theo cách thủ công bằng phương pháp đã nêu ở phần trước của bài viết này.
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 của ứng dụng, bạn sẽ được yêu cầu cung cấp thông tin liên quan đến Amazon Cognito và Amazon Bedrock Agents. Thông tin này là cần thiết để xác thực người dùng một cách an toàn và cho phép Frontend tương tác với Agent của Amazon Bedrock. Nó cho phép ứng dụng quản lý phiên người dùng và thực hiện các cuộc 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 bằng các giá trị bạn đã thu thập từ phần output của Stack CloudFormation. Bạn sẽ được yêu cầu nhập các trường sau, như được hiển thị trong ảnh chụp màn hình sau:
- 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. Trong lần đăng nhập đầu tiên, bạn sẽ được yêu cầu đặt lại mật khẩu, như được 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ụ: “Hôm nay ở Dallas, TX có thể tổ chức tiệc nướng ngoài trời 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 bạn có thể tổ chức tiệc nướng ở Dallas, TX hay không. Video sau đây cho thấy 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 nhà khí tượng học ảo của bạn:
- “Thời tiết hôm nay ở Thành phố New York như thế nào?”
- “Tôi có nên lên kế hoạch tổ chức một bữa tiệc sinh nhật ngoài trời ở Miami vào cuối tuần tới không?”
- “Liệu có tuyết rơi ở Denver vào ngày Giáng sinh không?”
- “Hôm nay tôi có thể đi bơi ở bãi biển 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 các đ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
Nếu bạn quyết định ngừng sử dụng nhà khí tượng học ả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à việc triển khai Amplify:
- Xóa Stack CloudFormation:
a. Trên bảng điều khiển AWS CloudFormation, chọn Stacks trong ngăn điều hướng.
b. Tìm Stack bạn đã tạo trong quá trình triển khai (bạn đã đặt tên cho nó).
c. 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 Dọn dẹp tài nguyên.
Kết luận
Giải pháp này cho thấy 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 đối thoại. Bằng cách sử dụng AI và 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 những thông tin 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:
- Kho lưu trữ GitHub: Amazon Bedrock Workshop
- Hướng dẫn sử dụng Amazon Bedrock
- Workshop: Sử dụng generative AI trên AWS cho các loại nội dung đa dạng
Để tìm hiểu thêm về mô hình Claude 3.5 Sonnet của Anthropic, hãy tham khảo các tài nguyên sau:
Về các tác giả

Salman Ahmed là một Quản lý Kỹ thuật Cấp cao (Senior Technical Account Manager) tại AWS Enterprise Support. Anh 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ợ hạ tầng đám mây. Với niềm đam mê các dịch vụ mạng và nhiều năm kinh nghiệm, anh giúp khách hàng áp dụng các dịch vụ mạng khác nhau của AWS. 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à một Trưởng nhóm Hỗ trợ Doanh nghiệp Cấp cao (Senior Enterprise Support Lead) tại AWS, giúp đỡ khách hàng trong ngành 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, anh hướng dẫn khách hàng trong ngành năng lượng áp dụng các dịch vụ AWS. Ngoài công việc, Sergio là một nhạc sĩ đa nhạc cụ, chơi guitar, piano và trống, và anh cũng luyện tập Vịnh Xuân Quyền (Wing Chun Kung Fu).

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

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