1. Trước khi bắt đầu
Chào mừng bạn đến với phần thứ hai của loạt video "Xây dựng các tác nhân AI bằng ADK"! Trong lớp học lập trình thực hành này, bạn sẽ trang bị cho một tác nhân AI cơ bản nhiều công cụ.
Để bắt đầu, hướng dẫn này cung cấp 2 lộ trình: một dành cho những người tiếp tục từ lớp học lập trình " Xây dựng các tác nhân AI bằng ADK: Nền tảng" và một dành cho những người mới bắt đầu. Cả hai cách này đều đảm bảo bạn có mã cơ sở cần thiết của nhân viên hỗ trợ để bắt đầu.
Khi kết thúc lớp học lập trình này, bạn sẽ trang bị cho trợ lý cá nhân của mình các công cụ cho nhiều mục đích, tiến thêm một bước để mở rộng trong các phần tiếp theo của loạt bài này khi chúng ta biến trợ lý đó thành một Hệ thống đa tác nhân (MAS) tinh vi.
Điều kiện tiên quyết
- Hiểu rõ về các khái niệm về AI tạo sinh
- Có kiến thức cơ bản về lập trình Python
- Hoàn thành lớp học lập trình Xây dựng các tác nhân AI bằng ADK: Nền tảng hoặc lớp học tương tự
Kiến thức bạn sẽ học được
- Cung cấp cho tác nhân của bạn các kỹ năng mới bằng cách tạo các hàm Python tuỳ chỉnh dưới dạng công cụ.
- Kết nối tác nhân của bạn với thông tin theo thời gian thực bằng các công cụ tích hợp sẵn như Google Tìm kiếm.
- Cấu trúc một tác nhân đa công cụ bằng cách tạo các tác nhân phụ chuyên biệt cho các tác vụ phức tạp.
- Tích hợp các công cụ từ các khung AI phổ biến như LangChain để nhanh chóng mở rộng các chức năng.
Bạn cần có
- Máy tính hoạt động và Wi-Fi đáng tin cậy
- Một trình duyệt, chẳng hạn như Chrome, để truy cập vào Google Cloud Console
- Có trí tò mò và ham học hỏi
Sử dụng tài khoản thanh toán dùng thử
Để hoàn tất lớp học lập trình này, bạn cũng cần có một tài khoản thanh toán đang hoạt động trên Google Cloud. Nếu bạn chưa có tài khoản thanh toán dùng thử, hãy làm theo các bước sau để đổi:
- Mở một cửa sổ ẩn danh trên trình duyệt
- Truy cập vào cổng nhận phần thưởng này
- Đăng nhập bằng tài khoản Gmail cá nhân
- Làm theo hướng dẫn từng bước trên cổng thông tin
2. Giới thiệu
Một tác nhân cơ bản được xây dựng bằng ADK có một LLM mạnh mẽ, nhưng cũng có những hạn chế: tác nhân này không thể truy cập vào thông tin được tạo sau ngày huấn luyện và không thể tương tác với các dịch vụ bên ngoài. Giống như một trợ lý thông minh, hiểu biết bị mắc kẹt trong thư viện mà không có điện thoại hoặc Internet. Để một trợ lý ảo thực sự hữu ích, chúng ta cần cung cấp cho trợ lý đó các công cụ.
Hãy coi các công cụ như việc cấp cho trợ lý AI quyền truy cập vào thế giới bên ngoài: máy tính, trình duyệt web hoặc quyền truy cập vào một cơ sở dữ liệu cụ thể của công ty. Trong ADK, công cụ là một đoạn mã theo mô-đun cho phép tác nhân thực hiện các hành động cụ thể như tra cứu dữ liệu theo thời gian thực hoặc gọi một API bên ngoài. Việc sử dụng các công cụ giúp AI đàm thoại có khả năng vượt xa một cuộc trò chuyện đơn thuần.
ADK cung cấp 3 danh mục công cụ:
- Công cụ chức năng: Các công cụ tuỳ chỉnh mà bạn phát triển để đáp ứng các yêu cầu riêng của ứng dụng, chẳng hạn như các hàm và tác nhân được xác định trước.
- Công cụ tích hợp: Các công cụ có sẵn do khung cung cấp cho các thao tác phổ biến, chẳng hạn như Google Tìm kiếm và Thực thi mã.
- Công cụ của bên thứ ba: Các thư viện bên ngoài phổ biến như Serper và các công cụ của LangChain và CrewAI.
Để tìm hiểu thêm về cách sử dụng Công cụ với ADK Agents, hãy xem tài liệu chính thức. Trong lớp học lập trình này, chúng ta sẽ thêm các công cụ để biến tác nhân đơn giản của mình thành một trợ lý du lịch cá nhân có năng lực. Bắt đầu nào!
3. Bắt đầu: Nhân viên hỗ trợ cơ bản
Trước khi có thể trang bị cho một nhân viên hỗ trợ các công cụ, bạn cần có một nhân viên hỗ trợ cơ bản để làm việc. Chọn lộ trình phù hợp nhất với tiến trình của bạn.
Lộ trình A: Tiếp tục từ Lớp học lập trình cơ bản
Nếu vừa hoàn thành lớp học lập trình " Xây dựng các tác nhân AI bằng ADK: Nền tảng", thì bạn không cần làm gì thêm. Bạn có thể tiếp tục làm việc trong thư mục dự án ai-agents-adk
hiện có.
Lộ trình B: Bắt đầu từ đầu
Nếu bạn bắt đầu lớp học lập trình này ngay, hãy hoàn tất 4 bước sau để thiết lập môi trường và tạo tác nhân khởi đầu cần thiết.
- Định cấu hình các dịch vụ của Google Cloud
- Tạo môi trường ảo Python
- Tạo nhân viên hỗ trợ
- Chạy tác nhân trên Giao diện người dùng phát triển
Sau khi hoàn tất các bước này, bạn đã sẵn sàng bắt đầu hành trình học tập của mình.
4. Xây dựng một Công cụ tuỳ chỉnh để trao đổi tiền tệ
Ở giai đoạn này, bạn đã biết cách tạo một tác nhân AI đơn giản bằng ADK và chạy tác nhân đó trên Giao diện người dùng phát triển.
Giả sử bạn đang chuẩn bị cho chuyến đi đến Nhật Bản vào tháng tới và cần kiểm tra tỷ giá hối đoái hiện tại. Hỏi trợ lý "Tỷ giá hối đoái từ đô la Singapore sang yên Nhật là bao nhiêu?"
Bạn sẽ thấy rằng trợ lý không thể truy xuất tỷ giá hối đoái theo thời gian thực. Lý do là vì hiện tại, trợ lý không có quyền truy cập vào Internet và không kết nối được với hệ thống bên ngoài. Ngay cả khi tác nhân trả lời bằng một giá trị, bạn khó có thể tin tưởng giá trị đó vì có khả năng đó là thông tin ảo.
Để giải quyết vấn đề này, chúng ta sẽ triển khai một hàm Python để truy xuất tỷ giá hối đoái thông qua một REST API và tích hợp hàm này dưới dạng một Công cụ hàm cho tác nhân.
Kết thúc quy trình tác nhân đang chạy bằng cách sử dụng phím tắt Ctrl + C trong cửa sổ dòng lệnh.
Tạo tệp custom_functions.py
Tạo một tệp Python có tên custom_functions.py
trong thư mục personal_assistant
bằng cách nhập lệnh này vào cửa sổ dòng lệnh.
touch personal_assistant/custom_functions.py
Cấu trúc thư mục của bạn sẽ có dạng như sau:
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py └── custom_functions.py
Mở custom_functions.py
trên Trình soạn thảo mã. Tệp này sẽ chứa hàm Python chịu trách nhiệm truy xuất dữ liệu tỷ giá hối đoái từ một API bên ngoài.
Sao chép và dán mã sau đây vào bên trong:
import requests
# define a function to get exchange rate
def get_fx_rate(base: str, target: str):
"""
Fetches the current exchange rate between two currencies.
Args:
base: The base currency (e.g., "SGD").
target: The target currency (e.g., "JPY").
Returns:
The exchange rate information as a json response,
or None if the rate could not be fetched.
"""
base_url = "https://hexarate.paikama.co/api/rates/latest"
api_url = f"{base_url}/{base}?target={target}"
response = requests.get(api_url)
if response.status_code == 200:
return response.json()
Bây giờ, hãy chỉnh sửa tệp agent.py
: nhập hàm get_fx_rate
và chỉ định hàm này làm FunctionTool
.
Cập nhật tệp agent.py
Sao chép khối mã này và thay thế nội dung hiện có của tệp agent.py
:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from .custom_functions import get_fx_rate
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
tools=[FunctionTool(get_fx_rate)]
)
Sau khi thay đổi, hãy khởi động lại tác nhân bằng cách nhập:
adk web
Khi trợ lý hoạt động, hãy hỏi lại câu hỏi tương tự: "Tỷ giá hối đoái từ đô la Singapore sang yên Nhật là bao nhiêu?"
Lần này, bạn sẽ thấy tỷ giá hối đoái thực tế do công cụ get_fx_rate
cung cấp.
Bạn có thể đặt bất kỳ câu hỏi nào liên quan đến việc đổi ngoại tệ.
5. Tích hợp với Công cụ tìm kiếm của Google được tích hợp sẵn
Giờ đây, khi có thể cung cấp tỷ giá hối đoái, tác vụ tiếp theo là lấy thông tin dự báo thời tiết của tháng tới. Đặt câu hỏi này cho trợ lý: "Thời tiết ở Tokyo, Nhật Bản vào tháng tới như thế nào?"
Như bạn có thể thấy, thông tin dự báo thời tiết cần có thông tin theo thời gian thực mà nhân viên hỗ trợ của chúng tôi không có. Mặc dù có thể viết mã các hàm Python mới cho từng trường hợp sử dụng yêu cầu dữ liệu theo thời gian thực, nhưng việc thêm ngày càng nhiều công cụ tuỳ chỉnh sẽ nhanh chóng khiến tác nhân trở nên quá phức tạp và khó quản lý.
Rất may là Bộ công cụ phát triển (ADK) của Trợ lý cung cấp một bộ Công cụ tích hợp sẵn, bao gồm cả Google Tìm kiếm, sẵn sàng sử dụng, giúp đơn giản hoá cách trợ lý của chúng tôi tương tác với thế giới bên ngoài. Hãy thêm một công cụ Google Tìm kiếm vào trợ lý ảo của chúng ta bằng cách chỉnh sửa tệp agent.py
như sau:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import google_search
from .custom_functions import get_fx_rate
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
tools=[
FunctionTool(get_fx_rate),
google_search,
]
)
Sau khi bạn chỉnh sửa tệp, hãy khởi động lại phiên bản adk web
. Phòng trường hợp bạn quên,
- Nhấp vào thiết bị đầu cuối, nhấn Ctrl + C để dừng phiên bản
uv run adk web
để khởi động phiên bản- Thử hỏi cùng một câu hỏi: "Dự báo thời tiết ở Tokyo, Nhật Bản vào tháng tới như thế nào?"
Lúc này, bạn sẽ nhận được phản hồi kèm theo thông tin theo thời gian thực.
Bạn cũng có thể triển khai một mẫu nhiều tác nhân cho việc này. Trước tiên, hãy tạo một tác nhân chuyên biệt có nhiệm vụ duy nhất là thực hiện các tìm kiếm trên Google. Sau đó, chúng tôi chỉ định Google Search Agent mới này cho personal_assistant
chính của mình dưới dạng một công cụ. Sau đây là các bước:
Tạo tệp custom_agents.py
Bây giờ, hãy tạo một tệp Python có tên custom_agents.py
trong thư mục personal_assistant
bằng cách thực thi lệnh sau trong thiết bị đầu cuối:
touch personal_assistant/custom_agents.py
Cấu trúc thư mục của bạn hiện sẽ có dạng như sau:
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py ├── custom_functions.py └── custom_agents.py
Tệp này sẽ chứa mã cho google_search_agent
chuyên biệt. Sao chép mã sau đây vào tệp custom_agents.py
bằng Code Editor (Trình chỉnh sửa mã).
from google.adk.agents import Agent
from google.adk.tools import google_search
# Create an agent with google search tool as a search specialist
google_search_agent = Agent(
model='gemini-2.5-flash',
name='google_search_agent',
description='A search agent that uses google search to get latest information about current events, weather, or business hours.',
instruction='Use google search to answer user questions about real-time, logistical information.',
tools=[google_search],
)
Sau khi tạo tệp, hãy cập nhật tệp agent.py
như minh hoạ dưới đây.
Cập nhật tệp agent.py
Sao chép khối mã này và thay thế nội dung hiện có của tệp agent.py
:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools.agent_tool import AgentTool
from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
tools=[
FunctionTool(get_fx_rate),
AgentTool(agent=google_search_agent),
]
)
Hãy phân tích mẫu mới mạnh mẽ trong mã:
- Một tác nhân chuyên trách mới: Chúng tôi đã xác định một tác nhân hoàn toàn mới là
google_search_agent
. Lưu ý nội dung mô tả cụ thể và công cụ duy nhất của thẻ này làgoogle_search
. Đây là một chuyên gia về tìm kiếm. agent_tool.AgentTool
: Đây là một trình bao bọc đặc biệt từ ADK. Công cụ này lấy toàn bộ một tác nhân (google_search_agent của chúng tôi) và đóng gói tác nhân đó để trông giống như một công cụ tiêu chuẩn.- Thông minh hơn **
root_agent
**:root_agent
của chúng tôi hiện có một công cụ mới:AgentTool(agent=google_search_agent)
. Mô hình này không biết cách tìm kiếm trên web, nhưng biết rằng mình có một công cụ có thể uỷ quyền các tác vụ tìm kiếm.
Lưu ý rằng trường chỉ dẫn đã biến mất khỏi root_agent
. Giờ đây, các chỉ dẫn của công cụ này được xác định ngầm bằng những công cụ mà nó có.
root_agent
đã trở thành một trình điều phối hoặc bộ định tuyến, có nhiệm vụ chính là hiểu yêu cầu của người dùng và chuyển yêu cầu đó đến đúng công cụ, có thể là hàm get_fx_rate
hoặc google_search_agent
. Thiết kế phi tập trung này là chìa khoá để xây dựng các hệ thống tác nhân phức tạp và dễ bảo trì.
Bây giờ, hãy nhập
adk web
trong thiết bị đầu cuối để khởi động phiên bản và hỏi lại câu hỏi này cho tác nhân: "Thời tiết ở Tokyo, Nhật Bản vào tháng tới như thế nào?"
Giờ đây, trợ lý đang sử dụng google_search_agent
để lấy thông tin mới nhất
Bạn cũng có thể thử đặt câu hỏi về tỷ giá hối đoái hiện tại. Giờ đây, trợ lý ảo có thể sử dụng công cụ phù hợp cho từng câu hỏi.
Bạn có thể đặt cho trợ lý những câu hỏi khác cần thông tin theo thời gian thực và quan sát cách trợ lý xử lý các câu hỏi đó bằng những công cụ mà trợ lý có.
6. Khai thác Công cụ Wikipedia của LangChain
Trợ lý AI của chúng tôi đang trở thành một trợ lý du lịch tuyệt vời. Công cụ này có thể xử lý việc quy đổi tiền tệ bằng công cụ get_fx_rate
và quản lý hoạt động hậu cần bằng công cụ google_search_agent
. Tuy nhiên, một chuyến đi tuyệt vời không chỉ là vấn đề về hậu cần mà còn là việc tìm hiểu văn hoá và lịch sử của điểm đến.
Mặc dù google_search_agent
có thể tìm thấy các thông tin về văn hoá và lịch sử, nhưng thông tin từ một nguồn chuyên biệt như Wikipedia thường có cấu trúc và đáng tin cậy hơn.
Rất may, ADK được thiết kế để có khả năng mở rộng cao, cho phép bạn tích hợp liền mạch các công cụ từ các khung AI Agent khác như CrewAI và LangChain. Khả năng tương tác này là yếu tố quan trọng vì giúp giảm thời gian phát triển và cho phép bạn sử dụng lại các công cụ hiện có. Đối với trường hợp sử dụng này, chúng ta sẽ tận dụng các công cụ của Wikipedia trong LangChain.
Trước tiên, hãy dừng quy trình tác nhân đang chạy (Ctrl + C) và cài đặt các thư viện bổ sung vào môi trường ảo Python hiện tại bằng cách nhập các lệnh sau trong Terminal.
uv pip install langchain-community wikipedia
Tạo tệp third_party_tools.py
Bây giờ, hãy tạo một tệp Python có tên là third_party_tools.py
trong thư mục personal_assistant
bằng cách thực thi lệnh sau trong thiết bị đầu cuối:
touch personal_assistant/third_party_tools.py
Cấu trúc thư mục của bạn hiện sẽ có dạng như sau:
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py ├── custom_functions.py ├── custom_agents.py └── third_party_tools.py
Tệp này sẽ chứa phương thức triển khai cho công cụ Wikipedia của LangChain. Sao chép mã sau vào third_party_tools.py
bằng Cloud Editor:
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
# Configure the Wikipedia LangChain tool to act as our cultural guide
langchain_wikipedia_tool = WikipediaQueryRun(
api_wrapper=WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=3000)
)
# Give the tool a more specific description for our agent
langchain_wikipedia_tool.description = (
"Provides deep historical and cultural information on landmarks, concepts, and places."
"Use this for 'tell me about' or 'what is the history of' type questions."
)
Cập nhật tệp agent.py
Bây giờ, hãy cập nhật tệp agent.py
bằng nội dung bên dưới:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools.agent_tool import AgentTool
from google.adk.tools.langchain_tool import LangchainTool
from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
from .third_party_tools import langchain_wikipedia_tool
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
tools=[
FunctionTool(get_fx_rate),
AgentTool(agent=google_search_agent),
LangchainTool(langchain_wikipedia_tool),
]
)
Bây giờ, hãy nhập
adk web
trong thiết bị đầu cuối để khởi động phiên bản và đặt câu hỏi này cho tác nhân: "Tell me about the history of Kyoto" (Hãy cho tôi biết về lịch sử của Kyoto).
Trợ lý xác định chính xác đây là một câu hỏi trong quá khứ và sử dụng công cụ Wikipedia mới. Bằng cách tích hợp một công cụ của bên thứ ba và chỉ định cho công cụ đó một vai trò cụ thể, bạn đã giúp tác nhân của mình thông minh và hữu ích hơn đáng kể cho mục đích lập kế hoạch du lịch.
Để biết chính xác cách mà tác nhân đưa ra lựa chọn này, bạn có thể sử dụng trình kiểm tra sự kiện trong giao diện người dùng adk web
. Nhấp vào thẻ Sự kiện, rồi nhấp vào sự kiện functionCall
gần đây nhất.
Trình kiểm tra cho thấy danh sách tất cả các công cụ có sẵn và làm nổi bật tool_code cho công cụ mà tác nhân đã thực thi.
7. Dọn dẹp (Không bắt buộc)
Vì lớp học lập trình này không liên quan đến bất kỳ sản phẩm nào chạy trong thời gian dài, nên bạn chỉ cần dừng các phiên hoạt động của tác nhân (ví dụ: phiên bản adk web
trong thiết bị đầu cuối) bằng cách nhấn Ctrl + C trong thiết bị đầu cuối.
Xoá thư mục và tệp dự án của nhân viên hỗ trợ
Nếu bạn chỉ muốn xoá mã khỏi môi trường Cloud Shell, hãy sử dụng các lệnh sau:
cd ~
rm -rf ai-agents-adk
Tắt Vertex AI API
Để tắt Vertex AI API đã được bật trước đó, hãy chạy lệnh sau:
gcloud services disable aiplatform.googleapis.com
Tắt toàn bộ dự án trên Google Cloud
Nếu bạn muốn tắt hoàn toàn dự án Google Cloud, hãy tham khảo hướng dẫn chính thức để biết hướng dẫn chi tiết.
8. Kết luận
Xin chúc mừng! Bạn đã uỷ quyền thành công cho tác nhân trợ lý cá nhân bằng các hàm tuỳ chỉnh và quyền truy cập vào Google Tìm kiếm theo thời gian thực. Hãy đọc tài liệu chính thức này về cách sử dụng các công cụ với ADK của Google.
Quan trọng hơn, bạn đã học được mẫu kiến trúc cơ bản để xây dựng các tác nhân có khả năng: sử dụng các tác nhân chuyên biệt làm công cụ. Bằng cách tạo một google_search_agent
chuyên dụng và cung cấp nó cho root_agent
, bạn đã thực hiện bước đầu tiên từ việc xây dựng một tác nhân duy nhất đến việc điều phối một hệ thống đa tác nhân đơn giản nhưng mạnh mẽ.
Giờ đây, bạn đã chuẩn bị sẵn sàng cho lớp học lập trình tiếp theo trong chuỗi lớp học lập trình này. Trong lớp học lập trình đó, chúng ta sẽ tìm hiểu sâu hơn về việc điều phối nhiều tác nhân và quy trình. Hẹn gặp bạn ở lớp học này nhé!