- Amazon Bedrock cung cấp một dịch vụ được quản lý toàn diện để triển khai và mở rộng các tác nhân AI sử dụng các mô hình nền tảng mạnh mẽ như Claude, đảm bảo bảo mật cấp độ doanh nghiệp và các guardrail.
- AWS định nghĩa tác nhân AI là một hệ thống tự chủ có khả năng lý luận, lập kế hoạch và thực hiện nhiều bước để đạt được các mục tiêu phức tạp, cho phép nó tự động chia nhỏ và giải quyết các tác vụ cấp cao.
- Strands Agent SDK là một dự án mã nguồn mở mới giúp đơn giản hóa việc xây dựng ứng dụng tác nhân bằng cách chỉ yêu cầu một mô hình, các công cụ và một câu lệnh hệ thống, tận dụng sức mạnh của LLM để giảm thiểu mã boilerplate.
Building AI agents with Claude in Amazon Bedrock | Code w/ Claude
- Sử dụng Amazon Bedrock làm dịch vụ được quản lý toàn diện để truy cập các mô hình nền tảng (ví dụ: Claude) và xây dựng, mở rộng quy mô ứng dụng AI với bảo mật cấp doanh nghiệp.
- Hiểu rõ định nghĩa tác nhân AI của AWS: một hệ thống tự chủ có khả năng lý luận, lập kế hoạch và thực hiện nhiều bước để hoàn thành một mục tiêu, cho phép giải quyết các tác vụ phức tạp.
- Tận dụng Strands Agent SDK mã nguồn mở để phát triển tác nhân AI, chỉ cần định nghĩa mô hình, các công cụ và câu lệnh hệ thống, giảm đáng kể lượng mã cần thiết.
- Sử dụng các công cụ tích hợp sẵn của Strands (ví dụ:
HTTP request tool) và dễ dàng tạo các công cụ tùy chỉnh bằng cách áp dụngdecorator toolđơn giản cho các hàm Python. - Cho phép mô hình AI trong Strands tự động quyết định cách truyền dữ liệu và sử dụng công cụ dựa trên câu lệnh hệ thống, thay vì phải lập trình từng bước thủ công.
- Thiết lập môi trường làm việc bằng cách cài đặt
Strands-agentsvàStrands-agent-toolsquapip, và kích hoạt truy cập mô hình trong bảng điều khiển Amazon Bedrock. - Tích hợp các mô hình Claude từ Bedrock bằng cách đặt biến môi trường
CLAUDE_CODE_BEDROCK, cho phép sử dụng các mô hình này mà không cần khóa API riêng. - Khám phá việc tích hợp với các
MCP server(ví dụ:MCP Diagcho sơ đồ kiến trúc,MCP documentationcho tra cứu) để mở rộng khả năng của tác nhân vào các lĩnh vực chuyên biệt.
AI agent— tác nhân AIAmazon Bedrock— Amazon BedrockFully managed service— Dịch vụ được quản lý toàn diệnFoundation model (FM)— Mô hình nền tảng (FM)Autonomous system— Hệ thống tự chủStrands Agent SDK— Strands Agent SDKOpen source— Mã nguồn mởTool— Công cụSystem prompt— Câu lệnh hệ thốngTool decorator— Decorator công cụ
Giới thiệu về Xây dựng Tác nhân AI với Claude trên Amazon Bedrock
Chào mừng quý vị đến với buổi giới thiệu về cách xây dựng các tác nhân AI với Claude trên Amazon Bedrock. Hôm nay, tôi rất vui mừng được cùng quý vị khám phá cách tạo ra các hệ thống AI tự chủ, thông minh có khả năng biến đổi các ứng dụng của bạn. Tôi là Duane Lifefoot, một Developer Advocate tại AWS. Tôi là Ben Javier-Biammy, một Solutions Architect tại AWS. Xin chào mọi người, tôi là Suman Devnath, một Developer Advocate tại AWS.
Đây sẽ là một sự kiện thực hành trực tiếp (hands-on keyboard event). Chúng tôi có một workshop trực tiếp nơi bạn có thể đăng nhập vào một môi trường và bắt đầu với một số mã. Chúng tôi sẽ lướt qua một vài slide để cung cấp thông tin nền tảng và giúp mọi người hiểu rõ, sau đó chúng ta sẽ đi vào workshop. Đây là mã với Claude.
Tổng quan về Amazon Bedrock
Một trong những điều tôi muốn nói đến là Anthropic hoặc AWS. Để làm được điều đó, chúng tôi có Amazon Bedrock, một dịch vụ được quản lý toàn diện (fully managed service) cung cấp cho bạn quyền truy cập vào các mô hình nền tảng mạnh mẽ như các mô hình thuộc dòng Claude, thông qua một API hợp nhất. Điều này cung cấp cho bạn mọi thứ cần thiết để không chỉ xây dựng mà còn mở rộng quy mô các ứng dụng AI của bạn trên toàn cầu. Nó thực hiện điều này bằng cách cung cấp cho bạn mọi thứ cần thiết: lựa chọn mô hình, guardrails, cũng như bảo mật cấp độ doanh nghiệp (enterprise grade) theo mặc định.
Định nghĩa Tác nhân AI
Chúng ta đang nói về các tác nhân AI. Đó là điều mọi người ở đây muốn tìm hiểu. Nhưng chúng ta cần thống nhất về ý nghĩa thực sự của nó. Tại AWS, chúng tôi giải thích như sau: Một tác nhân AI là một hệ thống AI tự chủ (autonomous system) có thể lý luận (reason), lập kế hoạch (plan) và thực hiện nhiều bước (take multiple steps) để hoàn thành một mục tiêu (objective), giống như con người.
Vì vậy, nếu bạn giao một tác vụ cho một tác nhân AI, tác nhân AI đó có thể tiếp nhận tác vụ và nói: "Đây là mục tiêu cấp cao (high-level objective). Hãy để tôi tạo một kế hoạch gồm các bước cần thực hiện." Sau đó, nó có thể thực hiện các hành động (actions) theo các bước đó. Và một khi các bước đó đã được thực hiện, các hành động đã được thực hiện trên các bước đó, thì nó có thể đánh giá kết quả và lý luận về những gì cần xảy ra tiếp theo cho đến khi đạt được mục tiêu đó. Đây là một hệ thống agentic mà chúng ta sẽ thảo luận hôm nay.
Giới thiệu Strands Agent SDK mã nguồn mở
Tại AWS, chúng tôi cũng đã làm một điều tuyệt vời mà Suman sẽ nói đến ngay bây giờ. Cảm ơn bạn rất nhiều, Duan. Vậy, tiến thêm một bước nữa, những gì chúng tôi đã làm, thực tế là vào tuần trước, thứ Sáu tuần trước, chúng tôi đã công bố một SDK mã nguồn mở (open source SDK) để xây dựng các ứng dụng agentic gọi là Strands Agent.
Strands Agent này là gì? Đó là một SDK rất đơn giản, chỉ cần ba thứ: mô hình, công cụ (tools) và câu lệnh (prompt). Không thể đơn giản hơn thế. Nó không có bất kỳ scaffolding nào mà bạn không phải guardrail câu lệnh của mình, bối cảnh, mục tiêu, v.v. Điều chúng tôi tin tưởng là trong thế giới ngày nay, các LLM khá mạnh. Và chúng tôi muốn tận dụng tối đa sức mạnh của mô hình ở phần backend. Vì vậy, chúng tôi đang cung cấp sự linh hoạt tốt hơn cho mô hình để lý luận thay mặt chúng ta.
Và đó là lý do tại sao nếu bạn nhìn vào kiến trúc này, nó rất đơn giản. Bạn tạo một câu lệnh hoặc đây là câu hỏi của bạn. Bạn gửi nó đến tác nhân AI, đó là Strands Agent. Và khi bạn tạo một đối tượng agent, bạn sẽ định nghĩa mô hình và các công cụ mà chúng tôi cung cấp cho bạn. Bạn sẽ thấy trong workshop, khi Benjo thực hiện một vài bản demo, bạn sẽ thấy rằng mô hình mặc định mà chúng tôi sử dụng là Claude 3.7 tính đến thời điểm hiện tại. Và ngay khi bạn đã cài đặt và cấu hình Strands, bạn sẽ nhận được một loạt các công cụ được tích hợp sẵn. Vì vậy, bạn không phải viết mã nặng nề (heavy lifting code) để tạo các nhu cầu cơ bản của mình.
Và điều tuyệt vời nhất là không chỉ để kiểm thử và triển khai (testing and deployment) trong môi trường kiểm thử của bạn, bạn thực sự có thể triển khai trên Claude. Vì vậy, giả sử bạn có lực lượng lao động của mình trong EC2 hoặc Lambda hoặc ECS, bạn chỉ cần triển khai mã của mình với sự hỗ trợ tích hợp cho tất cả các dịch vụ này.
Để bắt đầu, hãy chụp ảnh màn hình này. Nó chứa blog ra mắt (launch blog) cũng như tài liệu (documentation), đó chính là strandsagent.com và GitHub. Và đây là một dự án mã nguồn mở (open source project). Vì vậy, hãy thoải mái gắn star và gửi pull request (PR) nếu bạn có bất cứ điều gì thú vị mà bạn xây dựng hoặc nếu bạn có bất kỳ yêu cầu cụ thể nào không có ở đó, hãy thoải mái đóng góp. Nó mới chỉ ba ngày tuổi và chúng tôi đã nhận được nhiều PR và phản hồi từ cộng đồng và chúng tôi rất mong được làm việc với tất cả các bạn.
Hướng dẫn thiết lập Workshop
Được rồi, khoảnh khắc mà tất cả các bạn đang chờ đợi, đã đến lúc xây dựng! Vì vậy, chúng tôi đã cấu hình sẵn các tài khoản AWS cho bạn, VS Code cũng được cấu hình nên bạn không cần tải xuống bất cứ thứ gì. Mọi thứ được thực hiện trong trình duyệt. Khi bạn truy cập URL này, nó sẽ đưa bạn đến màn hình bật lên (pop-up screen) và bạn sẽ đăng nhập. Nó sẽ yêu cầu bạn một mật khẩu dùng một lần (one-time password). Đó là cách tốt nhất để đăng nhập. Và một khi bạn làm điều đó, bạn sẽ có thể truy cập vào tài khoản AWS cũng như VS Code server đã được khởi tạo.
Vì vậy, chúng ta sẽ dành vài phút để thiết lập. Tôi luôn nói đây là phần khó nhất của workshop. Suman và Duan sẽ hướng dẫn, hãy đặt bất kỳ câu hỏi nào, giơ tay, và tôi cũng sẽ hướng dẫn, nhưng hãy dành vài phút để bắt đầu và chúng ta hãy bắt đầu xây dựng. Khi bạn đăng nhập, bạn sẽ đến một màn hình như thế này. Vì vậy, tôi sẽ dành thêm vài phút để đến màn hình này và tôi sẽ hướng dẫn cách thiết lập Bedrock để chúng ta có thể truy cập mô hình trong VS Code server của mình.
Demo: Strands Agent tạo video toán học
Trong khi mọi người đang chờ đợi, tôi có một video để làm nổi bật những gì Strands có thể làm. Vì vậy, tôi có thể đảm bảo điều đó trong thời gian chờ đợi. Trong ví dụ này, chúng ta thực sự có một Strands Agent sẽ tạo một video toán học. Vì vậy, nó thực sự khá thú vị. Hãy xem điều gì sẽ xảy ra ở đây. Nó đang chạy một MCP server. Nó sẽ khởi động môi trường đó. Nó thực sự sẽ tạo một video hoạt hình cho chúng ta. Vì vậy, nó sẽ tạo một cảnh tối đa. Tôi vẽ hàm bậc ba, 2x^3. Vâng, một cái gì đó khó mà tôi có thể phải làm trong LaTeX, khoa học như thế này rất phiền phức. Nhưng chúng ta sẽ xem MCP server thực sự sẽ xây dựng nó và tạo một video để làm nổi bật nó như thế nào.
Bao nhiêu người trong số các bạn đã nghe nói về "Three Blue, One Brown"? Đó là những gì bạn sẽ thấy bây giờ. Vì vậy, chúng tôi đã tạo một MCP server có thể tạo video mà bạn thấy trong "Three Blue, One Brown". Chúng tôi đã tạo một phương trình bậc hai và chúng tôi muốn vẽ nó trong khoảng từ âm ba đến ba và điều này được hỗ trợ bởi Claude 3.7 và Strands. Vì vậy, chúng tôi sẽ đưa mã đó vào kho GitHub mà chúng tôi đã chia sẻ trước đó. Nhưng đây chỉ là một minh chứng về cách bạn có thể bắt đầu nhanh chóng với các công cụ có sẵn và chỉ vài dòng mã. Cảm ơn bạn.
Cấu hình Amazon Bedrock và cài đặt Strands Agent
Điều đầu tiên cần làm là đảm bảo bạn đăng nhập vào tài khoản AWS này, vì vậy bạn không nên sử dụng tài khoản AWS của riêng mình. Chúng tôi đã cung cấp sẵn một tài khoản với tất cả các tài nguyên cần thiết. Mở bảng điều khiển AWS (AWS console) và nó sẽ mở một tài khoản mới, giống như thế này. Bạn có thể thấy vai trò người tham gia workshop này. Vì vậy, bạn không nên sử dụng tài khoản AWS của riêng mình nếu bạn có.
Từ đây, chúng ta sẽ nhập bedrock, Amazon Bedrock. Vì vậy, chúng ta đến màn hình bảng điều khiển Amazon Bedrock. Chúng ta sẽ muốn bật các mô hình để chúng ta có thể sử dụng chúng trong phòng thí nghiệm của mình. Vì vậy, trong giây lát, chúng ta sẽ cuộn xuống nút model access này. Và sau đó tôi nhấp vào modify model access. Và chúng ta có một số mô hình mới nhưng chúng ta chưa bật chúng, vì vậy chúng ta sẽ chỉ sử dụng Claude V7, V.5 IQ và V.5. Vì vậy, hãy bật những cái đó. Chúng ta đã có bốn cái rồi. Tôi không nghĩ nó đã được bật trong tài khoản này. Vì vậy, chúng ta phải sử dụng các mô hình cũ hơn. Vì vậy, khi tiếp theo, một khi chúng ta yêu cầu truy cập, hãy gửi. Nhưng một lần nữa, mã này, tất cả mã đều là mã nguồn mở. Workshop là mã nguồn mở và chúng ta có thể thấy liên kết để bạn có thể tự chạy nó.
Module một là module chúng ta đang thực hiện hôm nay. Vì vậy, chúng ta sẽ chỉ cho bạn cách Strands Agent hoạt động và cách bạn thực sự có thể xây dựng một workflow agentic để phù hợp. Điều đầu tiên bạn làm là cài đặt nó. Vì vậy, chỉ cần pip install Strands-agents và Strands-agent-tools sẽ cung cấp cho bạn những gì bạn cần. Và có một số tiện ích. UV để tải xuống MCP servers. Vì vậy, tôi sẽ sao chép lệnh đó. Được rồi. Tôi đã cài đặt rồi. Tuyệt vời. Vì vậy.
Và điều thú vị với Claude Code, bạn thực sự có thể sử dụng nó từ Amazon Bedrock. Vì vậy, nếu bạn có một tài khoản AWS, bạn có Bedrock. Bạn có thể sử dụng Claude Code mà không cần sử dụng khóa đăng nhập. Mọi thứ chỉ được thực hiện thông qua Bedrock. Đó là bằng cách sử dụng biến môi trường CLAUDE_CODE_BEDROCK. Vì vậy, hãy để tôi tiếp tục. Được rồi. Claude bắt đầu. Chúng ta bắt đầu xem trước (start preview). Chúng ta có chế độ pass-through (pass-through mode). Tất nhiên, Claude. Được rồi. Tuyệt vời. Vì vậy, bạn chỉ cần cài đặt đề xuất (recommended settings). Vâng, tiếp tục. Được rồi. Claude Code sẵn sàng hoạt động. Vì vậy, tất cả những gì tôi đã làm là xuất lệnh đó, bởi vì nó đã sử dụng Bedrock. Mọi thứ đã sẵn sàng. Nó đã có trong môi trường của tôi. Và tất cả các bạn có thể thấy điều này, phải không? Đây là một màn hình tốt. Vâng. Tuyệt vời.
Bài tập đầu tiên: Công cụ Thời tiết và Đếm Từ
Bài tập đầu tiên của workshop, chúng ta thực sự sẽ sử dụng một công cụ thời tiết. Mọi thứ liên quan đến AI đều phải bắt đầu với thời tiết trước. Vì vậy, bạn biết đấy, chúng ta đã thêm hai công cụ vào đây. Một công cụ có thể lấy thông tin thời tiết, và sau đó thực sự đếm số từ trong phản hồi. Vì vậy, hãy cho chúng ta thấy việc sử dụng các công cụ khác nhau bằng Strands dễ dàng như thế nào. Và chúng ta thực sự sẽ sử dụng Claude Code để giải thích cách mã này hoạt động trước khi tôi đi sâu vào nó. Vì vậy, tôi sẽ mở cái này lên. Dán. Bạn có thể giải thích cấu trúc của tệp strands_agent_weather_word_count.py không? Được rồi. Vì vậy, nó sẽ có thể xem điều gì xảy ra. Sử dụng các tokens. Hãy để tôi mở tệp. Điều đó có nghĩa là gì? Và chúng ta sẽ xem Claude nói gì.
Được rồi. Vì vậy, minh họa một triển khai tác nhân AI đơn giản cho framework Strands, và tệp agent, nhập các công cụ đếm từ cần thiết, sử dụng Claude 3.5, thực sự để truy vấn. Vì vậy, hãy xem qua mã chi tiết hơn. Vì vậy, chúng ta thực sự có một câu lệnh hệ thống, và chúng ta đang nói, bạn biết đấy, tìm thời tiết, và nó thực sự đưa API vào câu lệnh hệ thống, HTTP weather.gov. Vì vậy, không cần khóa API cho điều này. Vì vậy, tôi chỉ có thể truy vấn cái này và nhận được thời tiết thực tế hoặc nơi đó là gì, và cung cấp một cách dễ đọc đối với con người (human-readable way).
Và điều thú vị về điều này, Strands có công cụ yêu cầu HTTP (HTTP request tool) này đã được tích hợp sẵn vào framework. Vì vậy, nó sẽ có thể thực hiện yêu cầu đó cho bạn, tự động. Bạn chỉ cần cung cấp URL. Nó có thể gọi đó và lấy dữ liệu thực tế từ đó. Và sau đó bạn có thể, điều thú vị về Strands nữa là bạn có thể thay đổi các mô hình khác nhau mà bạn có thể sử dụng. Bạn có thể sử dụng Llama. Bạn có thể sử dụng Llama. Bạn có thể sử dụng Bedrock, Bedrock là mặc định. Vì vậy, tôi vừa chuyển sang Claude 3.5. Nó sẽ nhanh hơn ở đây.
Và sau đó điều thú vị về Strands là đó là câu lệnh hệ thống. Câu lệnh hệ thống sẽ đặt lên đó, chúng ta sẽ sử dụng công cụ nào, công cụ đếm từ. Bây giờ, bất cứ điều gì bạn thích về decorator tool là, tôi chỉ định nghĩa một hàm và tôi đặt giá trị trả về. Không có điều gì phức tạp, không thêm gì. Tôi chỉ đặt decorator tool này và nó xử lý phần còn lại. Vì vậy, với tư cách là một nhà phát triển, việc xây dựng hàm, tôi muốn đưa tất cả những thứ bổ sung này vào đó, làm cho nó đơn giản nhất có thể để có một công cụ. Vì vậy, đó là một điểm cộng rất lớn cho framework Strands.
Và từ đó, tôi sẽ nói, "Thời tiết ở Seattle như thế nào?" Hãy thay đổi nó thành San Francisco. Và chúng ta hãy đến terminal. Được rồi, vì vậy chúng ta có thể thấy nó diễn ra như thế nào ở đây. Đầu tiên, tôi nhận được tọa độ cho San Francisco. Bạn có thể thấy công cụ yêu cầu HTTP. Bây giờ nó sẽ sử dụng công cụ yêu cầu HTTP để tìm thời tiết đó. Bạn nhận được thông tin về San Francisco: 65 độ, nắng, gió Tây, một vài ngày nổi bật. Bây giờ, bạn sử dụng công cụ đếm từ, 110 từ.
Vì vậy, đã có khoảng 44 dòng mã chúng ta có thể thực hiện yêu cầu API đó. Chúng ta có tác nhân AI. Chúng ta đã hoàn thành nhiều công cụ. Vì vậy, tôi sẽ tạm dừng ở đây một giây để có câu hỏi tiếp theo cho Strands. Bởi vì mọi người đều đang xem qua. Strands là một SDK mã nguồn mở để xây dựng các tác nhân AI. Có rất nhiều framework agentic, nhưng Strands là một framework riêng. Và bạn có thể thấy rằng bạn thực sự chỉ cần một câu lệnh hệ thống, công cụ, sau đó là một mô hình, và nó có thể thực thi vòng lặp đó. Vì vậy, nó tương tự như các framework agentic khác, nhưng tôi tin rằng nó dễ dàng bắt đầu hơn nhiều mà không có boilerplate và những thứ không cần thiết mà bạn đã thấy trong các framework khác. Một câu hỏi nữa và chúng ta sẽ chuyển sang phần tiếp theo. Cảm ơn bạn. Vì vậy, tôi có một câu hỏi liên quan đến mã.
Truyền Dữ liệu và Tùy chỉnh Tool trong Strand
Vậy làm thế nào chúng ta truyền latitude, longitude và zip code vào Strand? Điều thú vị là chúng ta để cho mô hình AI tự quyết định cách thực hiện điều đó. Nó sử dụng yêu cầu HTTP và tự hiểu latitude và longitude của San Francisco, sau đó có thể truyền thông tin đó đến API endpoint này hoặc sử dụng API zip code. Vì vậy, nó hiểu API dựa trên system prompt và mô hình AI tự mình tìm ra cách làm.
Chúng ta đã giao phó rất nhiều infrastructure mà bạn có thể thấy trong các agent framework khác yêu cầu bạn phải tự làm từng bước. Chúng ta để mô hình AI tự quyết định điều đó, bởi vì các mô hình AI ngày nay có khả năng vượt trội hơn nhiều so với hai năm trước, khi các agent framework đầu tiên ra đời.
Về các tool của Strand, tôi thấy bạn đang nhập hai tool là word count và HTTP request. Vậy có bao nhiêu tool tất cả? Vâng, có một số tool tích hợp sẵn trong Strand framework, như HTTP request. Nhưng tôi cũng tự tạo tool của riêng mình, chỉ với một dòng code đơn giản là trả về độ dài (return length). Vì vậy, rất dễ dàng để tạo custom tool của riêng bạn; bạn chỉ cần thêm tool decorator và thế là xong. Rất đơn giản và hợp lý.
Tích hợp MCP Servers và Claude Code
Chúng ta sẽ chuyển sang bài tập tiếp theo. Bài tập tiếp theo là một phần thú vị: MCP servers. MCP là một công nghệ đang rất thịnh hành. Điều thực sự hay về Strand là nó có hỗ trợ MCP tích hợp sẵn. Và với AWS, chúng ta thực sự có các AWS MCP server chính thức. Tôi sẽ nhấn mạnh chức năng tra cứu tài liệu, vì AWS có rất nhiều thứ. Nếu tôi không có một endpoint lấy thông tin đó và chuyển lên mô hình AI, nó sẽ có thể hiểu cách xây dựng sơ đồ kiến trúc AWS. Vì vậy, có hai MCP (thực ra có rất nhiều MCP được liệt kê ở đây), nhưng tôi sẽ làm nổi bật hai cái trong ví dụ này.
Hãy quay lại. Chúng ta cũng có thể yêu cầu Claude Code giải thích. (Max, bạn mở Claude Code của tôi đi). Tôi cần nó giải thích cách MCP Diag hoạt động. Để tôi mở nó lên. (Để tôi đóng cái đó lại). Claude Code đang ghi tài liệu, đang tìm hiểu phải làm gì, đang xem xét thời gian.
Trong khi Claude Code đang chạy, tôi sẽ giải thích điều gì đang xảy ra. Khi hoàn tất cuộc gọi. Được rồi, nhập Strand. Vẫn đang chạy.
Điều thú vị về MCP server là chúng ta có thể kéo nó vào chỉ với một dòng lệnh. Chúng ta chỉ cần lệnh UVX. Đây là một thư viện Python để tải xuống. Chúng ta có thể trỏ nó đến MCP server và tải xuống cục bộ. Tôi đang truyền MCP server documentation và MCP server diagram. Và Claude cũng nói điều tương tự: "Kết nối với MCP Diag một. Cấu hình bằng Bedrock một lần nữa. Tôi có thể chọn một mô hình AI khác trên Bedrock để truyền vào".
Sau đó, tôi đưa ra một system prompt: "Bạn là một kiến trúc sư giải pháp được chứng nhận của AWS. Bạn cũng giúp khách hàng hiểu các best practices, truy vấn tài liệu, tạo sơ đồ và cho khách hàng biết đường dẫn đầy đủ của sơ đồ khi bạn tạo ra nó để chúng tôi biết nó ở đâu."
Sau đó, một lần nữa, chúng ta chỉ cần nói: "Truyền nhiều MCP server với diagram client, docs client, chúng ta nhận được tất cả các tool dựa trên các MCP server đó." Và một lần nữa, bạn có các tool, chúng ta có mô hình AI và system prompt. Đó là tất cả những gì bạn cần để có một Strand agent. Và sau đó chúng ta đưa ra một task như: "Lấy tài liệu cho AWS Lambda, sau đó tạo sơ đồ trên một trang web sử dụng Lambda cho một trang web tĩnh được lưu trữ trên S3." Đó là task tôi đưa ra. Hãy xem nó thực thi như thế nào. Không. Ôi.
Được rồi, tải xuống MCP server. Nó đã tải xuống rồi. Và bây giờ nó đang xử lý. Nó chia nhỏ thành các bước. Đầu tiên, nó sẽ tìm kiếm tài liệu AWS. Sau đó, nó sẽ đọc tài liệu. Sau đó, nó sẽ tạo một sơ đồ minh họa kiến trúc. Vì vậy, bạn thực sự có thể thấy quá trình từng bước. Nó thực hiện một cuộc gọi HTTP để tìm kiếm và tìm trang chào mừng của Lambda, lấy thông tin. Thu thập tài liệu. Bây giờ nó sẽ vẽ sơ đồ. Hãy xem. Nó đã liệt kê các icons. Vậy những icons nào có sẵn cho nó? Bây giờ nó thực sự đang tạo sơ đồ. Nó đã thất bại ở đó, nhưng nó đã hiểu điều đó và giải thích. "Để tôi sửa biểu tượng CloudWatch." Bây giờ nó đã tạo ra nó, giải thích điều gì đang xảy ra, và nó đã lưu sơ đồ mới này ở đây. Vì vậy, tôi sẽ có thể mở nó ra, các sơ đồ đã tạo, và hôm nay nó đã tạo ra một sơ đồ mới cho tôi. Ôi. Vâng. (Cười). Thực sự. Vâng. Nó sẽ khác nhau mỗi lần, tất nhiên, dựa trên lượng context bạn cung cấp cho nó. Nhưng vâng, tôi có thể tạo sơ đồ đó. Chỉ với khoảng 40 dòng code. Tôi có hai MCP server. Tôi đặt system prompt của mình, chọn một mô hình AI khác, và tôi có thể tạo agentic workflow đó rất nhanh chóng và dễ dàng mà không gặp quá nhiều khó khăn.
Tôi sẽ tạm dừng ở đây để nói về MCP server kết nối với Strand agent. Có một pattern thông qua API gateway để lưu trữ MCP server với Lambda không? Giống như các server side events. Có điều gì cho phép bạn làm điều đó không? Vâng. Bởi vì MCP hỗ trợ HTTP streaming server side event, bạn có thể có nó trong một Lambda function và làm điều đó. Có một số open source code mà tôi tin rằng đã chứng minh cách làm điều đó. Đồng nghiệp của tôi đã làm điều đó, vì vậy vâng, hoàn toàn có thể thực hiện use case đó. Bởi vì hiện tại tôi chỉ đang chạy MCP server cục bộ, nhưng nếu bạn muốn có nó trên Claude, giống như một Lambda function, hoàn toàn là một use case khả thi, bạn sẽ phải thay đổi cách thiết lập này.
Tạo CDK Agent với Claude Code
Bài tập cuối cùng là chúng ta sẽ thực sự tạo một agent mới bằng cách sử dụng Claude Code để hiểu cách nó hoạt động mà không cần chỉ nhìn vào code chúng ta đã có, và có thể hiểu CDK nào. Tôi sẽ tạo một CDK agent. CDK là một Claude Development Kit. Vì vậy, đó là một cách để tạo infrastructure AWS thông qua code. Thông thường, nếu bạn muốn tạo infrastructure AWS, bạn có thể sử dụng thứ gì đó như CloudFormation, là một cách dựa trên YAML. Nhưng nếu là một developer, CDK được ưu tiên hơn vì bạn có thể tích hợp nó vào Python hoặc TypeScript code. Vì vậy, tôi sẽ trình bày một ví dụ về cách chúng ta có thể sử dụng Claude Code để tạo một Strand agent mới cho chúng ta. Và tôi tạo một file mới ở đây.
Được rồi, tôi đã tạo một file trống, hoàn toàn mới, không có gì trong đó. Và sau đó tôi sẽ hỏi Claude Code: "Cập nhật CDK agent để tạo một Strand agent kết nối với MCP server. Hãy xem các file khác để hiểu cách làm điều này." Vì vậy, tôi không cung cấp tài liệu cho nó. Tôi chỉ nói, "Hãy sử dụng kiến thức bạn đã có để hiểu cách tạo ra nó." Để tôi vào repo và hỏi Claude (trong Claude Code).
Vâng, bây giờ Claude Code sẽ xem xét. Chúng ta sẽ xem kế hoạch tấn công của nó. Hãy xem nó đang làm gì. "Được rồi, tôi sẽ cập nhật CDK agent thành Strand agent được kết nối với MCP server." Nó nhìn vào cái kia. Không có dòng code nào ở đó. Tôi đọc cái word count kia. Nó tìm thấy MCP dot một. Tôi đã xem xét nó và bỏ qua. Được rồi, chuyển sang cái tiếp theo. "Tạo một Strand agent và đặt tất cả code cho nó." Nó hỏi tôi có muốn thực hiện chỉnh sửa này không? Vì vậy, tôi nói có, hãy thực hiện chỉnh sửa. Thêm code vào tập tin. "Được rồi, cấu hình Strand agent, MCP client cấu hình system prompt." Nó đã làm xong. Hoàn hảo.
Vì vậy, bạn có thể đóng nó lại. Và điều tôi thích ở Claude Code, nó thực sự cho biết chi phí là bao nhiêu khi bạn hoàn thành nó. Tổng chi phí, thời gian API talk, bao nhiêu thay đổi code, mô hình AI nào nó đã sử dụng – nó đã sử dụng Claude 3.5. Nó sử dụng Claude 3.5 để hiểu cách tốt nhất. Vì vậy, sử dụng Claude Code của Bedrock là một cách dễ dàng để bắt đầu xây dựng các applications như thế này. Và bây giờ nó đã tích hợp nguyên bản trong VS Code. Điều này sẽ rất thú vị.
Hãy xem liệu code có thực sự hoạt động không. Vì vậy, tôi sẽ chạy nó. Hãy xem chuyên gia AWS CDK của bạn. Làm thế nào tôi có thể có một S3 bucket đơn giản với CDK? Hãy cho tôi một cái gì đó đơn giản. Hãy xem nó hoạt động như thế nào. Tôi đã nghĩ về CDK agent. Được rồi, tôi đang tạo một ví dụ TypeScript. Tôi sẽ cung cấp hướng dẫn từng bước. Nó đã viết code cho tôi. Nó đang thực hiện bảo mật đó, kiểm tra cái này, thêm quy tắc NAG. Vì vậy, nó thực sự hiểu CDK là gì. Nó đang đặt tất cả những thứ bổ sung này vào đó. Và vâng, bạn đã giải thích điều đó. Vì vậy, Claude Code đã có thể hiểu cách Strand agent hoạt động, tạo một agent mới dựa trên đó, tạo một template trên đó. Và nó rất dễ hiểu. Vì vậy, bằng cách cung cấp đủ context, Claude Code sẽ hiểu phải làm gì, tạo agent này. Làm rất tốt. Vì vậy, rất ấn tượng khi sử dụng Claude Code và Bedrock, điều đó cũng thật tuyệt vời.
Đó là toàn bộ workshop từ đầu đến cuối. Để cho bạn thấy Strand có thể làm gì, từ một weather agent đơn giản đến kết nối với MCP server cũng như tạo agent của riêng bạn. Và chúng ta sẽ tạm dừng ở đây để trả lời bất kỳ câu hỏi nào hoặc nếu bạn muốn xem một bản demonstration thú vị nào đó, tôi rất sẵn lòng thử và xem Claude (trong Claude Code) có thể làm gì.
Các trường hợp sử dụng của MCP
Tôi chỉ muốn hỏi, đâu là một số use case để sử dụng MCP? Tôi biết tôi sẽ xây dựng các agent có thể kết nối với thế giới bên ngoài thông qua API và tất cả. Có thể tôi không biết nhiều về MCP. Vậy thì, đâu là một số use case mà bạn có thể sử dụng MCP cho?
Đúng vậy, một câu hỏi tuyệt vời. Use case của MCP là gì? Theo mặc định, agent không có đủ thông tin để kết nối với API bên ngoài. Vì vậy, bạn đã thấy trong ví dụ, chúng ta đã tạo một sơ đồ AWS. Nếu tôi làm điều đó với MCP server, mô hình AI sẽ không biết cách tạo sơ đồ AWS. Nó sẽ không biết cách tra cứu tài liệu AWS. Vì vậy, việc cung cấp thêm context cho mô hình AI để thực hiện thêm hành động. Vì vậy, khi sử dụng mô hình ngôn ngữ lớn, context thực sự là yếu tố quyết định điều gì sẽ xảy ra. MCP cung cấp một cách có cấu trúc để lấy thông tin đó. Vì vậy, nó có thể thực hiện hành động, đọc tài liệu, kết nối với các applications bên ngoài. Vì vậy, MCP thực sự là một dạng "USB-C" (cổng kết nối đa năng), như người ta gọi nó, để kết nối LLM. Đối với tôi, đó là một cách tuyệt vời để kết nối các applications bên ngoài, lấy các context khác nhau cho mô hình AI của bạn.
Và tôi sẽ cho bạn thấy một số điểm nổi bật của AWS MCP server để bạn có thể hình dung ví dụ về những gì chúng ta có. Có một danh sách chính thức các AWS MCP server thực hiện nhiều thứ khác nhau. Vì vậy, tôi sẽ trình bày một số ví dụ. Bạn đã thấy cái documentation, Bedrock Knowledge Bases. Nếu bạn có nhiều PDFs, tài liệu mà bạn muốn cung cấp cho một LLM để phân tích chi phí. Vì vậy, nếu bạn muốn phân tích chi phí AWS, bạn muốn có một ví dụ khác. MCP server có thể hữu ích cho bạn. Amazon Nova Canvas, nếu bạn muốn vẽ hình ảnh. Nova Canvas, MCP server, cái diagram mà chúng ta đã sử dụng hôm nay cũng có thể vẽ kiến trúc AWS của bạn, sơ đồ AWS CloudFormation. Vì vậy, có rất nhiều loại khác nhau. Và Terraform, nếu bạn sử dụng Terraform, front-end code, bạn muốn chuyên về React hoặc sử dụng AWS Amplify, v.v. Vì vậy, có rất nhiều nguồn MCP server.
Một use case lớn là tôi muốn mô hình AI của mình hiểu những điều này. Bạn có rất nhiều tài liệu, Postgres database, Amazon Neptune database. Tóm lại, đây thực sự là sức mạnh của MCP, có rất nhiều integrations mà bạn có thể có để cung cấp cho mô hình AI những khả năng bổ sung. Chúng tôi có tín dụng AWS cho bạn. Vì vậy, nếu bạn muốn cung cấp cho chúng tôi một số feedback và khảo sát, tôi muốn bạn điền vào biểu mẫu này. Bạn sẽ nhận được 25 đô la tín dụng AWS mới để sử dụng. Vì vậy, bạn có thể thử nghiệm và khám phá một số điều. Cảm ơn bạn đã đến và hãy cùng xây dựng!
TL;DR
- Amazon Bedrock cung cấp một dịch vụ được quản lý toàn diện để triển khai và mở rộng các tác nhân AI sử dụng các mô hình nền tảng mạnh mẽ như Claude, đảm bảo bảo mật cấp độ doanh nghiệp và các guardrail.
- AWS định nghĩa tác nhân AI là một hệ thống tự chủ có khả năng lý luận, lập kế hoạch và thực hiện nhiều bước để đạt được các mục tiêu phức tạp, cho phép nó tự động chia nhỏ và giải quyết các tác vụ cấp cao.
- Strands Agent SDK là một dự án mã nguồn mở mới giúp đơn giản hóa việc xây dựng ứng dụng tác nhân bằng cách chỉ yêu cầu một mô hình, các công cụ và một câu lệnh hệ thống, tận dụng sức mạnh của LLM để giảm thiểu mã boilerplate.
Điểm chính
- Sử dụng Amazon Bedrock làm dịch vụ được quản lý toàn diện để truy cập các mô hình nền tảng (ví dụ: Claude) và xây dựng, mở rộng quy mô ứng dụng AI với bảo mật cấp doanh nghiệp.
- Hiểu rõ định nghĩa tác nhân AI của AWS: một hệ thống tự chủ có khả năng lý luận, lập kế hoạch và thực hiện nhiều bước để hoàn thành một mục tiêu, cho phép giải quyết các tác vụ phức tạp.
- Tận dụng Strands Agent SDK mã nguồn mở để phát triển tác nhân AI, chỉ cần định nghĩa mô hình, các công cụ và câu lệnh hệ thống, giảm đáng kể lượng mã cần thiết.
- Sử dụng các công cụ tích hợp sẵn của Strands (ví dụ:
HTTP request tool) và dễ dàng tạo các công cụ tùy chỉnh bằng cách áp dụngdecorator toolđơn giản cho các hàm Python. - Cho phép mô hình AI trong Strands tự động quyết định cách truyền dữ liệu và sử dụng công cụ dựa trên câu lệnh hệ thống, thay vì phải lập trình từng bước thủ công.
- Thiết lập môi trường làm việc bằng cách cài đặt
Strands-agentsvàStrands-agent-toolsquapip, và kích hoạt truy cập mô hình trong bảng điều khiển Amazon Bedrock. - Tích hợp các mô hình Claude từ Bedrock bằng cách đặt biến môi trường
CLAUDE_CODE_BEDROCK, cho phép sử dụng các mô hình này mà không cần khóa API riêng. - Khám phá việc tích hợp với các
MCP server(ví dụ:MCP Diagcho sơ đồ kiến trúc,MCP documentationcho tra cứu) để mở rộng khả năng của tác nhân vào các lĩnh vực chuyên biệt.
Từ vựng
AI agent— tác nhân AIAmazon Bedrock— Amazon BedrockFully managed service— Dịch vụ được quản lý toàn diệnFoundation model (FM)— Mô hình nền tảng (FM)Autonomous system— Hệ thống tự chủStrands Agent SDK— Strands Agent SDKOpen source— Mã nguồn mởTool— Công cụSystem prompt— Câu lệnh hệ thốngTool decorator— Decorator công cụ
Nội dung chi tiết
Giới thiệu về Xây dựng Tác nhân AI với Claude trên Amazon Bedrock
Chào mừng quý vị đến với buổi giới thiệu về cách xây dựng các tác nhân AI với Claude trên Amazon Bedrock. Hôm nay, tôi rất vui mừng được cùng quý vị khám phá cách tạo ra các hệ thống AI tự chủ, thông minh có khả năng biến đổi các ứng dụng của bạn. Tôi là Duane Lifefoot, một Developer Advocate tại AWS. Tôi là Ben Javier-Biammy, một Solutions Architect tại AWS. Xin chào mọi người, tôi là Suman Devnath, một Developer Advocate tại AWS.
Đây sẽ là một sự kiện thực hành trực tiếp (hands-on keyboard event). Chúng tôi có một workshop trực tiếp nơi bạn có thể đăng nhập vào một môi trường và bắt đầu với một số mã. Chúng tôi sẽ lướt qua một vài slide để cung cấp thông tin nền tảng và giúp mọi người hiểu rõ, sau đó chúng ta sẽ đi vào workshop. Đây là mã với Claude.
Tổng quan về Amazon Bedrock
Một trong những điều tôi muốn nói đến là Anthropic hoặc AWS. Để làm được điều đó, chúng tôi có Amazon Bedrock, một dịch vụ được quản lý toàn diện (fully managed service) cung cấp cho bạn quyền truy cập vào các mô hình nền tảng mạnh mẽ như các mô hình thuộc dòng Claude, thông qua một API hợp nhất. Điều này cung cấp cho bạn mọi thứ cần thiết để không chỉ xây dựng mà còn mở rộng quy mô các ứng dụng AI của bạn trên toàn cầu. Nó thực hiện điều này bằng cách cung cấp cho bạn mọi thứ cần thiết: lựa chọn mô hình, guardrails, cũng như bảo mật cấp độ doanh nghiệp (enterprise grade) theo mặc định.
Định nghĩa Tác nhân AI
Chúng ta đang nói về các tác nhân AI. Đó là điều mọi người ở đây muốn tìm hiểu. Nhưng chúng ta cần thống nhất về ý nghĩa thực sự của nó. Tại AWS, chúng tôi giải thích như sau: Một tác nhân AI là một hệ thống AI tự chủ (autonomous system) có thể lý luận (reason), lập kế hoạch (plan) và thực hiện nhiều bước (take multiple steps) để hoàn thành một mục tiêu (objective), giống như con người.
Vì vậy, nếu bạn giao một tác vụ cho một tác nhân AI, tác nhân AI đó có thể tiếp nhận tác vụ và nói: "Đây là mục tiêu cấp cao (high-level objective). Hãy để tôi tạo một kế hoạch gồm các bước cần thực hiện." Sau đó, nó có thể thực hiện các hành động (actions) theo các bước đó. Và một khi các bước đó đã được thực hiện, các hành động đã được thực hiện trên các bước đó, thì nó có thể đánh giá kết quả và lý luận về những gì cần xảy ra tiếp theo cho đến khi đạt được mục tiêu đó. Đây là một hệ thống agentic mà chúng ta sẽ thảo luận hôm nay.
Giới thiệu Strands Agent SDK mã nguồn mở
Tại AWS, chúng tôi cũng đã làm một điều tuyệt vời mà Suman sẽ nói đến ngay bây giờ. Cảm ơn bạn rất nhiều, Duan. Vậy, tiến thêm một bước nữa, những gì chúng tôi đã làm, thực tế là vào tuần trước, thứ Sáu tuần trước, chúng tôi đã công bố một SDK mã nguồn mở (open source SDK) để xây dựng các ứng dụng agentic gọi là Strands Agent.
Strands Agent này là gì? Đó là một SDK rất đơn giản, chỉ cần ba thứ: mô hình, công cụ (tools) và câu lệnh (prompt). Không thể đơn giản hơn thế. Nó không có bất kỳ scaffolding nào mà bạn không phải guardrail câu lệnh của mình, bối cảnh, mục tiêu, v.v. Điều chúng tôi tin tưởng là trong thế giới ngày nay, các LLM khá mạnh. Và chúng tôi muốn tận dụng tối đa sức mạnh của mô hình ở phần backend. Vì vậy, chúng tôi đang cung cấp sự linh hoạt tốt hơn cho mô hình để lý luận thay mặt chúng ta.
Và đó là lý do tại sao nếu bạn nhìn vào kiến trúc này, nó rất đơn giản. Bạn tạo một câu lệnh hoặc đây là câu hỏi của bạn. Bạn gửi nó đến tác nhân AI, đó là Strands Agent. Và khi bạn tạo một đối tượng agent, bạn sẽ định nghĩa mô hình và các công cụ mà chúng tôi cung cấp cho bạn. Bạn sẽ thấy trong workshop, khi Benjo thực hiện một vài bản demo, bạn sẽ thấy rằng mô hình mặc định mà chúng tôi sử dụng là Claude 3.7 tính đến thời điểm hiện tại. Và ngay khi bạn đã cài đặt và cấu hình Strands, bạn sẽ nhận được một loạt các công cụ được tích hợp sẵn. Vì vậy, bạn không phải viết mã nặng nề (heavy lifting code) để tạo các nhu cầu cơ bản của mình.
Và điều tuyệt vời nhất là không chỉ để kiểm thử và triển khai (testing and deployment) trong môi trường kiểm thử của bạn, bạn thực sự có thể triển khai trên Claude. Vì vậy, giả sử bạn có lực lượng lao động của mình trong EC2 hoặc Lambda hoặc ECS, bạn chỉ cần triển khai mã của mình với sự hỗ trợ tích hợp cho tất cả các dịch vụ này.
Để bắt đầu, hãy chụp ảnh màn hình này. Nó chứa blog ra mắt (launch blog) cũng như tài liệu (documentation), đó chính là strandsagent.com và GitHub. Và đây là một dự án mã nguồn mở (open source project). Vì vậy, hãy thoải mái gắn star và gửi pull request (PR) nếu bạn có bất cứ điều gì thú vị mà bạn xây dựng hoặc nếu bạn có bất kỳ yêu cầu cụ thể nào không có ở đó, hãy thoải mái đóng góp. Nó mới chỉ ba ngày tuổi và chúng tôi đã nhận được nhiều PR và phản hồi từ cộng đồng và chúng tôi rất mong được làm việc với tất cả các bạn.
Hướng dẫn thiết lập Workshop
Được rồi, khoảnh khắc mà tất cả các bạn đang chờ đợi, đã đến lúc xây dựng! Vì vậy, chúng tôi đã cấu hình sẵn các tài khoản AWS cho bạn, VS Code cũng được cấu hình nên bạn không cần tải xuống bất cứ thứ gì. Mọi thứ được thực hiện trong trình duyệt. Khi bạn truy cập URL này, nó sẽ đưa bạn đến màn hình bật lên (pop-up screen) và bạn sẽ đăng nhập. Nó sẽ yêu cầu bạn một mật khẩu dùng một lần (one-time password). Đó là cách tốt nhất để đăng nhập. Và một khi bạn làm điều đó, bạn sẽ có thể truy cập vào tài khoản AWS cũng như VS Code server đã được khởi tạo.
Vì vậy, chúng ta sẽ dành vài phút để thiết lập. Tôi luôn nói đây là phần khó nhất của workshop. Suman và Duan sẽ hướng dẫn, hãy đặt bất kỳ câu hỏi nào, giơ tay, và tôi cũng sẽ hướng dẫn, nhưng hãy dành vài phút để bắt đầu và chúng ta hãy bắt đầu xây dựng. Khi bạn đăng nhập, bạn sẽ đến một màn hình như thế này. Vì vậy, tôi sẽ dành thêm vài phút để đến màn hình này và tôi sẽ hướng dẫn cách thiết lập Bedrock để chúng ta có thể truy cập mô hình trong VS Code server của mình.
Demo: Strands Agent tạo video toán học
Trong khi mọi người đang chờ đợi, tôi có một video để làm nổi bật những gì Strands có thể làm. Vì vậy, tôi có thể đảm bảo điều đó trong thời gian chờ đợi. Trong ví dụ này, chúng ta thực sự có một Strands Agent sẽ tạo một video toán học. Vì vậy, nó thực sự khá thú vị. Hãy xem điều gì sẽ xảy ra ở đây. Nó đang chạy một MCP server. Nó sẽ khởi động môi trường đó. Nó thực sự sẽ tạo một video hoạt hình cho chúng ta. Vì vậy, nó sẽ tạo một cảnh tối đa. Tôi vẽ hàm bậc ba, 2x^3. Vâng, một cái gì đó khó mà tôi có thể phải làm trong LaTeX, khoa học như thế này rất phiền phức. Nhưng chúng ta sẽ xem MCP server thực sự sẽ xây dựng nó và tạo một video để làm nổi bật nó như thế nào.
Bao nhiêu người trong số các bạn đã nghe nói về "Three Blue, One Brown"? Đó là những gì bạn sẽ thấy bây giờ. Vì vậy, chúng tôi đã tạo một MCP server có thể tạo video mà bạn thấy trong "Three Blue, One Brown". Chúng tôi đã tạo một phương trình bậc hai và chúng tôi muốn vẽ nó trong khoảng từ âm ba đến ba và điều này được hỗ trợ bởi Claude 3.7 và Strands. Vì vậy, chúng tôi sẽ đưa mã đó vào kho GitHub mà chúng tôi đã chia sẻ trước đó. Nhưng đây chỉ là một minh chứng về cách bạn có thể bắt đầu nhanh chóng với các công cụ có sẵn và chỉ vài dòng mã. Cảm ơn bạn.
Cấu hình Amazon Bedrock và cài đặt Strands Agent
Điều đầu tiên cần làm là đảm bảo bạn đăng nhập vào tài khoản AWS này, vì vậy bạn không nên sử dụng tài khoản AWS của riêng mình. Chúng tôi đã cung cấp sẵn một tài khoản với tất cả các tài nguyên cần thiết. Mở bảng điều khiển AWS (AWS console) và nó sẽ mở một tài khoản mới, giống như thế này. Bạn có thể thấy vai trò người tham gia workshop này. Vì vậy, bạn không nên sử dụng tài khoản AWS của riêng mình nếu bạn có.
Từ đây, chúng ta sẽ nhập bedrock, Amazon Bedrock. Vì vậy, chúng ta đến màn hình bảng điều khiển Amazon Bedrock. Chúng ta sẽ muốn bật các mô hình để chúng ta có thể sử dụng chúng trong phòng thí nghiệm của mình. Vì vậy, trong giây lát, chúng ta sẽ cuộn xuống nút model access này. Và sau đó tôi nhấp vào modify model access. Và chúng ta có một số mô hình mới nhưng chúng ta chưa bật chúng, vì vậy chúng ta sẽ chỉ sử dụng Claude V7, V.5 IQ và V.5. Vì vậy, hãy bật những cái đó. Chúng ta đã có bốn cái rồi. Tôi không nghĩ nó đã được bật trong tài khoản này. Vì vậy, chúng ta phải sử dụng các mô hình cũ hơn. Vì vậy, khi tiếp theo, một khi chúng ta yêu cầu truy cập, hãy gửi. Nhưng một lần nữa, mã này, tất cả mã đều là mã nguồn mở. Workshop là mã nguồn mở và chúng ta có thể thấy liên kết để bạn có thể tự chạy nó.
Module một là module chúng ta đang thực hiện hôm nay. Vì vậy, chúng ta sẽ chỉ cho bạn cách Strands Agent hoạt động và cách bạn thực sự có thể xây dựng một workflow agentic để phù hợp. Điều đầu tiên bạn làm là cài đặt nó. Vì vậy, chỉ cần pip install Strands-agents và Strands-agent-tools sẽ cung cấp cho bạn những gì bạn cần. Và có một số tiện ích. UV để tải xuống MCP servers. Vì vậy, tôi sẽ sao chép lệnh đó. Được rồi. Tôi đã cài đặt rồi. Tuyệt vời. Vì vậy.
Và điều thú vị với Claude Code, bạn thực sự có thể sử dụng nó từ Amazon Bedrock. Vì vậy, nếu bạn có một tài khoản AWS, bạn có Bedrock. Bạn có thể sử dụng Claude Code mà không cần sử dụng khóa đăng nhập. Mọi thứ chỉ được thực hiện thông qua Bedrock. Đó là bằng cách sử dụng biến môi trường CLAUDE_CODE_BEDROCK. Vì vậy, hãy để tôi tiếp tục. Được rồi. Claude bắt đầu. Chúng ta bắt đầu xem trước (start preview). Chúng ta có chế độ pass-through (pass-through mode). Tất nhiên, Claude. Được rồi. Tuyệt vời. Vì vậy, bạn chỉ cần cài đặt đề xuất (recommended settings). Vâng, tiếp tục. Được rồi. Claude Code sẵn sàng hoạt động. Vì vậy, tất cả những gì tôi đã làm là xuất lệnh đó, bởi vì nó đã sử dụng Bedrock. Mọi thứ đã sẵn sàng. Nó đã có trong môi trường của tôi. Và tất cả các bạn có thể thấy điều này, phải không? Đây là một màn hình tốt. Vâng. Tuyệt vời.
Bài tập đầu tiên: Công cụ Thời tiết và Đếm Từ
Bài tập đầu tiên của workshop, chúng ta thực sự sẽ sử dụng một công cụ thời tiết. Mọi thứ liên quan đến AI đều phải bắt đầu với thời tiết trước. Vì vậy, bạn biết đấy, chúng ta đã thêm hai công cụ vào đây. Một công cụ có thể lấy thông tin thời tiết, và sau đó thực sự đếm số từ trong phản hồi. Vì vậy, hãy cho chúng ta thấy việc sử dụng các công cụ khác nhau bằng Strands dễ dàng như thế nào. Và chúng ta thực sự sẽ sử dụng Claude Code để giải thích cách mã này hoạt động trước khi tôi đi sâu vào nó. Vì vậy, tôi sẽ mở cái này lên. Dán. Bạn có thể giải thích cấu trúc của tệp strands_agent_weather_word_count.py không? Được rồi. Vì vậy, nó sẽ có thể xem điều gì xảy ra. Sử dụng các tokens. Hãy để tôi mở tệp. Điều đó có nghĩa là gì? Và chúng ta sẽ xem Claude nói gì.
Được rồi. Vì vậy, minh họa một triển khai tác nhân AI đơn giản cho framework Strands, và tệp agent, nhập các công cụ đếm từ cần thiết, sử dụng Claude 3.5, thực sự để truy vấn. Vì vậy, hãy xem qua mã chi tiết hơn. Vì vậy, chúng ta thực sự có một câu lệnh hệ thống, và chúng ta đang nói, bạn biết đấy, tìm thời tiết, và nó thực sự đưa API vào câu lệnh hệ thống, HTTP weather.gov. Vì vậy, không cần khóa API cho điều này. Vì vậy, tôi chỉ có thể truy vấn cái này và nhận được thời tiết thực tế hoặc nơi đó là gì, và cung cấp một cách dễ đọc đối với con người (human-readable way).
Và điều thú vị về điều này, Strands có công cụ yêu cầu HTTP (HTTP request tool) này đã được tích hợp sẵn vào framework. Vì vậy, nó sẽ có thể thực hiện yêu cầu đó cho bạn, tự động. Bạn chỉ cần cung cấp URL. Nó có thể gọi đó và lấy dữ liệu thực tế từ đó. Và sau đó bạn có thể, điều thú vị về Strands nữa là bạn có thể thay đổi các mô hình khác nhau mà bạn có thể sử dụng. Bạn có thể sử dụng Llama. Bạn có thể sử dụng Llama. Bạn có thể sử dụng Bedrock, Bedrock là mặc định. Vì vậy, tôi vừa chuyển sang Claude 3.5. Nó sẽ nhanh hơn ở đây.
Và sau đó điều thú vị về Strands là đó là câu lệnh hệ thống. Câu lệnh hệ thống sẽ đặt lên đó, chúng ta sẽ sử dụng công cụ nào, công cụ đếm từ. Bây giờ, bất cứ điều gì bạn thích về decorator tool là, tôi chỉ định nghĩa một hàm và tôi đặt giá trị trả về. Không có điều gì phức tạp, không thêm gì. Tôi chỉ đặt decorator tool này và nó xử lý phần còn lại. Vì vậy, với tư cách là một nhà phát triển, việc xây dựng hàm, tôi muốn đưa tất cả những thứ bổ sung này vào đó, làm cho nó đơn giản nhất có thể để có một công cụ. Vì vậy, đó là một điểm cộng rất lớn cho framework Strands.
Và từ đó, tôi sẽ nói, "Thời tiết ở Seattle như thế nào?" Hãy thay đổi nó thành San Francisco. Và chúng ta hãy đến terminal. Được rồi, vì vậy chúng ta có thể thấy nó diễn ra như thế nào ở đây. Đầu tiên, tôi nhận được tọa độ cho San Francisco. Bạn có thể thấy công cụ yêu cầu HTTP. Bây giờ nó sẽ sử dụng công cụ yêu cầu HTTP để tìm thời tiết đó. Bạn nhận được thông tin về San Francisco: 65 độ, nắng, gió Tây, một vài ngày nổi bật. Bây giờ, bạn sử dụng công cụ đếm từ, 110 từ.
Vì vậy, đã có khoảng 44 dòng mã chúng ta có thể thực hiện yêu cầu API đó. Chúng ta có tác nhân AI. Chúng ta đã hoàn thành nhiều công cụ. Vì vậy, tôi sẽ tạm dừng ở đây một giây để có câu hỏi tiếp theo cho Strands. Bởi vì mọi người đều đang xem qua. Strands là một SDK mã nguồn mở để xây dựng các tác nhân AI. Có rất nhiều framework agentic, nhưng Strands là một framework riêng. Và bạn có thể thấy rằng bạn thực sự chỉ cần một câu lệnh hệ thống, công cụ, sau đó là một mô hình, và nó có thể thực thi vòng lặp đó. Vì vậy, nó tương tự như các framework agentic khác, nhưng tôi tin rằng nó dễ dàng bắt đầu hơn nhiều mà không có boilerplate và những thứ không cần thiết mà bạn đã thấy trong các framework khác. Một câu hỏi nữa và chúng ta sẽ chuyển sang phần tiếp theo. Cảm ơn bạn. Vì vậy, tôi có một câu hỏi liên quan đến mã.
Truyền Dữ liệu và Tùy chỉnh Tool trong Strand
Vậy làm thế nào chúng ta truyền latitude, longitude và zip code vào Strand? Điều thú vị là chúng ta để cho mô hình AI tự quyết định cách thực hiện điều đó. Nó sử dụng yêu cầu HTTP và tự hiểu latitude và longitude của San Francisco, sau đó có thể truyền thông tin đó đến API endpoint này hoặc sử dụng API zip code. Vì vậy, nó hiểu API dựa trên system prompt và mô hình AI tự mình tìm ra cách làm.
Chúng ta đã giao phó rất nhiều infrastructure mà bạn có thể thấy trong các agent framework khác yêu cầu bạn phải tự làm từng bước. Chúng ta để mô hình AI tự quyết định điều đó, bởi vì các mô hình AI ngày nay có khả năng vượt trội hơn nhiều so với hai năm trước, khi các agent framework đầu tiên ra đời.
Về các tool của Strand, tôi thấy bạn đang nhập hai tool là word count và HTTP request. Vậy có bao nhiêu tool tất cả? Vâng, có một số tool tích hợp sẵn trong Strand framework, như HTTP request. Nhưng tôi cũng tự tạo tool của riêng mình, chỉ với một dòng code đơn giản là trả về độ dài (return length). Vì vậy, rất dễ dàng để tạo custom tool của riêng bạn; bạn chỉ cần thêm tool decorator và thế là xong. Rất đơn giản và hợp lý.
Tích hợp MCP Servers và Claude Code
Chúng ta sẽ chuyển sang bài tập tiếp theo. Bài tập tiếp theo là một phần thú vị: MCP servers. MCP là một công nghệ đang rất thịnh hành. Điều thực sự hay về Strand là nó có hỗ trợ MCP tích hợp sẵn. Và với AWS, chúng ta thực sự có các AWS MCP server chính thức. Tôi sẽ nhấn mạnh chức năng tra cứu tài liệu, vì AWS có rất nhiều thứ. Nếu tôi không có một endpoint lấy thông tin đó và chuyển lên mô hình AI, nó sẽ có thể hiểu cách xây dựng sơ đồ kiến trúc AWS. Vì vậy, có hai MCP (thực ra có rất nhiều MCP được liệt kê ở đây), nhưng tôi sẽ làm nổi bật hai cái trong ví dụ này.
Hãy quay lại. Chúng ta cũng có thể yêu cầu Claude Code giải thích. (Max, bạn mở Claude Code của tôi đi). Tôi cần nó giải thích cách MCP Diag hoạt động. Để tôi mở nó lên. (Để tôi đóng cái đó lại). Claude Code đang ghi tài liệu, đang tìm hiểu phải làm gì, đang xem xét thời gian.
Trong khi Claude Code đang chạy, tôi sẽ giải thích điều gì đang xảy ra. Khi hoàn tất cuộc gọi. Được rồi, nhập Strand. Vẫn đang chạy.
Điều thú vị về MCP server là chúng ta có thể kéo nó vào chỉ với một dòng lệnh. Chúng ta chỉ cần lệnh UVX. Đây là một thư viện Python để tải xuống. Chúng ta có thể trỏ nó đến MCP server và tải xuống cục bộ. Tôi đang truyền MCP server documentation và MCP server diagram. Và Claude cũng nói điều tương tự: "Kết nối với MCP Diag một. Cấu hình bằng Bedrock một lần nữa. Tôi có thể chọn một mô hình AI khác trên Bedrock để truyền vào".
Sau đó, tôi đưa ra một system prompt: "Bạn là một kiến trúc sư giải pháp được chứng nhận của AWS. Bạn cũng giúp khách hàng hiểu các best practices, truy vấn tài liệu, tạo sơ đồ và cho khách hàng biết đường dẫn đầy đủ của sơ đồ khi bạn tạo ra nó để chúng tôi biết nó ở đâu."
Sau đó, một lần nữa, chúng ta chỉ cần nói: "Truyền nhiều MCP server với diagram client, docs client, chúng ta nhận được tất cả các tool dựa trên các MCP server đó." Và một lần nữa, bạn có các tool, chúng ta có mô hình AI và system prompt. Đó là tất cả những gì bạn cần để có một Strand agent. Và sau đó chúng ta đưa ra một task như: "Lấy tài liệu cho AWS Lambda, sau đó tạo sơ đồ trên một trang web sử dụng Lambda cho một trang web tĩnh được lưu trữ trên S3." Đó là task tôi đưa ra. Hãy xem nó thực thi như thế nào. Không. Ôi.
Được rồi, tải xuống MCP server. Nó đã tải xuống rồi. Và bây giờ nó đang xử lý. Nó chia nhỏ thành các bước. Đầu tiên, nó sẽ tìm kiếm tài liệu AWS. Sau đó, nó sẽ đọc tài liệu. Sau đó, nó sẽ tạo một sơ đồ minh họa kiến trúc. Vì vậy, bạn thực sự có thể thấy quá trình từng bước. Nó thực hiện một cuộc gọi HTTP để tìm kiếm và tìm trang chào mừng của Lambda, lấy thông tin. Thu thập tài liệu. Bây giờ nó sẽ vẽ sơ đồ. Hãy xem. Nó đã liệt kê các icons. Vậy những icons nào có sẵn cho nó? Bây giờ nó thực sự đang tạo sơ đồ. Nó đã thất bại ở đó, nhưng nó đã hiểu điều đó và giải thích. "Để tôi sửa biểu tượng CloudWatch." Bây giờ nó đã tạo ra nó, giải thích điều gì đang xảy ra, và nó đã lưu sơ đồ mới này ở đây. Vì vậy, tôi sẽ có thể mở nó ra, các sơ đồ đã tạo, và hôm nay nó đã tạo ra một sơ đồ mới cho tôi. Ôi. Vâng. (Cười). Thực sự. Vâng. Nó sẽ khác nhau mỗi lần, tất nhiên, dựa trên lượng context bạn cung cấp cho nó. Nhưng vâng, tôi có thể tạo sơ đồ đó. Chỉ với khoảng 40 dòng code. Tôi có hai MCP server. Tôi đặt system prompt của mình, chọn một mô hình AI khác, và tôi có thể tạo agentic workflow đó rất nhanh chóng và dễ dàng mà không gặp quá nhiều khó khăn.
Tôi sẽ tạm dừng ở đây để nói về MCP server kết nối với Strand agent. Có một pattern thông qua API gateway để lưu trữ MCP server với Lambda không? Giống như các server side events. Có điều gì cho phép bạn làm điều đó không? Vâng. Bởi vì MCP hỗ trợ HTTP streaming server side event, bạn có thể có nó trong một Lambda function và làm điều đó. Có một số open source code mà tôi tin rằng đã chứng minh cách làm điều đó. Đồng nghiệp của tôi đã làm điều đó, vì vậy vâng, hoàn toàn có thể thực hiện use case đó. Bởi vì hiện tại tôi chỉ đang chạy MCP server cục bộ, nhưng nếu bạn muốn có nó trên Claude, giống như một Lambda function, hoàn toàn là một use case khả thi, bạn sẽ phải thay đổi cách thiết lập này.
Tạo CDK Agent với Claude Code
Bài tập cuối cùng là chúng ta sẽ thực sự tạo một agent mới bằng cách sử dụng Claude Code để hiểu cách nó hoạt động mà không cần chỉ nhìn vào code chúng ta đã có, và có thể hiểu CDK nào. Tôi sẽ tạo một CDK agent. CDK là một Claude Development Kit. Vì vậy, đó là một cách để tạo infrastructure AWS thông qua code. Thông thường, nếu bạn muốn tạo infrastructure AWS, bạn có thể sử dụng thứ gì đó như CloudFormation, là một cách dựa trên YAML. Nhưng nếu là một developer, CDK được ưu tiên hơn vì bạn có thể tích hợp nó vào Python hoặc TypeScript code. Vì vậy, tôi sẽ trình bày một ví dụ về cách chúng ta có thể sử dụng Claude Code để tạo một Strand agent mới cho chúng ta. Và tôi tạo một file mới ở đây.
Được rồi, tôi đã tạo một file trống, hoàn toàn mới, không có gì trong đó. Và sau đó tôi sẽ hỏi Claude Code: "Cập nhật CDK agent để tạo một Strand agent kết nối với MCP server. Hãy xem các file khác để hiểu cách làm điều này." Vì vậy, tôi không cung cấp tài liệu cho nó. Tôi chỉ nói, "Hãy sử dụng kiến thức bạn đã có để hiểu cách tạo ra nó." Để tôi vào repo và hỏi Claude (trong Claude Code).
Vâng, bây giờ Claude Code sẽ xem xét. Chúng ta sẽ xem kế hoạch tấn công của nó. Hãy xem nó đang làm gì. "Được rồi, tôi sẽ cập nhật CDK agent thành Strand agent được kết nối với MCP server." Nó nhìn vào cái kia. Không có dòng code nào ở đó. Tôi đọc cái word count kia. Nó tìm thấy MCP dot một. Tôi đã xem xét nó và bỏ qua. Được rồi, chuyển sang cái tiếp theo. "Tạo một Strand agent và đặt tất cả code cho nó." Nó hỏi tôi có muốn thực hiện chỉnh sửa này không? Vì vậy, tôi nói có, hãy thực hiện chỉnh sửa. Thêm code vào tập tin. "Được rồi, cấu hình Strand agent, MCP client cấu hình system prompt." Nó đã làm xong. Hoàn hảo.
Vì vậy, bạn có thể đóng nó lại. Và điều tôi thích ở Claude Code, nó thực sự cho biết chi phí là bao nhiêu khi bạn hoàn thành nó. Tổng chi phí, thời gian API talk, bao nhiêu thay đổi code, mô hình AI nào nó đã sử dụng – nó đã sử dụng Claude 3.5. Nó sử dụng Claude 3.5 để hiểu cách tốt nhất. Vì vậy, sử dụng Claude Code của Bedrock là một cách dễ dàng để bắt đầu xây dựng các applications như thế này. Và bây giờ nó đã tích hợp nguyên bản trong VS Code. Điều này sẽ rất thú vị.
Hãy xem liệu code có thực sự hoạt động không. Vì vậy, tôi sẽ chạy nó. Hãy xem chuyên gia AWS CDK của bạn. Làm thế nào tôi có thể có một S3 bucket đơn giản với CDK? Hãy cho tôi một cái gì đó đơn giản. Hãy xem nó hoạt động như thế nào. Tôi đã nghĩ về CDK agent. Được rồi, tôi đang tạo một ví dụ TypeScript. Tôi sẽ cung cấp hướng dẫn từng bước. Nó đã viết code cho tôi. Nó đang thực hiện bảo mật đó, kiểm tra cái này, thêm quy tắc NAG. Vì vậy, nó thực sự hiểu CDK là gì. Nó đang đặt tất cả những thứ bổ sung này vào đó. Và vâng, bạn đã giải thích điều đó. Vì vậy, Claude Code đã có thể hiểu cách Strand agent hoạt động, tạo một agent mới dựa trên đó, tạo một template trên đó. Và nó rất dễ hiểu. Vì vậy, bằng cách cung cấp đủ context, Claude Code sẽ hiểu phải làm gì, tạo agent này. Làm rất tốt. Vì vậy, rất ấn tượng khi sử dụng Claude Code và Bedrock, điều đó cũng thật tuyệt vời.
Đó là toàn bộ workshop từ đầu đến cuối. Để cho bạn thấy Strand có thể làm gì, từ một weather agent đơn giản đến kết nối với MCP server cũng như tạo agent của riêng bạn. Và chúng ta sẽ tạm dừng ở đây để trả lời bất kỳ câu hỏi nào hoặc nếu bạn muốn xem một bản demonstration thú vị nào đó, tôi rất sẵn lòng thử và xem Claude (trong Claude Code) có thể làm gì.
Các trường hợp sử dụng của MCP
Tôi chỉ muốn hỏi, đâu là một số use case để sử dụng MCP? Tôi biết tôi sẽ xây dựng các agent có thể kết nối với thế giới bên ngoài thông qua API và tất cả. Có thể tôi không biết nhiều về MCP. Vậy thì, đâu là một số use case mà bạn có thể sử dụng MCP cho?
Đúng vậy, một câu hỏi tuyệt vời. Use case của MCP là gì? Theo mặc định, agent không có đủ thông tin để kết nối với API bên ngoài. Vì vậy, bạn đã thấy trong ví dụ, chúng ta đã tạo một sơ đồ AWS. Nếu tôi làm điều đó với MCP server, mô hình AI sẽ không biết cách tạo sơ đồ AWS. Nó sẽ không biết cách tra cứu tài liệu AWS. Vì vậy, việc cung cấp thêm context cho mô hình AI để thực hiện thêm hành động. Vì vậy, khi sử dụng mô hình ngôn ngữ lớn, context thực sự là yếu tố quyết định điều gì sẽ xảy ra. MCP cung cấp một cách có cấu trúc để lấy thông tin đó. Vì vậy, nó có thể thực hiện hành động, đọc tài liệu, kết nối với các applications bên ngoài. Vì vậy, MCP thực sự là một dạng "USB-C" (cổng kết nối đa năng), như người ta gọi nó, để kết nối LLM. Đối với tôi, đó là một cách tuyệt vời để kết nối các applications bên ngoài, lấy các context khác nhau cho mô hình AI của bạn.
Và tôi sẽ cho bạn thấy một số điểm nổi bật của AWS MCP server để bạn có thể hình dung ví dụ về những gì chúng ta có. Có một danh sách chính thức các AWS MCP server thực hiện nhiều thứ khác nhau. Vì vậy, tôi sẽ trình bày một số ví dụ. Bạn đã thấy cái documentation, Bedrock Knowledge Bases. Nếu bạn có nhiều PDFs, tài liệu mà bạn muốn cung cấp cho một LLM để phân tích chi phí. Vì vậy, nếu bạn muốn phân tích chi phí AWS, bạn muốn có một ví dụ khác. MCP server có thể hữu ích cho bạn. Amazon Nova Canvas, nếu bạn muốn vẽ hình ảnh. Nova Canvas, MCP server, cái diagram mà chúng ta đã sử dụng hôm nay cũng có thể vẽ kiến trúc AWS của bạn, sơ đồ AWS CloudFormation. Vì vậy, có rất nhiều loại khác nhau. Và Terraform, nếu bạn sử dụng Terraform, front-end code, bạn muốn chuyên về React hoặc sử dụng AWS Amplify, v.v. Vì vậy, có rất nhiều nguồn MCP server.
Một use case lớn là tôi muốn mô hình AI của mình hiểu những điều này. Bạn có rất nhiều tài liệu, Postgres database, Amazon Neptune database. Tóm lại, đây thực sự là sức mạnh của MCP, có rất nhiều integrations mà bạn có thể có để cung cấp cho mô hình AI những khả năng bổ sung. Chúng tôi có tín dụng AWS cho bạn. Vì vậy, nếu bạn muốn cung cấp cho chúng tôi một số feedback và khảo sát, tôi muốn bạn điền vào biểu mẫu này. Bạn sẽ nhận được 25 đô la tín dụng AWS mới để sử dụng. Vì vậy, bạn có thể thử nghiệm và khám phá một số điều. Cảm ơn bạn đã đến và hãy cùng xây dựng!