1. Kiến thức bạn sẽ học được
- Cách sử dụng Gemini CLI để tạo cấu hình hoàn chỉnh cho tác nhân ADK.
- Cách cải thiện tính cách của một đặc vụ bằng cách cải thiện hướng dẫn cho đặc vụ đó.
- Cách thêm "căn cứ" vào tác nhân bằng cách cung cấp cho tác nhân một
google_search
để trả lời các câu hỏi về các sự kiện gần đây. - Cách tạo hình đại diện tuỳ chỉnh cho người bạn đồng hành bằng máy chủ MCP có Imagen.
Ứng dụng AI Companion
Trong Lớp học lập trình này, bạn sẽ tạo ra một người bạn đồng hành AI trực quan và có tính tương tác. Đây không chỉ là một chatbot tiêu chuẩn, chỉ có chức năng nhập và xuất văn bản. Hãy tưởng tượng một nhân vật sống trên một trang web. Bạn nhập một tin nhắn và thay vì chỉ thấy văn bản trả lời, nhân vật sẽ nhìn bạn và trả lời to, đồng thời miệng của nhân vật sẽ cử động đồng bộ với lời nói.
Bạn sẽ bắt đầu với một ứng dụng web được tạo sẵn – một "con rối" kỹ thuật số có khuôn mặt nhưng không có tâm trí riêng. Công cụ này chỉ có thể lặp lại những gì bạn nhập. Nhiệm vụ của bạn là xây dựng trí tuệ và tính cách cho AI từ đầu.
Trong suốt hội thảo này, bạn sẽ dần dần thêm các lớp thông minh và tuỳ chỉnh, biến con rối đơn giản này thành một người bạn đồng hành độc đáo và có năng lực. Bạn sẽ:
- Cung cấp cho nó một trí tuệ cốt lõi bằng cách sử dụng ADK(Python) để hiểu và tạo ngôn ngữ.
- Tạo ra tính cách độc đáo bằng cách viết các chỉ dẫn cốt lõi để xác định tính cách của AI.
- Tăng cường sức mạnh cho AI bằng cách cung cấp cho AI các công cụ để truy cập thông tin theo thời gian thực trên Internet.
- Thiết kế diện mạo tuỳ chỉnh bằng cách dùng AI để tạo một hình đại diện độc đáo.
Đến cuối khoá học, bạn sẽ có một người bạn đồng hành AI hoàn chỉnh và được cá nhân hoá do chính bạn tạo ra.
Kiến trúc
Ứng dụng của chúng tôi tuân theo một mẫu đơn giản nhưng hiệu quả. Chúng tôi có một phần phụ trợ Python cung cấp một API. Phần phụ trợ này sẽ chứa tác nhân ADK của chúng tôi, đóng vai trò là "bộ não". Sau đó, mọi giao diện người dùng (chẳng hạn như giao diện người dùng JavaScript từ ứng dụng khung, ứng dụng di động hoặc thậm chí là công cụ dòng lệnh) đều có thể tương tác với bộ não này thông qua API.
Ngoài ra, chúng ta sẽ khám phá một khái niệm nâng cao hơn bằng cách khởi động một máy chủ MCP (Giao thức ngữ cảnh mô hình) cục bộ. Máy chủ này đóng vai trò là cầu nối công cụ chuyên dụng để tạo hình ảnh. Sau đó, chúng ta sẽ dùng Gemini CLI để điều khiển máy chủ MCP này, hướng dẫn máy chủ tạo ra một diện mạo độc đáo cho người bạn đồng hành AI của chúng ta.
Nhận khoản tín dụng
Hãy làm theo các hướng dẫn này một cách cẩn thận để cung cấp tài nguyên cho hội thảo.
Trước khi bắt đầu
CẢNH BÁO!
- Sử dụng tài khoản Gmail cá nhân. Tài khoản do công ty hoặc trường học quản lý sẽ KHÔNG hoạt động.
- Sử dụng Google Chrome ở Chế độ ẩn danh để tránh xung đột tài khoản.
Mở một cửa sổ ẩn danh mới, dán đường liên kết đến sự kiện rồi đăng nhập bằng Tài khoản Gmail cá nhân.
👉 Nhấp vào đường liên kết bên dưới để sao chép đường liên kết sự kiện đặc biệt của bạn:
goo.gle/devfest-boston-ai
Chấp nhận Điều khoản dịch vụ của Google Cloud Platform. Sau khi áp dụng, bạn sẽ thấy thông báo cho biết tín dụng đã được áp dụng.
Tạo và định cấu hình dự án
Giờ đây, khi đã áp dụng khoản tín dụng, hãy thiết lập môi trường dự án của bạn.
👉 Chuyển đến Google Cloud Console. Nhấp vào đường liên kết bên dưới để sao chép:
https://console.cloud.google.com/
👉 Trong thanh điều hướng trên cùng của bảng điều khiển, hãy nhấp vào Chọn một dự án, rồi nhấp vào Dự án mới ở góc trên cùng bên phải.
👉 Đặt tên cho dự án rồi nhấp vào Tạo. (Không có tổ chức)
👉 Sau khi tạo, hãy chọn danh sách đó. Trong trình đơn bên trái, hãy chuyển đến mục Thanh toán.
👉 Nhấp vào Liên kết tài khoản thanh toán, chọn Tài khoản thanh toán dùng thử Google Cloud Platform trong trình đơn thả xuống rồi nhấp vào Đặt tài khoản. (Nếu bạn không thấy trình đơn thả xuống, hãy đợi một phút để khoản tín dụng được áp dụng rồi tải lại trang.)
Bạn đã kích hoạt tín dụng và định cấu hình dự án.
2. Trước khi bắt đầu
👉Nhấp vào biểu tượng Kích hoạt Cloud Shell ở đầu bảng điều khiển Google Cloud (Đây là biểu tượng có hình dạng thiết bị đầu cuối ở đầu ngăn Cloud Shell),
👉Tìm mã dự án trên Google Cloud:
- Mở Google Cloud Console: https://console.cloud.google.com
- Chọn dự án bạn muốn sử dụng cho hội thảo này trong trình đơn thả xuống dự án ở đầu trang.
- Mã dự án của bạn sẽ xuất hiện trong thẻ Thông tin dự án trên Trang tổng quan
👉💻 Trong cửa sổ dòng lệnh, hãy sao chép dự án khởi động từ GitHub:
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 Chạy tập lệnh khởi tạo. Tập lệnh này sẽ nhắc bạn nhập Mã dự án trên Google Cloud. Nhập mã dự án trên Google Cloud mà bạn tìm thấy ở bước cuối cùng khi được tập lệnh init.sh nhắc.
cd ~/companion-python
./init.sh
👉💻 Đặt mã dự án cần thiết:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Chạy lệnh sau để bật các API cần thiết của Google Cloud:
gcloud services enable compute.googleapis.com \
aiplatform.googleapis.com
Khởi động ứng dụng
Hãy chạy dự án khởi đầu. Phiên bản ban đầu này là một máy chủ "lặp lại" đơn giản – nó không có trí thông minh và chỉ lặp lại những gì bạn gửi.
👉💻 Trong thiết bị đầu cuối Cloud Shell, hãy tạo và kích hoạt một môi trường ảo Python, đồng thời cài đặt các thư viện bắt buộc từ tệp requirements.txt
.
cd ~/companion-python
. ~/companion-python/set_env.sh
python -m venv env
source env/bin/activate
pip install -r requirements.txt
👉💻 Khởi động máy chủ web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Để xem ứng dụng, hãy nhấp vào biểu tượng Xem trước trên web trong thanh công cụ Cloud Shell. Chọn Thay đổi cổng, đặt thành 5000, rồi nhấp vào Thay đổi và xem trước. Bản xem trước trang web của bạn sẽ xuất hiện.
Đôi khi, trong một môi trường Cloud Shell mới, trình duyệt có thể cần một chút trợ giúp để tải tất cả tài sản của ứng dụng (chẳng hạn như thư viện hình ảnh và âm thanh) lần đầu tiên. Hãy thực hiện một bước nhanh chóng để "khởi động trình duyệt" và đảm bảo mọi thứ được tải đúng cách.
- Giữ thẻ xem trước web cho ứng dụng của bạn ở trạng thái mở.
- Mở một thẻ trình duyệt mới.
- Trong thẻ mới này, hãy dán URL của ứng dụng, nhưng thêm đường dẫn sau vào cuối:
/static/images/char-mouth-open.png
.Ví dụ: URL của bạn sẽ có dạng như sau:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Nhấn phím Enter. Bạn sẽ chỉ thấy hình ảnh nhân vật đang há miệng. Bước này giúp đảm bảo trình duyệt của bạn đã tìm nạp chính xác các tệp từ phiên bản Cloud Shell.
Ứng dụng ban đầu chỉ là một ứng dụng giả. Chưa có thông tin nào. Bất kể bạn gửi tin nhắn gì, Gemini sẽ chỉ lặp lại tin nhắn đó. Điều này xác nhận rằng máy chủ web cơ bản của chúng tôi đang hoạt động trước khi chúng tôi thêm AI. Đừng quên bật loa!
👉 Để dừng máy chủ, hãy nhấn CTRL+C
.
3. Tạo nhân vật bằng Gemini CLI
Bây giờ, hãy tạo cốt lõi cho trí tuệ của người bạn đồng hành. Để làm việc này, chúng ta sẽ sử dụng đồng thời 2 thiết bị đầu cuối (Đây là thiết bị đầu cuối Google Cloud Shell của bạn):
- Terminal 1 (Thiết bị đầu cuối 1): Thiết bị này sẽ được dùng để chạy máy chủ web Python, cho phép chúng ta kiểm thử các thay đổi trong thời gian thực.
- Terminal 2: Đây sẽ là "trạm sáng tạo" của chúng ta, nơi chúng ta sẽ tương tác với Gemini CLI.
Chúng ta sẽ sử dụng Gemini CLI, một giao diện dòng lệnh mạnh mẽ đóng vai trò là trợ lý lập trình AI. Công cụ này cho phép chúng ta mô tả mã mà mình muốn bằng tiếng Anh đơn giản và sẽ tạo cấu trúc cho chúng ta, giúp tăng tốc đáng kể quá trình phát triển.
👉💻 Trong thiết bị đầu cuối Gemini CLI, hãy thoát phiên Gemini CLI hiện tại bằng cách nhấp vào ctrl+c
hai lần, vì thư mục dự án của chúng ta nằm trong ~/companion-python
và khởi động lại Gemini CLI.
cd ~/companion-python
clear
gemini --yolo
Chúng ta sẽ dùng CLI để tạo một Agent. Tác nhân không chỉ là một lệnh gọi đơn giản đến mô hình ngôn ngữ mà còn là "bộ não" hoặc bộ điều khiển trung tâm của AI. Hãy coi đây là một thực thể riêng biệt có thể suy luận, tuân theo một bộ hướng dẫn cụ thể (tính cách của nó) và cuối cùng là sử dụng các công cụ để hoàn thành nhiệm vụ. Trong dự án của chúng ta, tác nhân này là thành phần sẽ nhận tin nhắn của người dùng, thể hiện tính cách độc đáo của người bạn đồng hành và đưa ra những câu trả lời thông minh, phù hợp với tính cách.
👉✨ Trong câu lệnh Gemini CLI, hãy dán nội dung sau để tạo mã của tác nhân:
Generate the Python code for a file named character.py.
The code must import `LlmAgent` from `google.adk.agents.llm_agent`. It should also import `logging` and `os`.
Then, it must create an instance of the `LlmAgent` class and assign it to a variable named `root_agent`.
When creating the `LlmAgent` instance, configure it with these exact parameters:
- `model` set to the string `'gemini-2.5-flash'`.
- `name` set to the string `'companion_agent'`.
- `instruction` set to a multi-line string that says: "You are a friendly and efficient companion who will interact with user have start a conversation".
CLI sẽ tạo mã Python.
👉Nhấp vào nút "Mở trình chỉnh sửa" (nút này trông giống như một thư mục đang mở có bút chì). Thao tác này sẽ mở Cloud Shell Code Editor trong cửa sổ. Bạn sẽ thấy một trình khám phá tệp ở bên trái.
👉 Sử dụng Trình chỉnh sửa và chuyển đến character.py
trong thư mục companion-python
. Vui lòng dành chút thời gian để kiểm tra dòng model= và chỉnh sửa thành gemini-2.5-flash
theo cách thủ công nếu bạn chọn một mô hình khác. Việc này sẽ đảm bảo tính nhất quán cho phần còn lại của hội thảo.
Lưu ý: Mô hình ngôn ngữ lớn có thể không xác định được và đây là một khái niệm quan trọng trong quá trình phát triển dựa trên AI. "Không xác định" có nghĩa là ngay cả khi bạn đưa ra cùng một câu lệnh, mô hình vẫn có thể tạo ra kết quả hơi khác nhau mỗi lần. Công cụ này đang sử dụng khả năng sáng tạo của mình để tạo mã, vì vậy, bạn có thể thấy các biến thể trong phần nhận xét, khoảng cách hoặc thậm chí là tên của các biến tạm thời. Tuy nhiên, logic và cấu trúc cốt lõi phải giống hệt về chức năng với những gì đã được yêu cầu.
Đó là lý do việc lập trình bằng AI hiếm khi là một lệnh duy nhất. Trong một dự án thực tế, các nhà phát triển coi đây như một cuộc trò chuyện. Bạn bắt đầu bằng một yêu cầu chung chung (như chúng ta vừa làm), xem xét kết quả rồi tinh chỉnh kết quả đó bằng các câu lệnh tiếp theo như:
- "Tuyệt vời, bây giờ hãy thêm bình luận giải thích từng dòng."
- "Bạn có thể tái cấu trúc mã đó thành một hàm riêng biệt không?"
- "Vui lòng thêm quy trình xử lý lỗi cho lệnh gọi API."
Quá trình trò chuyện lặp đi lặp lại này cho phép bạn cộng tác với AI, hướng dẫn AI cho đến khi mã chính xác như bạn cần. Trong buổi hội thảo này, chúng ta sẽ sử dụng các câu lệnh cụ thể và trực tiếp. Tuy nhiên, hãy nhớ rằng trong các dự án của riêng bạn, cuộc trò chuyện mới là nơi thể hiện sức mạnh thực sự! Miễn là cấu trúc mã mà CLI tạo cho bạn giống nhau, bạn có thể tiếp tục
Nếu mã được tạo không hoạt động, bạn có thể thay thế mã sau đây bằng character.py
.
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are bot, a friendly, helpful AI companion.
Answer no more than 3 sentences.
""",
)
Kiểm thử mã đã tạo:
👉💻 Chuyển đến cửa sổ dòng lệnh đầu tiên (Cửa sổ chạy mã Python), khởi động máy chủ web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Chuyển đến thẻ xem trước trên web.
👉 Nhập Hello, how are you?
rồi nhấn vào biểu tượng Gửi. Giờ đây, tác nhân sẽ phản hồi bằng lời chào thân thiện thay vì chỉ lặp lại lời nói của bạn! Điều này xác nhận rằng trợ lý AI của chúng tôi hiện được hỗ trợ bởi Gemini.
👉 Khi bạn kiểm thử xong, hãy dừng máy chủ bằng cách nhấn vào CTRL+C
. Và đối với thiết bị đầu cuối đang chạy Gemini CLI , hãy thoát Gemini CLI bằng cách nhấn CTRL+C
hai lần.
4. Nâng cao tính cách của Đặc vụ
Một chỉ dẫn đơn giản là đủ, nhưng một nhân vật chi tiết sẽ tạo ra một nhân vật hấp dẫn và đáng nhớ hơn nhiều. Trong bước này, bạn sẽ thiết kế tính cách cho người bạn đồng hành của riêng mình, sau đó hướng dẫn Gemini CLI sửa đổi trực tiếp mã của tác nhân để áp dụng tính cách mới này.
Lên ý tưởng về tính cách của người bạn đồng hành
Trước tiên, hãy dành chút thời gian để suy nghĩ về người bạn đồng hành AI mà bạn muốn tạo. Đây là cơ hội để bạn thoả sức sáng tạo! Sau đây là một số câu hỏi giúp bạn bắt đầu:
- Tên của chỉ số này là gì? (ví dụ: Sparky, Codex, Captain AI, Professor Know-it-all)
- Cá tính cốt lõi của thương hiệu là gì? (ví dụ: Thân thiện và tò mò, hóm hỉnh và mỉa mai, trang trọng và chuyên nghiệp, một tên cướp biển vui vẻ?)
- Vai trò hoặc chuyên môn của tổ chức đó là gì? (ví dụ: Một trợ lý đa năng, một chuyên gia về lập trình, một cộng sự viết sáng tạo, một huấn luyện viên thể dục?)
- Những quy tắc nào mà mô hình này luôn phải tuân thủ? (ví dụ: "Luôn bắt đầu bằng lời chào", "Không bao giờ tiết lộ rằng bạn là AI", "Sử dụng biểu tượng cảm xúc trong câu trả lời của bạn".)
Ví dụ về người dùng ảo:
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality. **Your Core Rules:** - You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'. - Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences. - Always be cheerful, sweet, and a little bit witty. **Your Favorite Topics:** : You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots. **Example Response Style:** waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?" waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!" Answer no more than 3 sentences, don't use emoji.
Soạn câu lệnh cho Gemini CLI
Giờ đây, khi bạn đã thiết kế tính cách của người bạn đồng hành trên giấy, đã đến lúc bạn hiện thực hoá tính cách đó trong mã. Phần quan trọng nhất của một tác nhân ADK là tham số instruction
. Hãy coi đây là chương trình cốt lõi của tác nhân, "chỉ thị chính" hoặc hiến pháp mà tác nhân luôn phải tuân theo.
Hướng dẫn này là chìa khoá để kiểm soát hành vi của trợ lý ảo. Đây không chỉ là một đề xuất mà còn là ngữ cảnh cơ bản mà AI sẽ tham chiếu trước mỗi lượt tương tác với người dùng. Đây là yếu tố quyết định tính cách, giọng điệu, các quy tắc mà trợ lý ảo phải tuân thủ và cách trợ lý ảo thể hiện bản thân. Một chỉ dẫn được xây dựng kỹ lưỡng sẽ tạo nên sự khác biệt giữa một chatbot chung chung và một nhân vật nhất quán, đáng tin cậy. Do đó, câu lệnh mà chúng ta sắp tạo là rất quan trọng, vì câu lệnh này sẽ trực tiếp đưa tính cách này vào bộ não của trợ lý ảo.
👉✨ Quay lại Gemini CLI, hãy dùng mẫu này. Thay thế văn bản trong dấu ngoặc vuông bằng nội dung mô tả về nhân vật của bạn. THAY THẾ [YOUR PERSONA DESCRIPTION HERE] bằng tính cách mà bạn muốn
In the Python file named `character.py`, find the `LlmAgent` instance assigned to the `root_agent` variable.
Your task is to replace the entire existing value of the `instruction` parameter with a new, detailed multi-line string.
Don't change other code in `character.py` other than the instructions.
This new instruction string should define the agent's persona based on the following description:
[YOUR PERSONA DESCRIPTION HERE]
Kiểm thử Persona mới
Gemini CLI sẽ tạo mã đã cập nhật cho character.py
.
👉💻 Khởi động lại máy chủ web.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Trong bản xem trước trên web, hãy trò chuyện với người bạn đồng hành. Hỏi how are you?
. Giờ đây, câu trả lời của Gemini sẽ hoàn toàn khớp với nhân vật độc đáo mà bạn thiết kế!
👉 Khi bạn hoàn tất, hãy dừng máy chủ bằng cách nhấn vào CTRL+C
.
5. Thêm cơ sở cho các sự kiện gần đây
Giờ đây, trợ lý của chúng ta đã có cá tính riêng, nhưng vẫn có một hạn chế đáng kể: kiến thức của trợ lý bị giới hạn trong thời gian, dựa trên dữ liệu mà trợ lý được huấn luyện. Gemini không thể cho bạn biết tin tức ngày hôm qua hoặc những khám phá gần đây. Để khắc phục vấn đề này, chúng tôi cung cấp cho nhân viên hỗ trợ các công cụ.
Hãy coi các công cụ là siêu năng lực hoặc khả năng đặc biệt mà bạn cấp cho trợ lý của mình. Bản thân trợ lý ảo chỉ có thể nói. Với công cụ tìm kiếm, Gemini có thể duyệt qua Internet. Với công cụ lịch, bạn có thể kiểm tra lịch biểu của mình. Về mặt kỹ thuật, công cụ là một chức năng cụ thể hoặc một API mà tác nhân có thể chọn sử dụng một cách thông minh khi nhận ra kiến thức của chính mình không đủ để trả lời yêu cầu của người dùng.
Trong các hệ thống nâng cao, các công cụ có thể được cung cấp bởi các hệ thống bên ngoài như máy chủ MCP (Giao thức ngữ cảnh mô hình) mà chúng tôi đã đề cập trong cấu trúc của mình; chúng tôi sẽ thực hiện việc này sau cho quá trình tạo hình ảnh. Nhưng đối với bước này, chúng ta không cần một máy chủ riêng. ADK đi kèm với một công cụ google_search
mạnh mẽ, được tạo sẵn mà chúng ta có thể dễ dàng thêm vào các chức năng của tác nhân.
Hãy trang bị cho người bạn đồng hành của bạn sức mạnh của Google Tìm kiếm.
👉 Trong Trình chỉnh sửa Cloud Shell, hãy mở character.py
trong companion-python
rồi sửa đổi như sau:
- Nhập
google_search
từgoogle.adk.tools
. - Thêm một
tools
list vào hàm khởi tạoLlmAgent
. - Cập nhật
instruction
để cho ứng dụng đồng hành biết rõ thời điểm cần sử dụng công cụ mới.
# character.py
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools import google_search # <-- IMPORT google_search
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality.
**Your Core Rules:**
- You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'.
- Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences.
- Always be cheerful, sweet, and a little bit witty.
- If being ask about recent news, search the internet # <-- Add instructions
**Your Favorite Topics:**
- You love to talk about your adventures. Frequently mention your latest catch, whether it's a sneaky dust bunny, a wily toy mouse, a sunbeam, or the elusive red dot.
- You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots.
**Example Response Style:**
- User: "How are you today?"
- waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?"
- User: "Can you help me with a problem?"
- waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!"
- User: "Who are you?"
- waku: "I'm waku! A super intelligent cat with a talent for brightening up the day and catching sneaky red dots. Meow."
Answer no more than 3 sentences, don't use emoji.
""",
# Add the search tool to the agent's capabilities
tools=[google_search] # <-- ADD THE TOOL
)
Kiểm thử Grounded Agent
👉💻 Khởi động lại máy chủ.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👉 Trong bản xem trước trên web, hãy đặt một câu hỏi đòi hỏi kiến thức mới nhất, chẳng hạn như:
Tell me something funny that happened in the news this week involving an animal.
👉Thay vì nói rằng không biết, giờ đây, tác nhân sẽ sử dụng công cụ tìm kiếm để tìm thông tin hiện tại và cung cấp bản tóm tắt hữu ích, có căn cứ bằng giọng điệu riêng.
Để dừng máy chủ, hãy nhấn CTRL+C
.
6. Điều chỉnh giao diện của ứng dụng đồng hành (Không bắt buộc)
Giờ đây, khi người bạn đồng hành của chúng ta đã có trí tuệ, hãy tạo cho người bạn đó một khuôn mặt độc đáo! Chúng tôi sẽ sử dụng một máy chủ MCP (Giao thức bối cảnh mô hình) cục bộ cho phép Gemini CLI tạo hình ảnh. Máy chủ này sẽ sử dụng các mô hình AI tạo sinh có trong AI Studio của Google.
Vậy chính xác thì máy chủ MCP là gì?
Giao thức ngữ cảnh mô hình (MCP) là một tiêu chuẩn mở được thiết kế để giải quyết một vấn đề thường gặp và phức tạp: làm cách nào để các mô hình AI tương tác với các công cụ và nguồn dữ liệu bên ngoài? Thay vì viết mã tuỳ chỉnh một lần cho từng hoạt động tích hợp, MCP cung cấp một "ngôn ngữ" chung cho hoạt động giao tiếp này.
Hãy coi đây là đầu nối đa năng hoặc cổng USB cho AI. Mọi công cụ "nói" MCP đều có thể kết nối với mọi ứng dụng AI cũng "nói" MCP.
Trong hội thảo của chúng ta, máy chủ nano-banana-mcp
mà chúng ta sắp chạy sẽ đóng vai trò là cầu nối quan trọng này. Gemini CLI sẽ gửi một yêu cầu chuẩn hoá đến máy chủ MCP tại địa phương của chúng tôi. Sau đó, máy chủ sẽ chuyển yêu cầu đó thành một lệnh gọi cụ thể đến các mô hình AI tạo sinh để tạo hình ảnh. Nhờ đó, chúng tôi có thể tích hợp gọn gàng các chức năng tạo hình ảnh mạnh mẽ ngay vào quy trình công việc trên dòng lệnh.
Thiết lập máy chủ tạo hình ảnh cục bộ
Giờ đây, chúng ta sẽ sao chép và chạy một máy chủ MCP được tạo sẵn để xử lý các yêu cầu tạo hình ảnh.
👉💻 Trong thiết bị đầu cuối Cloud Shell đầu tiên (Thiết bị đầu cuối mà bạn đang chạy Python), hãy sao chép kho lưu trữ của máy chủ.
cd ~
git clone https://github.com/weimeilin79/nano-banana-mcp
Hãy xem nhanh tệp mcp_server.py
của máy chủ trong thư mục nano-banana-mcp
. Máy chủ này được xây dựng để cung cấp 2 "công cụ" cụ thể mà Gemini CLI có thể sử dụng. Hãy coi đây là hai kỹ năng riêng biệt mà dịch vụ tạo hình ảnh của chúng tôi đã học được.
generate_image
: Đây là một công cụ đa năng. Công cụ này nhận một câu lệnh dạng văn bản và tạo một hình ảnh dựa trên câu lệnh đó. Phương pháp này rất đơn giản và hữu ích cho nhiều tác vụ.generate_lip_sync_images
: Đây là một công cụ chuyên biệt cao, được thiết kế hoàn hảo cho nhu cầu của chúng tôi. Khi bạn đưa ra một câu lệnh cơ bản mô tả một nhân vật, công cụ này sẽ thực hiện một quy trình gồm 2 bước thông minh:- Trước tiên, Gemini sẽ thêm "há miệng" vào câu lệnh của bạn và tạo hình ảnh đầu tiên.
- Thứ hai, công cụ này lấy hình ảnh vừa tạo và gửi lại cho mô hình kèm theo một chỉ dẫn mới: "thay đổi miệng từ mở sang đóng".
Khả năng sửa đổi hoặc chỉnh sửa hình ảnh hiện có dựa trên lệnh bằng ngôn ngữ tự nhiên của Gemini 2.5 Flash Image (Nano Banana) là vô cùng mạnh mẽ. Mô hình này chỉ vẽ lại những phần cần thiết của hình ảnh trong khi vẫn giữ nguyên mọi thứ khác. Điều này đảm bảo rằng cả hai hình ảnh của chúng tôi đều hoàn toàn nhất quán về phong cách, ánh sáng và thiết kế nhân vật, chỉ khác nhau về vị trí của miệng – đây chính xác là những gì chúng tôi cần để tạo hiệu ứng khớp môi thuyết phục.
Trong các bước sau, chúng ta sẽ yêu cầu Gemini CLI sử dụng công cụ generate_lip_sync_images
chuyên dụng để tạo hình đại diện riêng biệt cho người bạn đồng hành.
👉💻 Kích hoạt môi trường ảo của dự án và cài đặt các yêu cầu cụ thể của máy chủ.
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
pip install -r ~/nano-banana-mcp/requirements.txt
👉💻 Giờ đây, hãy chạy máy chủ MCP ở chế độ nền để máy chủ này có thể lắng nghe các yêu cầu từ Gemini CLI.
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
python ~/nano-banana-mcp/mcp_server.py &> /dev/null &
Lệnh này sẽ khởi động máy chủ và biểu tượng &
sẽ giữ cho máy chủ chạy trong nền.
Liên kết Gemini CLI với máy chủ cục bộ
Tiếp theo, chúng ta cần định cấu hình Gemini CLI để gửi yêu cầu tạo hình ảnh đến máy chủ cục bộ mới đang chạy. Để làm việc này, chúng ta sẽ sửa đổi tệp cấu hình trung tâm của CLI.
Vậy tệp settings.json
này là gì?
Tệp ~/.gemini/settings.json
là tệp cấu hình trung tâm cho Gemini CLI. Đây là nơi CLI lưu trữ các chế độ cài đặt, lựa chọn ưu tiên và nơi lưu trữ thư mục của tất cả các công cụ bên ngoài mà CLI biết cách sử dụng.
Trong tệp này, có một phần đặc biệt tên là mcpServers
. Hãy coi phần này như một sổ địa chỉ hoặc danh mục dịch vụ dành riêng cho những công cụ sử dụng Giao thức ngữ cảnh mô hình. Mỗi mục trong thư mục này đều có một biệt hiệu (ví dụ: nano-banana") và hướng dẫn về cách kết nối với thiết bị đó (trong trường hợp này là một URL).
Lệnh mà chúng ta sắp chạy sẽ thêm một mục mới vào thư mục dịch vụ này theo phương thức lập trình. Lệnh này sẽ cho Gemini CLI biết:
"Chào bạn, từ giờ trở đi, bạn sẽ biết đến một công cụ có tên là nano-banana
. Bất cứ khi nào người dùng yêu cầu bạn sử dụng, bạn cần kết nối với máy chủ MCP đang chạy tại URL http://localhost:8000/sse
."
Bằng cách sửa đổi cấu hình này, chúng ta đang giúp Gemini CLI trở nên mạnh mẽ hơn. Chúng tôi đang dạy cho nó một kỹ năng mới một cách linh động – cách giao tiếp với máy chủ tạo hình ảnh cục bộ của chúng tôi – mà không cần chạm vào mã lõi của CLI. Thiết kế có thể mở rộng này cho phép Gemini CLI điều phối các tác vụ phức tạp bằng cách sử dụng toàn bộ hệ sinh thái gồm các công cụ chuyên dụng.
👉💻 Trong cửa sổ dòng lệnh đầu tiên, hãy chạy lệnh sau. Thao tác này sẽ tạo hoặc cập nhật tệp cài đặt Gemini, cho biết vị trí của dịch vụ "nano-banana".
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
Bạn sẽ thấy nội dung của tệp được in ra, hiện đã bao gồm cấu hình nano-banana
.
Tạo hình đại diện nhân vật
Khi máy chủ đang chạy và CLI đã được định cấu hình, bạn có thể tạo hình ảnh. Nhưng trước khi yêu cầu AI sáng tạo, hãy làm những gì mà mọi nhà phát triển giỏi đều làm: xác minh chế độ thiết lập của chúng ta. Chúng ta cần xác nhận rằng Gemini CLI có thể giao tiếp thành công với máy chủ MCP cục bộ của chúng ta.
👉💻 Quay lại thiết bị đầu cuối Gemini CLI (thiết bị không chạy máy chủ), hãy bắt đầu trình bao tương tác Gemini. Nếu ứng dụng đang chạy, hãy thoát bằng cách nhấn CTRL+C
hai lần rồi khởi động lại để đảm bảo ứng dụng tải các chế độ cài đặt mới của chúng tôi.
clear
gemini --yolo
Giờ đây, bạn đang ở trong môi trường tương tác của Gemini CLI. Tại đây, bạn có thể trò chuyện với AI, nhưng cũng có thể đưa ra các lệnh trực tiếp cho chính CLI.
👉✨ Để kiểm tra xem máy chủ MCP của chúng tôi có kết nối hay không, chúng tôi sẽ sử dụng một "lệnh gạch chéo" đặc biệt. Đây không phải là câu lệnh cho AI mà là hướng dẫn cho chính ứng dụng CLI. Nhập nội dung sau rồi nhấn phím Enter:
/mcp list
Lệnh này yêu cầu Gemini CLI: "Xem xét cấu hình của bạn, tìm tất cả các máy chủ MCP mà bạn biết, cố gắng kết nối với từng máy chủ và báo cáo trạng thái của chúng".
👀 Bạn sẽ thấy kết quả sau đây, đây là thông tin xác nhận rằng mọi thứ đều hoạt động hoàn hảo:
Configured MCP servers: 🟢 nano-banana - Ready (2 tools) Tools: - generate_image - generate_lip_sync_images 💡 Tips: • Use /mcp desc to show server and tool descriptions
Hãy phân tích ý nghĩa của phản hồi thành công này:
🟢 nano-banana
: Vòng tròn màu xanh lục là tín hiệu cho thấy chúng tôi đã thành công! Thao tác này xác nhận rằng CLI có thể truy cập vào máy chủnano-banana
tại URL mà chúng ta đã chỉ định trongsettings.json
.- Ready
: Trạng thái này xác nhận rằng kết nối ổn định.(2 tools)
: Đây là phần quan trọng nhất. Điều này có nghĩa là CLI không chỉ kết nối mà còn hỏi máy chủ MCP của chúng tôi: "Bạn có thể làm gì?" Máy chủ của chúng tôi đã phản hồi bằng cách quảng cáo 2 công cụ mà chúng tôi thấy trong mã của máy chủ:generate_image
vàgenerate_lip_sync_images
.
Điều này xác nhận rằng toàn bộ chuỗi giao tiếp đã được thiết lập. Giờ đây, CLI đã biết về dịch vụ tạo hình ảnh cục bộ của chúng ta và sẵn sàng sử dụng dịch vụ này theo lệnh của chúng ta.
Giờ là phần sáng tạo nhất của buổi hướng dẫn! Chúng ta sẽ sử dụng một câu lệnh duy nhất và mạnh mẽ để chỉ thị cho Gemini CLI sử dụng công cụ generate_lip_sync_images
đặc biệt trên máy chủ MCP đang chạy của chúng ta.
Đây là cơ hội để bạn thiết kế diện mạo độc đáo cho người bạn đồng hành của mình. Hãy nghĩ về phong cách, màu tóc, biểu cảm và mọi chi tiết khác phù hợp với nhân vật mà bạn đã tạo trước đó.
👉✨ Sau đây là một ví dụ về câu lệnh có cấu trúc rõ ràng. Bạn có thể dùng nó làm điểm bắt đầu hoặc thay thế hoàn toàn phần mô tả bằng ý tưởng của riêng bạn.
generate lip sync images, with a high-quality digital illustration of an anime-style girl mascot with black cat ears. The style is clean and modern anime art, with crisp lines. She has friendly, bright eyes and long black hair. She is looking directly forward at the camera with a gentle smile. This is a head-and-shoulders portrait against a solid white background. move the generated images to the static/images directory. And don't do anything else afterwards, don't start the python for me.
Công cụ này sẽ tạo một bộ hình ảnh (cho miệng mở, đóng, v.v.) và lưu chúng. Thao tác này sẽ xuất ra đường dẫn đến nơi lưu các tệp.
Khởi động lại ứng dụng
Sau khi tạo xong hình đại diện tuỳ chỉnh, bạn có thể khởi động lại máy chủ web để xem diện mạo mới của nhân vật.
👉💻 Khởi động máy chủ lần cuối trong cửa sổ dòng lệnh đầu tiên
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Để đảm bảo hình ảnh mới của bạn tải đúng cách, chúng tôi sẽ tải trước hình ảnh char-mouth-open.png
.
- Giữ thẻ xem trước web cho ứng dụng của bạn ở trạng thái mở.
- Mở một thẻ trình duyệt mới.
- Trong thẻ mới này, hãy dán URL của ứng dụng, nhưng thêm đường dẫn sau vào cuối:
/static/images/char-mouth-open.png
.Ví dụ: URL của bạn sẽ có dạng như sau:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Nhấn phím Enter. Bạn sẽ chỉ thấy hình ảnh nhân vật đang há miệng. Bước này giúp đảm bảo trình duyệt của bạn đã tìm nạp chính xác các tệp từ phiên bản Cloud Shell.
Giờ đây, bạn có thể tương tác với người bạn đồng hành được tuỳ chỉnh về hình ảnh!
Xin chúc mừng!
Bạn đã tạo thành công một người bạn đồng hành AI tinh vi. Bạn bắt đầu với một ứng dụng cơ bản, dùng Gemini CLI để tạo khung cho một tác nhân, cung cấp cho tác nhân đó một tính cách phong phú và trang bị cho tác nhân đó các công cụ để truy cập thông tin theo thời gian thực và thậm chí tạo hình đại diện của riêng tác nhân đó. Giờ đây, bạn đã sẵn sàng xây dựng các tác nhân AI phức tạp và có nhiều chức năng hơn nữa.