1. Giới thiệu
Phòng thí nghiệm này tập trung vào việc triển khai và triển khai một dịch vụ tác nhân khách hàng. Bạn sẽ dùng Bộ phát triển tác nhân (ADK) để tạo một tác nhân AI sử dụng các công cụ.
Trong lớp học này, chúng ta sẽ xây dựng một tác nhân vườn thú sử dụng wikipedia để trả lời các câu hỏi về động vật.

Cuối cùng, chúng ta sẽ triển khai tác nhân hướng dẫn du lịch cho Cloud Run của Google, thay vì chỉ chạy cục bộ.
Điều kiện tiên quyết
- Một dự án trên Google Cloud đã bật tính năng thanh toán.
Kiến thức bạn sẽ học được
- Cách cấu trúc một dự án Python để triển khai ADK.
- Cách triển khai một tác nhân sử dụng công cụ bằng google-adk.
- Cách triển khai một ứng dụng Python dưới dạng vùng chứa không máy chủ vào Cloud Run.
- Cách định cấu hình phương thức xác thực an toàn giữa các dịch vụ bằng cách sử dụng vai trò IAM.
- Cách xoá tài nguyên trên Cloud để tránh phát sinh chi phí trong tương lai.
Bạn cần có
- Tài khoản Google Cloud và dự án trên Google Cloud
- Một trình duyệt web như Chrome
2. Tại sao nên triển khai lên Cloud Run?
Cloud Run là lựa chọn phù hợp để lưu trữ các tác nhân ADK vì đây là một nền tảng không máy chủ. Điều này có nghĩa là bạn có thể tập trung vào mã của mình thay vì quản lý cơ sở hạ tầng cơ bản. Chúng tôi sẽ xử lý công việc vận hành cho bạn.
Hãy coi đây như một cửa hàng tạm thời: cửa hàng này chỉ mở và sử dụng tài nguyên khi khách hàng (yêu cầu) đến. Khi không có khách hàng, cửa hàng sẽ đóng cửa hoàn toàn và bạn không phải trả tiền cho một cửa hàng trống.
Tính năng chính
Chạy vùng chứa ở mọi nơi:
- Bạn mang theo một vùng chứa (hình ảnh Docker) có ứng dụng của bạn bên trong.
- Cloud Run chạy ứng dụng đó trên cơ sở hạ tầng của Google.
- Không cần vá hệ điều hành, thiết lập máy ảo hoặc lo lắng về việc mở rộng quy mô.
Tự động mở rộng quy mô:
- Nếu không có người dùng nào sử dụng ứng dụng của bạn → 0 phiên bản chạy (giảm xuống 0 phiên bản để tiết kiệm chi phí).
- Nếu có 1.000 yêu cầu truy cập vào đó → nó sẽ tạo ra nhiều bản sao nếu cần.
Không trạng thái theo mặc định:
- Mỗi yêu cầu có thể chuyển đến một phiên bản khác.
- Nếu cần lưu trữ trạng thái, hãy sử dụng một dịch vụ bên ngoài như Cloud SQL, Firestore hoặc Memorystore.
Hỗ trợ mọi ngôn ngữ hoặc khung:
- Miễn là chạy trong một vùng chứa Linux, Cloud Run không quan tâm đến việc đó là Python, Go, Node.js, Java hay .Net.
Chỉ thanh toán cho những gì bạn sử dụng:
- Tính phí dựa trên yêu cầu: Tính phí theo mỗi yêu cầu + thời gian tính toán (xuống đến 100 mili giây).
- Thanh toán dựa trên phiên bản: Tính phí cho toàn bộ thời gian hoạt động của phiên bản (không tính phí theo yêu cầu).
3. Thiết lập dự án
Tài khoản Google
Nếu chưa có Tài khoản Google cá nhân, bạn phải tạo một Tài khoản Google.
Sử dụng tài khoản cá nhân thay vì tài khoản do nơi làm việc hoặc trường học cấp.
Đăng nhập vào Google Cloud Console
Đăng nhập vào Google Cloud Console bằng Tài khoản Google cá nhân.
Bật thanh toán
Thiết lập tài khoản thanh toán cá nhân
Nếu thiết lập thông tin thanh toán bằng tín dụng Google Cloud, bạn có thể bỏ qua bước này.
Để thiết lập tài khoản thanh toán cá nhân, hãy truy cập vào đây để bật tính năng thanh toán trong Cloud Console.
Một số lưu ý:
- Việc hoàn thành bài thực hành này sẽ tốn ít hơn 1 USD cho các tài nguyên trên đám mây.
- Bạn có thể làm theo các bước ở cuối bài thực hành này để xoá tài nguyên nhằm tránh bị tính thêm phí.
- Người dùng mới đủ điều kiện dùng thử miễn phí 300 USD.
Tạo dự án (không bắt buộc)
Nếu bạn không có dự án hiện tại muốn sử dụng cho lớp học này, hãy tạo một dự án mới tại đây.
4. Mở Trình chỉnh sửa Cloud Shell
- Nhấp vào đường liên kết này để chuyển trực tiếp đến Cloud Shell Editor
- Nếu được nhắc uỷ quyền vào bất kỳ thời điểm nào trong ngày hôm nay, hãy nhấp vào Uỷ quyền để tiếp tục.

- Nếu thiết bị đầu cuối không xuất hiện ở cuối màn hình, hãy mở thiết bị đầu cuối:
- Nhấp vào Xem
- Nhấp vào Terminal (Thiết bị đầu cuối)

5. Bật API
Để sử dụng Cloud Run, Artifact Registry, Cloud Build, Vertex AI và Compute Engine, bạn cần bật các API tương ứng trong dự án của mình trên Google Cloud.
- Trong thiết bị đầu cuối, hãy bật các API:
Khi quá trình này hoàn tất, bạn sẽ thấy kết quả như sau:gcloud services enable \ run.googleapis.com \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ aiplatform.googleapis.com \ compute.googleapis.comOperation "operations/acat.p2-[GUID]" finished successfully.
Giới thiệu về các API
- Cloud Run Admin API (
run.googleapis.com) cho phép bạn chạy các dịch vụ phụ trợ và giao diện người dùng, các công việc hàng loạt hoặc trang web trong một môi trường được quản lý hoàn toàn. Dịch vụ này xử lý cơ sở hạ tầng để triển khai và mở rộng quy mô các ứng dụng được triển khai bằng vùng chứa riêng. - Artifact Registry API (
artifactregistry.googleapis.com) cung cấp một kho lưu trữ riêng tư và an toàn để lưu trữ các hình ảnh vùng chứa. Đây là phiên bản nâng cấp của Container Registry và tích hợp liền mạch với Cloud Run và Cloud Build. - Cloud Build API (
cloudbuild.googleapis.com) là một nền tảng CI/CD không máy chủ, giúp chạy các bản dựng trên cơ sở hạ tầng của Google Cloud. Công cụ này được dùng để tạo hình ảnh vùng chứa trên đám mây từ Dockerfile. - Vertex AI API (
aiplatform.googleapis.com) cho phép ứng dụng đã triển khai của bạn giao tiếp với các mô hình Gemini để thực hiện các tác vụ AI cốt lõi. Nền tảng này cung cấp API hợp nhất cho tất cả các dịch vụ AI của Google Cloud. - Compute Engine API (
compute.googleapis.com) cung cấp các máy ảo bảo mật và có thể tuỳ chỉnh, chạy trên cơ sở hạ tầng của Google. Mặc dù Cloud Run được quản lý, nhưng Compute Engine API thường là một phần phụ thuộc cơ bản cho nhiều tài nguyên mạng và điện toán.
6. Chuẩn bị môi trường phát triển
Tạo thư mục
- Trong thiết bị đầu cuối, hãy tạo thư mục dự án và các thư mục con cần thiết:
cd && mkdir zoo_guide_agent && cd zoo_guide_agent - Trong cửa sổ dòng lệnh, hãy chạy lệnh sau để mở thư mục
zoo_guide_agenttrong trình khám phá Cloud Shell Editor:cloudshell open-workspace ~/zoo_guide_agent - Bảng điều khiển trình khám phá ở bên trái sẽ làm mới. Lúc này, bạn sẽ thấy thư mục mà mình đã tạo.
Thiết lập dự án
- Trong cửa sổ dòng lệnh, hãy thiết lập dự án bằng lệnh sau:
Ví dụ:gcloud config set project [PROJECT_ID]gcloud config set project lab-project-id-example
- Bạn sẽ thấy thông báo sau:
Updated property [core/project].
Yêu cầu về việc cài đặt
- Chạy lệnh sau trong dòng lệnh để tạo tệp
requirements.txt.cloudshell edit requirements.txt - Thêm nội dung sau vào tệp
requirements.txtvừa tạogoogle-adk==1.14.0 langchain-community==0.3.27 wikipedia==1.4.0 - Trong terminal, hãy tạo và kích hoạt một môi trường ảo bằng uv. Điều này đảm bảo các phần phụ thuộc của dự án không xung đột với Python hệ thống.
uv venv source .venv/bin/activate - Cài đặt các gói bắt buộc vào môi trường ảo trong thiết bị đầu cuối.
uv pip install -r requirements.txt
Thiết lập các biến môi trường
- Dùng lệnh sau trong thiết bị đầu cuối để tạo tệp
.env.# 1. Set the variables in your terminal first PROJECT_ID=$(gcloud config get-value project) PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") SA_NAME=lab2-cr-service # 2. Create the .env file using those variables cat <<EOF > .env PROJECT_ID=$PROJECT_ID PROJECT_NUMBER=$PROJECT_NUMBER SA_NAME=$SA_NAME SERVICE_ACCOUNT=${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com MODEL="gemini-2.5-flash" EOF
7. Tạo quy trình công việc của tác nhân
Tạo tệp __init__.py
- Tạo tệp init.py bằng cách chạy lệnh sau trong terminal:
Tệp này cho Python biết rằng thư mục zoo_guide_agent là một gói.cloudshell edit __init__.py - Thêm đoạn mã sau vào tệp
__init__.pymới:from . import agent
Tạo tệp agent.py
- Tạo tệp
agent.pychính bằng cách dán lệnh sau vào terminal.cloudshell edit agent.py - Nhập và thiết lập ban đầu: Thêm đoạn mã sau vào tệp
agent.pyhiện đang trống của bạn: Khối đầu tiên của tệpimport os import logging import google.cloud.logging from dotenv import load_dotenv from google.adk import Agent from google.adk.agents import SequentialAgent from google.adk.tools.tool_context import ToolContext from google.adk.tools.langchain_tool import LangchainTool from langchain_community.tools import WikipediaQueryRun from langchain_community.utilities import WikipediaAPIWrapper import google.auth import google.auth.transport.requests import google.oauth2.id_token # --- Setup Logging and Environment --- cloud_logging_client = google.cloud.logging.Client() cloud_logging_client.setup_logging() load_dotenv() model_name = os.getenv("MODEL")agent.pysẽ đưa tất cả các thư viện cần thiết từ ADK và Google Cloud vào. Thao tác này cũng thiết lập tính năng ghi nhật ký và tải các biến môi trường từ tệp.env. Đây là bước quan trọng để truy cập vào mô hình và URL máy chủ của bạn. - Xác định các công cụ: Một tác nhân chỉ hiệu quả khi có thể sử dụng các công cụ. Thêm mã sau vào cuối
agent.pyđể xác định các công cụ: Giới thiệu về các công cụ# Greet user and save their prompt def add_prompt_to_state( tool_context: ToolContext, prompt: str ) -> dict[str, str]: """Saves the user's initial prompt to the state.""" tool_context.state["PROMPT"] = prompt logging.info(f"[State updated] Added to PROMPT: {prompt}") return {"status": "success"} # Configuring the Wikipedia Tool wikipedia_tool = LangchainTool( tool=WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()) )add_prompt_to_state📝: Công cụ này ghi nhớ những gì khách tham quan sở thú hỏi. Khi khách truy cập hỏi "Sư tử ở đâu?", công cụ này sẽ lưu câu hỏi cụ thể đó vào bộ nhớ của nhân viên hỗ trợ để các nhân viên hỗ trợ khác trong quy trình làm việc biết cần nghiên cứu thông tin gì.
Cách thức: Đây là một hàm Python ghi câu lệnh của khách truy cập vào từ điểntool_context.statedùng chung. Ngữ cảnh công cụ này thể hiện bộ nhớ ngắn hạn của tác nhân cho một cuộc trò chuyện duy nhất. Tác nhân tiếp theo trong quy trình có thể đọc dữ liệu mà một tác nhân đã lưu vào trạng thái.LangchainTool🌍: Điều này giúp tác nhân hướng dẫn viên du lịch có kiến thức chung về thế giới. Khi khách truy cập đặt câu hỏi không có trong cơ sở dữ liệu của vườn thú, chẳng hạn như "Sư tử ăn gì trong tự nhiên?", công cụ này cho phép nhân viên tìm câu trả lời trên Wikipedia.
Cách thức: Công cụ này hoạt động như một bộ chuyển đổi, cho phép tác nhân của chúng ta sử dụng công cụ WikipediaQueryRun được tạo sẵn từ thư viện LangChain.
- Xác định các Đặc vụ chuyên trách: Thêm mã sau vào cuối
agent.pyđể xác định các đặc vụcomprehensive_researchervàresponse_formatter:# 1. Researcher Agent comprehensive_researcher = Agent( name="comprehensive_researcher", model=model_name, description="The primary researcher that can access both internal zoo data and external knowledge from Wikipedia.", instruction=""" You are a helpful research assistant. Your goal is to fully answer the user's PROMPT. You have access to two tools: 1. A tool for getting specific data about animals AT OUR ZOO (names, ages, locations). 2. A tool for searching Wikipedia for general knowledge (facts, lifespan, diet, habitat). First, analyze the user's PROMPT. - If the prompt can be answered by only one tool, use that tool. - If the prompt is complex and requires information from both the zoo's database AND Wikipedia, you MUST use both tools to gather all necessary information. - Synthesize the results from the tool(s) you use into preliminary data outputs. PROMPT: { PROMPT } """, tools=[ wikipedia_tool ], output_key="research_data" # A key to store the combined findings ) # 2. Response Formatter Agent response_formatter = Agent( name="response_formatter", model=model_name, description="Synthesizes all information into a friendly, readable response.", instruction=""" You are the friendly voice of the Zoo Tour Guide. Your task is to take the RESEARCH_DATA and present it to the user in a complete and helpful answer. - First, present the specific information from the zoo (like names, ages, and where to find them). - Then, add the interesting general facts from the research. - If some information is missing, just present the information you have. - Be conversational and engaging. RESEARCH_DATA: { research_data } """ )- Nhân viên
comprehensive_researcherlà "bộ não" của hoạt động này. Công cụ này lấy câu lệnh của người dùng từStateđược chia sẻ, kiểm tra xem đó có phải là Công cụ Wikipedia hay không và quyết định sử dụng công cụ nào để tìm câu trả lời. - Vai trò của nhân viên hỗ trợ
response_formatterlà trình bày. Nó lấy dữ liệu thô do tác nhân Researcher thu thập (được truyền qua State) và sử dụng kỹ năng ngôn ngữ của LLM để chuyển đổi dữ liệu đó thành một câu trả lời thân thiện, mang tính trò chuyện.
- Nhân viên
- Xác định tác nhân Quy trình làm việc: Thêm khối mã này vào cuối
agent.pyđể xác định tác nhân tuần tựtour_guide_workflow: Tác nhân quy trình công việc đóng vai trò là người quản lý "hậu trường" cho chuyến tham quan vườn thú. Nó nhận yêu cầu nghiên cứu và đảm bảo rằng 2 tác nhân mà chúng ta đã xác định ở trên thực hiện công việc của mình theo đúng thứ tự: đầu tiên là nghiên cứu, sau đó là định dạng. Điều này tạo ra một quy trình đáng tin cậy và dễ dự đoán để trả lời câu hỏi của khách truy cập.tour_guide_workflow = SequentialAgent( name="tour_guide_workflow", description="The main workflow for handling a user's request about an animal.", sub_agents=[ comprehensive_researcher, # Step 1: Gather all data response_formatter, # Step 2: Format the final response ] )
Cách thức: Đây là mộtSequentialAgent, một loại tác nhân đặc biệt không tự suy nghĩ. Công việc duy nhất của nó là chạy danh sáchsub_agents(nhà nghiên cứu và người định dạng) theo một trình tự cố định, tự động truyền bộ nhớ dùng chung từ người này sang người khác. - Tập hợp quy trình làm việc chính: Thêm khối mã cuối cùng này vào cuối
agent.pyđể xác địnhroot_agent: Khung ADK sử dụngroot_agent = Agent( name="greeter", model=model_name, description="The main entry point for the Zoo Tour Guide.", instruction=""" - Let the user know you will help them learn about the animals we have in the zoo. - When the user responds, use the 'add_prompt_to_state' tool to save their response. After using the tool, transfer control to the 'tour_guide_workflow' agent. """, tools=[add_prompt_to_state], sub_agents=[tour_guide_workflow] )root_agentlàm điểm bắt đầu cho tất cả các cuộc trò chuyện mới. Vai trò chính của nó là điều phối quy trình tổng thể. Nó đóng vai trò là bộ điều khiển ban đầu, quản lý lượt đầu tiên của cuộc trò chuyện.

Tệp agent.py đầy đủ
Tệp agent.py của bạn hiện đã hoàn tất! Bằng cách xây dựng theo cách này, bạn có thể thấy cách mỗi thành phần (công cụ, tác nhân nhân viên và tác nhân quản lý) có một vai trò cụ thể trong việc tạo ra hệ thống thông minh cuối cùng.
Tệp hoàn chỉnh sẽ có dạng như sau:
import os
import logging
import google.cloud.logging
from dotenv import load_dotenv
from google.adk import Agent
from google.adk.agents import SequentialAgent
from google.adk.tools.tool_context import ToolContext
from google.adk.tools.langchain_tool import LangchainTool
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
import google.auth
import google.auth.transport.requests
import google.oauth2.id_token
# --- Setup Logging and Environment ---
cloud_logging_client = google.cloud.logging.Client()
cloud_logging_client.setup_logging()
load_dotenv()
model_name = os.getenv("MODEL")
# Greet user and save their prompt
def add_prompt_to_state(
tool_context: ToolContext, prompt: str
) -> dict[str, str]:
"""Saves the user's initial prompt to the state."""
tool_context.state["PROMPT"] = prompt
logging.info(f"[State updated] Added to PROMPT: {prompt}")
return {"status": "success"}
# Configuring the Wikipedia Tool
wikipedia_tool = LangchainTool(
tool=WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
)
# 1. Researcher Agent
comprehensive_researcher = Agent(
name="comprehensive_researcher",
model=model_name,
description="The primary researcher that can access both internal zoo data and external knowledge from Wikipedia.",
instruction="""
You are a helpful research assistant. Your goal is to fully answer the user's PROMPT.
You have access to two tools:
1. A tool for getting specific data about animals AT OUR ZOO (names, ages, locations).
2. A tool for searching Wikipedia for general knowledge (facts, lifespan, diet, habitat).
First, analyze the user's PROMPT.
- If the prompt can be answered by only one tool, use that tool.
- If the prompt is complex and requires information from both the zoo's database AND Wikipedia,
you MUST use both tools to gather all necessary information.
- Synthesize the results from the tool(s) you use into preliminary data outputs.
PROMPT:
{ PROMPT }
""",
tools=[
wikipedia_tool
],
output_key="research_data" # A key to store the combined findings
)
# 2. Response Formatter Agent
response_formatter = Agent(
name="response_formatter",
model=model_name,
description="Synthesizes all information into a friendly, readable response.",
instruction="""
You are the friendly voice of the Zoo Tour Guide. Your task is to take the
RESEARCH_DATA and present it to the user in a complete and helpful answer.
- First, present the specific information from the zoo (like names, ages, and where to find them).
- Then, add the interesting general facts from the research.
- If some information is missing, just present the information you have.
- Be conversational and engaging.
RESEARCH_DATA:
{ research_data }
"""
)
tour_guide_workflow = SequentialAgent(
name="tour_guide_workflow",
description="The main workflow for handling a user's request about an animal.",
sub_agents=[
comprehensive_researcher, # Step 1: Gather all data
response_formatter, # Step 2: Format the final response
]
)
root_agent = Agent(
name="greeter",
model=model_name,
description="The main entry point for the Zoo Tour Guide.",
instruction="""
- Let the user know you will help them learn about the animals we have in the zoo.
- When the user responds, use the 'add_prompt_to_state' tool to save their response.
After using the tool, transfer control to the 'tour_guide_workflow' agent.
""",
tools=[add_prompt_to_state],
sub_agents=[tour_guide_workflow]
)
Tiếp theo là triển khai!
8. Chuẩn bị ứng dụng để triển khai
Kiểm tra cấu trúc cuối cùng
Trước khi triển khai, hãy xác minh rằng thư mục dự án của bạn chứa các tệp chính xác.
- Đảm bảo thư mục
zoo_guide_agentcủa bạn có dạng như sau:zoo_guide_agent/ ├── .env ├── __init__.py ├── agent.py └── requirements.txt
Thiết lập quyền IAM
Khi mã cục bộ đã sẵn sàng, bước tiếp theo là thiết lập danh tính mà tác nhân của bạn sẽ sử dụng trên đám mây.
- Trong thiết bị đầu cuối, hãy tải các biến vào phiên shell.
source .env - Tạo một tài khoản dịch vụ riêng cho dịch vụ Cloud Run để tài khoản đó có quyền cụ thể riêng. Dán nội dung sau vào terminal:
Bằng cách tạo một danh tính riêng cho ứng dụng cụ thể này, bạn đảm bảo rằng tác nhân chỉ có những quyền chính xác mà tác nhân cần, thay vì sử dụng một tài khoản mặc định có quyền truy cập quá rộng.gcloud iam service-accounts create ${SA_NAME} \ --display-name="Service Account for lab 2 " - Cấp cho tài khoản dịch vụ vai trò Người dùng Vertex AI để cấp cho tài khoản đó quyền gọi các mô hình của Google.
# Grant the "Vertex AI User" role to your service account gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role="roles/aiplatform.user"
9. Triển khai tác nhân bằng ADK CLI
Khi mã cục bộ đã sẵn sàng và dự án của bạn trên Google Cloud đã được chuẩn bị, đã đến lúc triển khai tác nhân. Bạn sẽ sử dụng lệnh adk deploy cloud_run, một công cụ tiện lợi giúp tự động hoá toàn bộ quy trình triển khai. Lệnh duy nhất này sẽ đóng gói mã của bạn, tạo một hình ảnh vùng chứa, đẩy hình ảnh đó lên Artifact Registry và khởi chạy dịch vụ trên Cloud Run, giúp bạn truy cập vào dịch vụ này trên web.
- Chạy lệnh sau trong dòng lệnh để triển khai tác nhân.
Lệnh# Run the deployment command uvx --from google-adk \ adk deploy cloud_run \ --project=$PROJECT_ID \ --region=europe-west1 \ --service_name=zoo-tour-guide \ --with_ui \ . \ -- \ --labels=dev-tutorial=codelab-adk \ --service-account=$SERVICE_ACCOUNTuvxcho phép bạn chạy các công cụ dòng lệnh được xuất bản dưới dạng các gói Python mà không cần cài đặt các công cụ đó trên toàn cầu. - Nếu bạn thấy lời nhắc sau:
Nếu có, hãy nhậpDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [europe-west1] will be created. Do you want to continue (Y/n)?
Yrồi nhấn ENTER. - Nếu bạn thấy lời nhắc sau:
NhậpAllow unauthenticated invocations to [your-service-name] (y/N)?.
yrồi nhấn ENTER. Điều này cho phép các lệnh gọi chưa được xác thực cho phòng thí nghiệm này để dễ dàng kiểm thử. Sau khi thực thi thành công, lệnh này sẽ cung cấp URL của dịch vụ Cloud Run đã triển khai. (Thẻ này sẽ có dạng nhưhttps://zoo-tour-guide-123456789.europe-west1.run.app). - Sao chép URL của dịch vụ Cloud Run đã triển khai cho tác vụ tiếp theo.
10. Kiểm thử nhân viên hỗ trợ đã triển khai
Giờ đây, khi nhân viên hỗ trợ của bạn đang hoạt động trên Cloud Run, bạn sẽ thực hiện một bài kiểm thử để xác nhận rằng quá trình triển khai đã thành công và nhân viên hỗ trợ đang hoạt động như dự kiến. Bạn sẽ sử dụng URL dịch vụ công khai (chẳng hạn như https://zoo-tour-guide-123456789.europe-west1.run.app/) để truy cập vào giao diện web của ADK và tương tác với tác nhân.
- Mở URL của dịch vụ Cloud Run công khai trong trình duyệt web. Vì bạn đã dùng
--with_ui flag, nên bạn sẽ thấy giao diện người dùng dành cho nhà phát triển ADK. - Bật
Token Streamingở trên cùng bên phải.
Giờ đây, bạn có thể tương tác với tác nhân Zoo. - Nhập
hellorồi nhấn phím Enter để bắt đầu một cuộc trò chuyện mới. - Quan sát kết quả. Trợ lý ảo phải nhanh chóng phản hồi bằng lời chào, chẳng hạn như:
"Hello! I'm your Zoo Tour Guide. I can help you learn about the amazing animals we have here. What would you like to know or explore today?"
- Đặt cho nhân viên hỗ trợ những câu hỏi như:
Where can I find the polar bears in the zoo and what is their diet?

Giải thích về luồng tác nhân
Hệ thống của bạn hoạt động như một nhóm gồm nhiều tác nhân thông minh. Quy trình này được quản lý theo một trình tự rõ ràng để đảm bảo luồng thông tin diễn ra suôn sẻ và hiệu quả từ câu hỏi của người dùng đến câu trả lời chi tiết cuối cùng.
1. Nhân viên đón tiếp tại sở thú (Quầy đón tiếp)
Toàn bộ quy trình bắt đầu bằng nhân viên chào hỏi.
- Công việc của nó: Bắt đầu cuộc trò chuyện. Hướng dẫn của ứng dụng là chào người dùng và hỏi họ muốn tìm hiểu về loài động vật nào.
- Công cụ của nó: Khi người dùng trả lời, Greeter sẽ sử dụng công cụ add_prompt_to_state để ghi lại chính xác những gì họ nói (ví dụ: cho tôi biết về sư tử") và lưu chúng vào bộ nhớ của hệ thống.
- Handoff (Bàn giao): Sau khi lưu câu lệnh, câu lệnh này sẽ ngay lập tức chuyển quyền kiểm soát cho tác nhân phụ của nó là tour_guide_workflow.
2. Nhà nghiên cứu toàn diện (Nhà siêu nghiên cứu)
Đây là bước đầu tiên trong quy trình chính và là "bộ não" của hoạt động. Thay vì một nhóm lớn, giờ đây bạn có một nhân viên hỗ trợ duy nhất có kỹ năng cao và có thể truy cập vào tất cả thông tin hiện có.
- Công việc của nó: Phân tích câu hỏi của người dùng và đưa ra một kế hoạch thông minh. Công cụ này sử dụng khả năng sử dụng công cụ của mô hình ngôn ngữ để quyết định xem có cần:
- Kiến thức chung trên web (thông qua API Wikipedia).
- Hoặc cả hai đối với các câu hỏi phức tạp.
3. Trình định dạng phản hồi (Trình bày)
Sau khi Nhà nghiên cứu toàn diện thu thập tất cả thông tin, đây là tác nhân cuối cùng cần chạy.
- Công việc: Đóng vai trò là giọng nói thân thiện của Hướng dẫn viên tham quan vườn thú. Thao tác này lấy dữ liệu thô (có thể từ một hoặc cả hai nguồn) và tinh chỉnh dữ liệu đó.
- Hành động của Gemini: Tổng hợp tất cả thông tin thành một câu trả lời duy nhất, mạch lạc và hấp dẫn. Theo hướng dẫn này, trước tiên, mô hình sẽ trình bày thông tin cụ thể về vườn thú, sau đó thêm các thông tin chung thú vị.
- Kết quả cuối cùng: Văn bản do tác nhân này tạo là câu trả lời đầy đủ và chi tiết mà người dùng thấy trong cửa sổ trò chuyện.
Nếu bạn muốn tìm hiểu thêm về cách tạo Đặc vụ, hãy tham khảo các tài nguyên sau:
11. Dọn dẹp môi trường
Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án rồi xoá từng tài nguyên.
Xoá các dịch vụ và hình ảnh Cloud Run
Nếu muốn giữ lại dự án trên Google Cloud nhưng xoá các tài nguyên cụ thể được tạo trong phòng thí nghiệm này, bạn phải xoá cả dịch vụ đang chạy và hình ảnh vùng chứa được lưu trữ trong sổ đăng ký.
- Chạy các lệnh sau trong terminal:
gcloud run services delete zoo-tour-guide --region=europe-west1 --quiet gcloud artifacts repositories delete cloud-run-source-deploy --location=europe-west1 --quiet
Xoá dự án (Không bắt buộc)
Nếu bạn đã tạo một dự án mới dành riêng cho lớp học này và không có ý định sử dụng lại, thì cách dọn dẹp dễ nhất là xoá toàn bộ dự án. Thao tác này đảm bảo tất cả tài nguyên (bao gồm cả Tài khoản dịch vụ và mọi cấu phần phần mềm ẩn) đều bị xoá hoàn toàn.
- Trong terminal, hãy chạy lệnh sau (thay [YOUR_PROJECT_ID] bằng mã dự án thực tế của bạn)
gcloud projects delete $PROJECT_ID
12. Xin chúc mừng
Bạn đã tạo và triển khai thành công một ứng dụng AI có nhiều tác nhân lên Google Cloud!
Tóm tắt
Trong phòng thí nghiệm này, bạn đã chuyển từ một thư mục trống sang một dịch vụ AI đang hoạt động và có thể truy cập công khai. Sau đây là những gì bạn đã tạo:
- Bạn đã tạo một nhóm chuyên trách: Thay vì một AI chung chung, bạn đã tạo một "Nhà nghiên cứu" để tìm thông tin thực tế và một "Người định dạng" để chỉnh sửa câu trả lời.
- Bạn đã cung cấp cho họ các công cụ: Bạn đã kết nối các tác nhân của mình với thế giới bên ngoài bằng Wikipedia API.
- Bạn đã hoàn tất: Bạn đã lấy mã Python cục bộ và triển khai mã đó dưới dạng một vùng chứa không máy chủ trên Cloud Run, đồng thời bảo mật mã đó bằng một Tài khoản dịch vụ chuyên dụng.
Nội dung đã đề cập
- Cách cấu trúc một dự án Python để triển khai bằng ADK.
- Cách triển khai quy trình làm việc có nhiều tác nhân bằng cách sử dụng
[SequentialAgent](https://google.github.io/adk-docs/agents/workflow-agents/sequential-agents/). - Cách tích hợp các công cụ bên ngoài như Wikipedia API.
- Cách triển khai một tác nhân đến Cloud Run bằng lệnh
adk deploy.
13. Khảo sát
Kết quả: