1. 学习内容
- 如何使用 Gemini CLI 生成完整的 ADK 代理配置。
- 如何通过改进指令来增强智能体的个性。
- 如何通过为代理提供
google_search
来让其回答有关近期活动的问题,从而为代理添加“依据”。 - 如何使用具有 Imagen 的 MCP 服务器为随播广告生成自定义头像。
AI 伴侣应用
在此 Codelab 中,您将打造一个生动有趣的互动式 AI 伴侣。它不仅仅是一个标准的文本输入/输出聊天机器人。想象一下,有一个角色生活在网页上。您输入消息后,角色不仅会以文字形式回复,还会看着您大声回复,并且嘴巴会随着说出的文字同步移动。
您将从一个预构建的 Web 应用开始,这是一个数字“傀儡”,有面孔但没有自己的思想。它只能重复您输入的内容。您的任务是从头开始构建其大脑和个性。
在本研讨会中,您将逐步添加智能和自定义层,将这个简单的傀儡变成一个独特而强大的伙伴。您将:
- 使用 ADK(Python) 赋予其核心智能,使其能够理解和生成语言。
- 通过编写定义其角色的核心指令来塑造其独特的个性。
- 赋予其超能力,让其能够使用工具从互联网上获取实时信息。
- 设计自定义外观:使用 AI 生成独特的头像。
完成本课程后,您将拥有一个由您创建的、功能齐全且个性化的 AI 伴侣。
架构
我们的应用遵循一种简单但强大的模式。我们有一个提供 API 的 Python 后端。此后端将包含我们的 ADK 代理,该代理充当“大脑”。任何用户界面(例如框架应用中的 JavaScript 前端、移动应用,甚至是命令行工具)随后都可以通过 API 与此大脑进行互动。
除此之外,我们还将通过启动本地 MCP(Model Context Protocol)服务器来探索更高级的概念。此服务器充当图片生成的专用工具桥梁。然后,我们将使用 Gemini CLI 命令此 MCP 服务器,指示其为我们的 AI 伴侣生成独特的外观。
领取赠金
请仔细按照以下说明预配研讨会资源。
前期准备
警告!
- 使用个人 Gmail 账号。公司或学校管理的账号将无法使用。
- 在无痕模式下使用 Google Chrome,以避免账号冲突。
打开一个新的无痕式窗口,粘贴活动链接,然后使用您的个人 Gmail 账号登录。
👉 点击下方复制您的特别活动链接:
goo.gle/devfest-boston-ai
接受 Google Cloud Platform 服务条款。应用后,您会看到一条消息,表明赠金已应用。
创建和配置项目
现在,您的抵扣额度已应用,请设置项目环境。
👉 前往 Google Cloud 控制台。点击下方链接即可复制:
https://console.cloud.google.com/
👉 在控制台的顶部导航栏中,依次点击选择项目和右上角的新建项目。
👉 为项目命名,然后点击创建。(无组织)
👉 创建完成后,选择该媒体文件。在左侧菜单中,前往结算。
👉 点击关联结算账号,从下拉菜单中选择 Google Cloud Platform 试用结算账号,然后点击设置账号。(如果您没有看到下拉菜单,请等待一分钟,待抵扣金额生效后,重新加载页面。)
您的积分处于有效状态,并且您的项目已配置。
2. 准备工作
👉点击 Google Cloud 控制台顶部的“激活 Cloud Shell”(这是 Cloud Shell 窗格顶部的终端形状图标),
👉查找您的 Google Cloud 项目 ID:
- 打开 Google Cloud 控制台:https://console.cloud.google.com
- 从页面顶部的项目下拉菜单中选择要用于本次研讨会的项目。
- 项目 ID 会显示在信息中心内的“项目信息”卡片中
👉💻 在终端中,从 GitHub 克隆引导项目:
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 运行初始化脚本,此脚本会提示您输入 Google Cloud 项目 ID。当 init.sh 脚本提示时,输入您在上一步中找到的 Google Cloud 项目 ID。
cd ~/companion-python
./init.sh
👉💻 设置所需的项目 ID:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 运行以下命令以启用必要的 Google Cloud API:
gcloud services enable compute.googleapis.com \
aiplatform.googleapis.com
启动应用
我们来运行入门级项目。此初始版本是一个简单的“回显”服务器,它没有智能功能,只会重复您发送给它的内容。
👉💻 在 Cloud Shell 终端中,创建并激活 Python 虚拟环境,然后从 requirements.txt
文件中安装所需的库。
cd ~/companion-python
. ~/companion-python/set_env.sh
python -m venv env
source env/bin/activate
pip install -r requirements.txt
👉💻 启动 Web 服务器。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 如需查看应用,请点击 Cloud Shell 工具栏中的“网页预览”图标。选择“更改端口”,将其设置为 5000,然后点击“更改并预览”。系统会显示您网站的预览。
有时,在新的 Cloud Shell 环境中,浏览器可能需要一些帮助才能首次加载应用的所有资源(例如图片和音频库)。让我们执行一个快速步骤来“预热浏览器”,确保所有内容都已正确加载。
- 让应用的网页预览标签页保持打开状态。
- 打开新的浏览器标签页。
- 在此新标签页中,粘贴应用的网址,但在末尾添加以下路径:
/static/images/char-mouth-open.png
。例如,您的网址将类似于:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- 按 Enter。您应该只会看到张着嘴的角色图片。此步骤有助于确保浏览器已从 Cloud Shell 实例中正确提取文件。
初始应用只是一个傀儡。它目前还没有智能功能。无论您发送什么消息,它都会简单地重复您发送的消息。这可确认我们的基本 Web 服务器在添加 AI 之前可正常运行。请记得打开扬声器!
👉 如需停止服务器,请按 CTRL+C
。
3. 使用 Gemini CLI 创建角色
现在,我们来创建伴侣智能的核心。为此,我们将同时使用两个终端(这是您的 Google Cloud Shell 终端):
- 终端 1:此终端将用于运行我们的 Python 网络服务器,以便我们实时测试所做的更改。
- 终端 2:这是我们的“创作工作站”,我们将在此处与 Gemini CLI 进行互动。
我们将使用 Gemini CLI,这是一款功能强大的命令行界面,可充当 AI 编码助理。它允许我们用简单的英语描述所需代码,然后它会为我们生成结构,从而显著加快开发速度。
👉💻 在 Gemini CLI 终端中,点击 ctrl+c
两次以退出当前的 Gemini CLI 会话,因为我们的项目目录位于 ~/companion-python
下,然后重新启动 Gemini CLI。
cd ~/companion-python
clear
gemini --yolo
我们将使用 CLI 构建 Agent。智能体不仅仅是对语言模型的简单调用,更是 AI 的“大脑”或中央控制器。您可以将其视为一个独特的实体,能够推理、遵循一组特定的指令(其个性),并最终使用工具来完成任务。在我们的项目中,此代理将是接收用户消息、体现伴侣的独特角色并制定智能且符合角色设定的回答的组件。
👉✨ 在 Gemini CLI 提示中,粘贴以下内容以生成代理的代码:
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 将生成 Python 代码。
👉点击“打开编辑器”按钮(看起来像一个打开的文件夹,上面有一支铅笔)。此操作会在窗口中打开 Cloud Shell 代码编辑器。您会在左侧看到文件浏览器。
👉 使用编辑器,然后前往 companion-python
文件夹下的 character.py
。请花点时间检查 model= 行,如果选择了其他模型,请手动将其修改为 gemini-2.5-flash
。这样可确保在本次研讨会的剩余部分保持一致。
注意:大语言模型可能具有不确定性,这是 AI 辅助开发中的一个关键概念。“非确定性”是指即使使用完全相同的提示,模型每次也可能会生成略有不同的结果。它会发挥创意来生成代码,因此您可能会看到注释、间距甚至临时变量的命名有所不同。不过,核心逻辑和结构应与所请求的逻辑和结构在功能上完全相同。
因此,使用 AI 进行编码很少是一次性命令。在实际项目中,开发者会将其视为对话。首先,您提出一个宽泛的请求(就像我们刚才所做的那样),查看输出内容,然后使用后续提示(例如以下提示)对其进行优化:
- “太棒了,现在添加注释来解释每一行。”
- “您能否将其重构为单独的函数?”
- “请为 API 调用添加错误处理。”
通过这种迭代式对话过程,您可以与 AI 协作,引导它生成完全符合您需求的代码。在此研讨会中,我们将使用具体、直接的提示,但请记住,在您自己的项目中,对话才是真正的力量所在!只要 CLI 为您生成的代码结构相同,您就可以继续操作了
如果您生成的代码无法正常运行,请随时将以下代码替换为您的 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.
""",
)
测试生成的代码:
👉💻 前往第一个终端(用于运行 Python 代码),启动 Web 服务器。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 前往网页预览标签页。
👉 输入 Hello, how are you?
,然后按“发送”。现在,代理应该会以友好的问候语做出响应,而不仅仅是回显您说的话!这确认我们的代理现在由 Gemini 提供支持。
👉 测试完成后,请使用 CTRL+C
停止服务器。对于运行 Gemini CLI 的终端,请按两次 CTRL+C
退出 Gemini CLI。
4. 增强代理的角色
简单的指令固然不错,但详细的角色人物设定能打造出更具吸引力且令人难忘的角色。在此步骤中,您将设计自己的伴侣的个性,然后指示 Gemini CLI 直接修改代理的代码以采用此新角色。
集思广益,打造伴侣角色
首先,花点时间想想您要创建的 AI 伴侣。这是您发挥创意的好机会!以下是一些可帮助您上手的提示:
- 它的名称是什么?(例如 Sparky、Codex、Captain AI、Professor Know-it-all)
- 其核心个性是什么?(例如 亲切好奇、机智讽刺、正式专业、快乐的海盗?)
- 其角色或专业领域是什么?(例如 通用助理、代码编写专家、创意写作伙伴、健身教练?)
- 它应始终遵循哪些规则?(例如 “始终以问候语开头”“绝不透露自己是 AI”“在回答中使用表情符号”。)
示例买家角色:
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.
为 Gemini CLI 撰写提示
既然您已在纸上设计了伴侣的性格,现在就该在代码中实现它了。ADK 代理最重要的部分是其 instruction
参数。您可以将此视为智能体的核心程序、其“首要指令”或必须始终遵守的章程。
此指令是控制代理行为的关键。它不仅是建议,还是 AI 在每次与用户互动之前都会参考的基础背景信息。它决定了智能体的个性、语气、必须遵守的规则以及应如何展示自己。精心设计的指令是通用聊天机器人与可信且前后一致的角色之间的区别。因此,我们即将编写的提示至关重要,因为它会直接将这种个性注入到代理的“大脑”中。
👉✨ 返回 Gemini CLI,使用此模板。将方括号中的文字替换为您的买方角色说明。将[YOUR PERSONA DESCRIPTION HERE]替换为您偏好的角色
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]
测试新买方角色
Gemini CLI 将为 character.py
生成更新后的代码。
👉💻 再次启动 Web 服务器。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 在网页预览中,与你的 AI 伙伴对话。询问 how are you?
。现在,它的回答应该与您设计的独特角色完全一致!
👉 完成后,使用 CTRL+C
停止服务器。
5. 为近期事件添加了事实依据
我们的代理现在个性十足,但存在一个重大限制:它的知识是基于训练数据,因此是冻结在特定时间点的。它无法告知您昨天的资讯或近期的发现。为了克服这一问题,我们为智能体提供了工具。
您可以将工具视为您授予代理的超能力或特殊能力。代理本身只能说话。借助搜索工具,它能够浏览互联网。借助日历工具,它可以查看您的日程。从技术上讲,工具是指代理在意识到自身知识不足以回答用户请求时,可以智能选择使用的特定函数或 API。
在高级系统中,工具可以由外部系统(例如我们在架构中提到的 MCP(模型上下文协议)服务器)提供;我们稍后将使用这种方式生成图片。不过,对于此步骤,我们不需要单独的服务器。ADK 附带一个强大的预构建 google_search
工具,我们可以轻松地将其添加到智能体的功能中。
让我们的伴侣拥有 Google 搜索的强大功能。
👉 在 Cloud Shell 编辑器中,打开 companion-python
下的 character.py
,并按如下方式进行修改:
- 从
google.adk.tools
导入google_search
。 - 向
LlmAgent
构造函数添加tools
列表。 - 更新
instruction
以明确告知您的助理何时使用其新工具。
# 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
)
测试 Grounded Agent
👉💻 再次启动服务器。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👉 在网页预览中,提出需要最新知识的问题,例如:
Tell me something funny that happened in the news this week involving an animal.
👉现在,智能体不会说“不知道”,而是会使用其搜索工具查找最新信息,并以其独特的语气提供有用的、有依据的摘要。
要停止服务器,请按 CTRL+C
。
6. 自定义随播广告的外观(可选)
现在,我们的伴侣已经有了大脑,接下来我们来为它设计一张独特的面孔!我们将使用本地 MCP(模型上下文协议)服务器,以便 Gemini CLI 生成图片。此服务器将使用通过 Google AI Studio 提供的生成式 AI 模型。
那么,MCP 服务器到底是什么?
Model Context Protocol (MCP) 是一种旨在解决常见复杂问题的开放标准:AI 模型如何与外部工具和数据源通信?MCP 不会为每个集成编写自定义的一次性代码,而是为这种通信提供一种通用“语言”。
不妨将其视为 AI 的通用适配器或 USB 端口。任何“说”MCP 的工具都可以连接到任何也“说”MCP 的 AI 应用。
在我们的工作坊中,即将运行的 nano-banana-mcp
服务器充当了这一关键桥梁。Gemini CLI 会向本地 MCP 服务器发送标准化请求。然后,服务器会将该请求转换为对生成式 AI 模型的特定调用,以创建图片。这样,我们就可以将强大的图片生成功能直接集成到命令行工作流中。
设置本地图片生成服务器
我们现在将克隆并运行一个预构建的 MCP 服务器,该服务器可处理图片生成请求。
👉💻 在第一个 Cloud Shell 终端(您正在运行 Python 的终端)中,克隆服务器的代码库。
cd ~
git clone https://github.com/weimeilin79/nano-banana-mcp
我们快速查看一下 nano-banana-mcp
文件夹中的服务器 mcp_server.py
文件。此服务器旨在公开 Gemini CLI 可使用的两个特定“工具”。不妨将它们视为我们的图片生成服务已掌握的两项截然不同的技能。
generate_image
:这是一个通用工具。它会根据单个文本提示生成一张图片。它简单明了,可用于许多任务。generate_lip_sync_images
:这是一款高度专业化的工具,完全符合我们的需求。当您向其提供描述角色的基本提示时,它会执行一个巧妙的两步流程:- 首先,它会在提示中添加“张着嘴”的描述,并生成第一张图片。
- 其次,它会获取新创建的图片,并将其连同新指令“将张开的嘴改为闭合”一起发送回模型。
Gemini 2.5 Flash Image (Nano Banana) 能够根据自然语言指令更改或修改现有图片,功能非常强大。模型仅重绘图像的必要部分,同时保持其他所有内容完好无损。这样一来,两张图片在风格、光照和角色设计方面就完全一致,只有嘴部位置不同,而这正是我们实现逼真的对口型效果所需要的。
在以下步骤中,我们将命令 Gemini CLI 使用专门的 generate_lip_sync_images
工具来创建伴侣的专属头像。
👉💻 激活项目的虚拟环境,并安装服务器的特定要求。
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
pip install -r ~/nano-banana-mcp/requirements.txt
👉💻 现在,在后台运行 MCP 服务器,以便它可以侦听来自 Gemini CLI 的请求。
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
python ~/nano-banana-mcp/mcp_server.py &> /dev/null &
此命令将启动服务器,而 &
符号将使其在后台保持运行。
将 Gemini CLI 关联到本地服务器
接下来,我们需要配置 Gemini CLI,以将图片生成请求发送到新运行的本地服务器。为此,我们将修改 CLI 的中央配置文件。
那么,这个 settings.json
文件是什么?
~/.gemini/settings.json
文件是 Gemini CLI 的中央配置文件。CLI 会在此处存储其设置、偏好设置,以及它知道如何使用的所有外部工具的目录。
在此文件中,有一个名为 mcpServers
的特殊部分。您可以将此部分视为专门针对使用 Model Context Protocol 的工具的地址簿或服务目录。此目录中的每个条目都有一个昵称(例如,“nano-banana”)以及有关如何连接到它的说明(在本例中为网址)。
我们即将运行的命令将以编程方式向此服务目录添加新条目。这会告知 Gemini CLI:
“嘿,从现在开始,你了解了一个名为 nano-banana
的工具。每当用户要求您使用它时,您都需要连接到在网址 http://localhost:8000/sse
运行的 MCP 服务器。”
通过修改此配置,我们可以让 Gemini CLI 变得更强大。我们正在动态地教它一项新技能,即如何与本地图片生成服务器通信,而无需触及 CLI 的核心代码。正是这种可扩展的设计,使得 Gemini CLI 能够通过调用整个专业工具生态系统来编排复杂的任务。
👉💻 在第一个终端中,运行以下命令。它将创建或更新 Gemini 设置文件,告知 Gemini 在何处查找“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
您应该会看到打印出的文件内容,其中现在包含 nano-banana
配置。
生成角色头像
在服务器运行且 CLI 配置完毕后,您现在可以生成图片了。不过,在要求 AI 发挥创意之前,我们先来做每位优秀开发者都会做的事情:验证我们的设置。我们需要确认 Gemini CLI 是否可以成功与本地 MCP 服务器通信。
👉💻 回到 Gemini CLI 终端(未运行服务器的终端),我们来启动 Gemini 交互式 shell。如果它已在运行,请按两次 CTRL+C
退出,然后重新启动,以确保它加载我们的新设置。
clear
gemini --yolo
您现在已进入 Gemini CLI 的互动环境。在此处,您可以与 AI 聊天,也可以直接向 CLI 本身发出命令。
👉✨ 如需检查 MCP 服务器是否已连接,我们将使用特殊的“斜杠命令”。这不是 AI 的提示,而是针对 CLI 应用本身的指令。输入以下内容,然后按 Enter 键:
/mcp list
此命令会告知 Gemini CLI:“检查您的配置,找到您知道的所有 MCP 服务器,尝试连接到每个服务器,并报告其状态。”
👀 您应该会看到以下输出内容,这表示一切正常运行:
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
我们来详细了解一下此成功响应的含义:
🟢 nano-banana
:绿色圆圈表示成功!这确认了 CLI 能够访问我们在settings.json
中指定的网址处的nano-banana
服务器。- Ready
:此状态确认连接稳定。(2 tools)
:这是最重要的部分。这意味着 CLI 不仅已连接,还向我们的 MCP 服务器询问了“你能做什么?”我们的服务器通过宣传我们在其代码中看到的两种工具(generate_image
和generate_lip_sync_images
)做出了响应。
这可确认整个通信链已建立。现在,CLI 了解了我们的本地图片生成服务,并准备好在我们的命令下使用该服务。
现在,我们进入研讨会中最具创意的部分!我们将使用一个功能强大的提示,命令 Gemini CLI 使用正在运行的 MCP 服务器上的特殊 generate_lip_sync_images
工具。
您可以借此机会为同伴设计独特的外观。考虑他们的风格、发色、表情以及适合您之前创建的角色形象的任何其他细节。
👉✨ 下面是一个结构良好的提示示例。您可以将其作为起点,也可以完全替换描述性部分,改为您自己的愿景。
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.
该工具将生成一组图片(用于张嘴、闭嘴等)并保存这些图片。它会输出文件的保存路径。
重新启动应用
自定义虚拟形象设置完毕后,您可以重启 Web 服务器,查看角色的新外观。
👉💻 在第一个终端中最后一次启动服务器
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 为确保新图片正确加载,我们会提前加载 char-mouth-open.png
图片。
- 让应用的网页预览标签页保持打开状态。
- 打开新的浏览器标签页。
- 在此新标签页中,粘贴应用的网址,但在末尾添加以下路径:
/static/images/char-mouth-open.png
。例如,您的网址将类似于:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- 按 Enter。您应该只会看到张着嘴的角色图片。此步骤有助于确保浏览器已从 Cloud Shell 实例中正确提取文件。
您现在可以与视觉上自定义的陪伴者互动了!
恭喜!
您已成功构建出先进的 AI 伴侣。您从一个基本应用开始,使用 Gemini CLI 为智能体搭建框架,赋予它丰富的个性,并为其提供工具来访问实时信息,甚至生成自己的头像。现在,您已经准备好构建更复杂、更强大的 AI 代理了。