Build và ship một AI agent trong GitHub Copilot app
Từ một GitHub issue tới agent chạy trên website: dùng Microsoft Foundry skill và Foundry Canvas trong Copilot app để chọn model, build, test và deploy.
✓ Đã duyệt độc lập · cập nhật 25/10/2026 · 9 min
1. Khi bộ lọc không đủ: người dùng đến với một "vibe"
Người trình bày mở đầu bằng một nhận xét về bộ lọc (filter): filter rất tốt khi người dùng biết chính xác họ đang tìm gì. Nhưng rất nhiều người không đến với một filter trong đầu. Họ đến với một "vibe".

Ví dụ trong video (đăng ngày 23/10/2026) là Tailspin Toys, một trang crowdfunding cho các game có chủ đề dành cho developer. Trang có filter theo category và theo publisher. Theo người trình bày, các filter này hữu ích nhưng có giới hạn: không dropdown nào trên đời trả lời được câu hỏi "game nào hợp với một người mê chơi chữ về git (git puns)?".
Vì vậy, trong video (đăng ngày 23/10/2026), chị không rời khỏi GitHub Copilot app mà dùng Microsoft Foundry skill và Foundry Canvas để build một "backer concierge": một agent trả lời được những câu hỏi kiểu đó, và quan trọng nhất là không bao giờ nhầm lẫn thông tin. Rồi chị bắt tay vào làm.
2. Bắt đầu từ một GitHub issue trong Copilot app
Chị mở GitHub Copilot app, bắt đầu một agent session mới, và đính kèm issue yêu cầu tính năng này vào session. Việc đính kèm issue đưa ngay vào context ba thứ: problem statement, proposed solution (chính là agent cần build), và acceptance criteria. Acceptance criteria là thứ chị sẽ dùng để giữ Copilot đúng hướng ngay từ đầu (demo trong video đăng ngày 23/10/2026).

Trên màn hình (video đăng ngày 23/10/2026), acceptance criteria của issue gồm các dòng như: backer có thể hỏi bằng câu tự do về catalog và nhận gợi ý game; mọi gợi ý phải dựa trên catalog Tailspin, không có game, publisher, category hay star rating bịa ra; trợ lý từ chối nêu funding totals, backer counts, pledge tiers, prices hay release dates, và nói lý do.
3. Chuẩn bị dữ liệu: catalog.json và trust boundary
Việc đầu tiên là dữ liệu. Chị nhờ Copilot cài dependencies, seed database và chạy script export. Kết quả là một file duy nhất, catalog.json, chứa 21 game. Mỗi game có ID, title, description, category, publisher và star rating (demo trong video đăng ngày 23/10/2026).

db/catalog.json, rồi tóm tắt cấu trúc file và phần "Grounding limits": catalog không có funding totals, backer counts, player counts, pledge tiers, prices hay release dates; dữ liệu định lượng duy nhất là star rating (demo trong video đăng ngày 23/10/2026).Theo người trình bày (video đăng ngày 23/10/2026), thông tin bị thiếu cũng quan trọng không kém thông tin có trong file. Catalog không có funding totals, không có backer counts, không có prices, không có release dates. Khoảng trống đó chính là một trust boundary: nếu thứ gì không có trong catalog, agent phải nói thẳng như vậy. Chị mở nhanh file để xác nhận dữ liệu đã nằm đúng chỗ.
4. Tạo Azure resources bằng Microsoft Foundry skill
Tiếp theo, agent cần một nơi để "sống". Prompt của chị hướng Copilot dùng Microsoft Foundry skill để tạo một resource group và một Foundry project tên Tailspin Toys. Trong video (đăng ngày 23/10/2026), Copilot app nạp skill, kiểm tra Azure sign-in và các role của chị, rồi provision tài nguyên ở region North Central US. Resource group và Foundry project trên Azure đã sẵn sàng (demo trong video đăng ngày 23/10/2026).
Trên màn hình, Copilot còn ghi lại rằng starter template ban đầu đặt tên project là ai-project-tailspin-toys; để có đúng tên chị yêu cầu, nó đã chạy azd down --purge rồi provision lại với tên được override, và chỉ xoá những tài nguyên vừa tạo (demo trong video đăng ngày 23/10/2026).
5. Chọn model theo acceptance criteria của issue
Câu hỏi kế tiếp là dùng model nào. Theo người trình bày (video đăng ngày 23/10/2026), Foundry có hàng nghìn model để chọn, nên việc chọn có thể tốn rất nhiều công sức, và dễ dẫn tới chỗ chỉ đoán bừa. Thay vào đó, chị nhờ Copilot đọc lại GitHub issue, đề xuất hai hoặc ba chat model đáp ứng acceptance criteria, rồi chờ chị chọn. Chị cũng muốn xem các tradeoff đặt cạnh nhau trước khi deploy bất cứ thứ gì. Prompt chị gõ trên màn hình:
Use the Microsoft Foundry skill to recommend two or three chat model that meet this issue's acceptance criteria. Explain the tradeoffs and wait for me to choose
Copilot rút ra những tính năng then chốt mà kịch bản này cần: grounding, instruction following và tool use (demo trong video đăng ngày 23/10/2026). Chị lưu ý hai điểm.
Một, về grounding: theo Copilot trong demo, catalog chỉ khoảng 11 KB, đủ nhỏ để đưa thẳng vào prompt, nên Copilot kết luận không cần search index. Hai, về tool use: Copilot liệt kê web search như một yêu cầu, nhưng chị nói mình không thật sự cần và cũng không muốn thứ đó. Theo người trình bày (video đăng ngày 23/10/2026), ở giai đoạn này, cách để sửa những thông tin chưa chính xác là gửi thêm follow-up prompt.

Bản so sánh gồm ba model, và cả ba đều GA ở region của chị (theo demo, video đăng ngày 23/10/2026). Chị đọc tên là GPT 5.4 mini, GPT 5.5 và GPT 5.5 nano, còn trên màn hình bảng ghi gpt-5.4-mini, gpt-5.5 và gpt-5.4-nano. Theo nhận định của chị trong video: nano rẻ nhất nhưng dễ hụt trước yêu cầu grounding nghiêm ngặt, còn 5.5 thì quá mức cần thiết. Nên chị chọn mini.
6. Deploy model, mở Foundry Canvas và test model trực tiếp
Chị bảo Copilot deploy model đó, nhưng kiểm tra quota trước và để chị xác nhận throughput. Chị chọn 10.000 tokens per minute, mức đủ dùng cho kịch bản này, và theo video (đăng ngày 23/10/2026), chỉ vài giây sau model đã được deploy.
Đến đây, theo người trình bày, Copilot app làm một việc khác biệt (video đăng ngày 23/10/2026). Từ sessions panel, chị mở Microsoft Foundry Canvas, nơi cho phép xem và tương tác trực tiếp với các Foundry resource. Trên màn hình, Canvas mang nhãn "Microsoft Foundry (Preview)". Copilot đã tạo Foundry project từ trước, nên chị nạp project đó lên Canvas. Model vừa deploy cũng hiện ngay trong mục Models để chị kiểm tra (demo trong video đăng ngày 23/10/2026).
Chị deploy model này hoàn toàn dựa trên đề xuất của Copilot, nên trước khi build một agent bên trên nó, chị muốn test xem model xử lý kịch bản của mình tốt đến đâu. Chị nhờ Copilot gọi thẳng model, đưa catalog làm context, cùng một user prompt mẫu (demo trong video đăng ngày 23/10/2026). Prompt trên màn hình:
Use the Microsoft Foundry skill to test my deployed model directly in the tailspin-toys project without creating an agent. Ground it with content from db/catalog.json and ask: "I love puzzle games about tracking down bugs. What should I back, and how much funding has it raised?" Show me the response and useful metadata such as tokens used and response time, only if available. Use my existing Azure sign-in. Do not display credentials, change files, or create resources.
Rồi gặp blocker thật sự đầu tiên (demo trong video đăng ngày 23/10/2026): Copilot phát hiện chị cần thêm một role, chẳng hạn Cognitive Services OpenAI User, mới gọi được model trực tiếp, nên nó dừng lại và hỏi. Chị nhận xét Copilot hoàn toàn có thể tự áp dụng cách sửa mà không hỏi, và như thế cũng không sao, nhưng chị rất thích việc nó dừng lại hỏi trước, vì nhờ vậy chị nắm rõ hơn chuyện gì đang diễn ra.

az role assignment create và hỏi có nên gán role rồi chạy lại test không.Khi role đã được gán, user prompt test đi qua tới model đã deploy, và model trả về câu trả lời dùng dữ liệu thật từ catalog (demo trong video đăng ngày 23/10/2026).

7. Build hosted agent từ Canvas
Giờ là lúc build chính agent. Trong Canvas (demo trong video đăng ngày 23/10/2026), chị mở rộng mục "Set your starting prompt", chọn "Hello world", rồi thay starting prompt mặc định bằng prompt của mình: chị muốn một backer concierge chạy trên Microsoft Agent Framework, bị ràng buộc bởi acceptance criteria trong issue. Prompt trên màn hình:
Scaffold a hosted agent named Backer Concierge in agent/backer-concierge, connected to the tailspin-toys project and the model deployment I just confirmed. Use Microsoft Agent Framework with the Responses API. Ground it in db/catalog.json and ensure it meets the acceptance criteria in this issue. Keep a single azure.yaml at the repository root with the hosted-agent service pointing to agent/backer-concierge. Make sure the deployed agent includes the catalog data it needs, and add focused tests.

Nút "Create with Copilot" chuyển prompt đó sang session của chị, kèm theo context của project. Trong demo (video đăng ngày 23/10/2026), thay vì tự lắp code từ đầu, Copilot tìm và kéo về một sample gần với nhu cầu từ Foundry Gallery, tuỳ chỉnh nó, và vài phút sau báo rằng code của agent đã sẵn sàng.
Đúng như chị dặn, code của agent nằm trong folder agent, và có một file cấu hình azure.yaml trỏ tới code đó để deploy lên Foundry Agent Service thông qua host azure.ai.agent (demo trong video đăng ngày 23/10/2026).

azure.yaml trong demo (video đăng ngày 23/10/2026): service backer-concierge có project: agent/backer-concierge, host: azure.ai.agent, language python, một hook prepackage chạy npm run agent:sync-catalog. Bên trái, Copilot báo agent đã được scaffold, test và chạy local, chưa deploy và chưa commit gì.8. Inspect locally với Agent Inspector
Quay lại Canvas, mục "Build your agent" đã kết nối sẵn với agent của chị, và trong mục "Deploy & test", chị có thể inspect agent ở local trước khi deploy. Theo video (đăng ngày 23/10/2026), nút "Inspect Locally" chạy các lệnh agent qua Azure Developer CLI để khởi động agent, rồi mở Agent Inspector đã kết nối sẵn với agent đó.
Trong agent playground, chị test groundedness trước tiên, và model lấy đúng game từ catalog (demo trong video đăng ngày 23/10/2026). Chị chỉ cho người xem phần tóm tắt token usage và các tool call ở khung bên cạnh.

Prompt tiếp theo là một cái bẫy hallucination. Theo demo (video đăng ngày 23/10/2026), agent tôn trọng ranh giới đã đặt ra và chỉ đưa ra những gì nó biết.
Prompt thứ ba test độ chính xác. Chị thấy tên game thật, rating thật, và hành vi của agent đủ tốt, nên sẵn sàng deploy (demo trong video đăng ngày 23/10/2026). Chị thoát Agent Inspector và chọn deploy lên Foundry.

9. Deploy agent lên Foundry và test bản đã deploy
Một lần nữa, thao tác này gửi prompt cùng thông tin project của chị sang Copilot, và không lâu sau chị nhận xác nhận rằng agent đã live trong Foundry project (demo trong video đăng ngày 23/10/2026).
Rồi chị test agent đã deploy. Copilot gọi thẳng agent bằng extension azd ai, và nhận về câu trả lời (demo trong video đăng ngày 23/10/2026).

10. Azure Function proxy và chat widget trên website
Mảnh cuối cùng là đưa agent tới trước mặt người dùng. Theo video (đăng ngày 23/10/2026), website Tailspin Toys được pre-render hoàn toàn, không có server nào phía sau, nên trình duyệt không thể gọi agent trực tiếp, và trình duyệt cũng không bao giờ được giữ Foundry credentials.
Vì vậy chị nhờ Copilot build một Azure Function proxy nhỏ, chạy local, đặt trong folder api. Theo video (đăng ngày 23/10/2026), function này xác thực với Foundry bằng chính Azure sign-in của chị, gọi agent, và chỉ gửi câu trả lời về cho trình duyệt. Chị test nhanh lời gọi function đó và xem nó trả về gì.
Khi đã có ranh giới credential an toàn ở phía server, chị thêm một chat widget có hỗ trợ accessibility lên website, nối với API đó và theo đúng design guidance của site. Và thế là backer có thể trò chuyện trực tiếp với agent ngay trên website, lấy được thông tin chính xác ngay cả khi họ không biết rõ mình đang tìm gì (demo trong video đăng ngày 23/10/2026).

11. Tổng kết: mỗi bước bắt đầu bằng một prompt
Những backer đến với một "vibe" giờ đã có người để hỏi, và người đó chỉ trả lời từ catalog (theo demo trong video đăng ngày 23/10/2026). Chị điểm lại: test model về grounding, build và inspect một agent local, deploy nó lên Microsoft Foundry, rồi nối nó với website. Mỗi bước trong số đó đều bắt đầu bằng một prompt. Theo lời chị (video đăng ngày 23/10/2026), Copilot cùng Foundry skill và Foundry Canvas làm phần build, còn chị chỉ đưa ra quyết định.
Chị nhắc người xem xoá các Azure resource khi làm xong.
Nguồn và liên kết 5 nguồn
- Tên gốc: How to build and ship an AI agent in the GitHub Copilot app
- Sự kiện: YouTube
- Video gốc: https://www.youtube.com/watch?v=AT3EltQ4gTM youtube.com
- Kênh YouTube GitHub (GitHub): youtube.com/channel/UC7c3Kb6jYCRj4JOHHZTxKsQ youtube.com
- Workshop "Optional: Incorporate Foundry" của GitHub Copilot Workshops, phần dùng Microsoft Foundry Canvas trong GitHub Copilot app để thêm Backer Concierge cho Tailspin Toys; trang ghi Foundry Canvas và hosted agents đang ở public preview, workshop tạo Azure resource có tính phí, và có mục dọn dẹp resource (đọc ngày 25/10/2026): github-samples.github.io/copilot-workshops/real-world-development/app/8-foundry-canvas/ github-samples.github.io