1. Чему вы научитесь
- Как использовать Gemini CLI для создания полной конфигурации агента ADK.
- Как улучшить личность агента, улучшив его инструкции.
- Как добавить «заземленности» вашему агенту, предоставив ему возможность
google_search
для ответов на вопросы о недавних событиях. - Как создать индивидуальный аватар для вашего собеседника, используя сервер MCP с Imagen.
Приложение AI Companion
В этой лабораторной работе вы создадите визуального, интерактивного ИИ-помощника. Это больше, чем просто стандартный чат-бот с функцией ввода и вывода текста. Представьте себе персонажа, живущего на веб-странице. Вы печатаете сообщение, и вместо того, чтобы просто видеть текст, персонаж смотрит на вас и отвечает вслух, синхронизируя движения губ со словами.
Вы начнёте с готового веб-приложения — цифровой «марионетки» с лицом, но без собственного разума. Она может лишь повторять то, что вы вводите. Ваша задача — разработать её мозг и личность с нуля.
В ходе этого семинара вы будете постепенно добавлять уровни интеллекта и кастомизации, превращая эту простую куклу в уникального и способного компаньона. Вы:
- Наделение его базовым интеллектом с использованием ADK(Python) для понимания и генерации языка.
- Создание его уникальной индивидуальности путем написания основных инструкций, определяющих его характер.
- Наделив его сверхспособностями и предоставив инструменты для доступа к информации из Интернета в режиме реального времени.
- Разработка индивидуального внешнего вида с использованием искусственного интеллекта для создания уникального аватара.
В итоге у вас будет полностью функциональный и персонализированный ИИ-компаньон, созданный вами.
Архитектура
Наше приложение следует простому, но мощному шаблону. У нас есть бэкенд на Python, который обслуживает API. Этот бэкенд будет содержать наш агент ADK, который будет выполнять функцию «мозга». Любой пользовательский интерфейс (например, JavaScript-фронтенд из скелетного приложения, мобильное приложение или даже инструмент командной строки) сможет взаимодействовать с этим «мозгом» через API.
Кроме того, мы рассмотрим более продвинутую концепцию, запустив локальный сервер MCP (Model Context Protocol). Этот сервер служит специализированным инструментальным мостом для генерации изображений. Затем мы будем использовать Gemini CLI для управления этим сервером MCP, поручив ему создать уникальный облик для нашего ИИ-компаньона.
Получите свои кредиты
Тщательно следуйте этим инструкциям, чтобы обеспечить ресурсы для вашей мастерской.
Прежде чем начать
ПРЕДУПРЕЖДЕНИЕ!
- Используйте личный аккаунт Gmail. Корпоративные или школьные аккаунты НЕ подойдут.
- Используйте Google Chrome в режиме инкогнито, чтобы избежать конфликтов учетных записей.
Откройте новое окно в режиме инкогнито, вставьте ссылку на мероприятие и войдите, используя свой личный адрес Gmail.
👉 Нажмите ниже, чтобы скопировать ссылку на специальное мероприятие:
goo.gle/devfest-boston-ai
Примите Условия использования Google Cloud Platform. После применения вы увидите сообщение о том, что бонус зачислен.
Создать и настроить проект
Теперь, когда ваши кредиты использованы, настройте среду вашего проекта.
👉 Перейдите в Google Cloud Console. Нажмите ниже, чтобы скопировать ссылку:
https://console.cloud.google.com/
👉 В верхней навигационной панели консоли нажмите Выбрать проект , затем Новый проект в правом верхнем углу.
👉 Дайте название вашему проекту и нажмите «Создать» . (Без организации)
👉 После создания выберите его. В меню слева перейдите в раздел «Оплата» .
👉 Нажмите «Привязать платежный аккаунт» , выберите «Пробный платежный аккаунт Google Cloud Platform» в раскрывающемся списке и нажмите «Настроить аккаунт» . (Если вы не видите раскрывающееся меню, подождите одну минуту, пока кредит будет зачислен, и перезагрузите страницу.)
Ваши кредиты активны и ваш проект настроен.
2. Прежде чем начать
👉Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud (это значок в форме терминала в верхней части панели Cloud Shell),
👉Найдите свой идентификатор проекта Google Cloud:
- Откройте консоль Google Cloud: https://console.cloud.google.com
- Выберите проект, который вы хотите использовать для этого семинара, из раскрывающегося списка проектов в верхней части страницы.
- Идентификатор вашего проекта отображается на карточке информации о проекте на панели инструментов.
👉💻 В терминале клонируйте bootstrap-проект с GitHub:
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 Запустите скрипт инициализации. Этот скрипт предложит вам ввести идентификатор вашего проекта Google Cloud . Затем, когда скрипт init.sh попросит вас ввести идентификатор проекта Google Cloud, который вы нашли на предыдущем шаге, введите его.
cd ~/companion-python
./init.sh
👉💻 Установите необходимый идентификатор проекта:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Выполните следующую команду, чтобы включить необходимые API Google Cloud:
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
👉💻 Запустите веб-сервер.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Чтобы увидеть приложение, нажмите на значок «Веб-просмотр» на панели инструментов Cloud Shell. Выберите «Изменить порт», установите значение 5000 и нажмите «Изменить и просмотреть». Появится предварительный просмотр вашего сайта.
Иногда в новой среде Cloud Shell браузеру может потребоваться небольшая помощь для первой загрузки всех ресурсов приложения (например, изображений и аудиобиблиотек). Давайте выполним небольшой шаг, чтобы «подготовить браузер» и убедиться, что всё загрузилось правильно.
- Оставьте вкладку веб-предварительного просмотра вашего приложения открытой.
- Откройте новую вкладку браузера .
- В этой новой вкладке вставьте URL-адрес вашего приложения, но добавьте в конец следующий путь:
/static/images/char-mouth-open.png
. Например, ваш URL-адрес будет выглядеть примерно так:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Нажмите Enter. Вы должны увидеть только изображение персонажа с открытым ртом. Этот шаг поможет убедиться, что браузер корректно скачал файлы из вашего экземпляра Cloud Shell.
Первоначальное приложение — всего лишь марионетка. У него пока нет интеллекта. Какое бы сообщение вы ни отправили, оно просто повторит его. Это подтверждает работоспособность нашего базового веб-сервера, прежде чем мы добавим ИИ. Не забудьте включить динамик!
👉 Чтобы остановить сервер, нажмите CTRL+C
.
3. Создайте персонажа с помощью Gemini CLI
Теперь создадим ядро интеллекта нашего спутника. Для этого мы будем работать с двумя терминалами одновременно (это ваш терминал Google Cloud Shell):
- Терминал 1: он будет использоваться для запуска нашего веб-сервера Python, что позволит нам тестировать наши изменения в режиме реального времени.
- Терминал 2: Это будет наша «станция создания», где мы будем взаимодействовать с Gemini CLI.
Мы будем использовать Gemini CLI — мощный интерфейс командной строки, который выступает в роли ИИ-помощника при программировании. Он позволяет нам описывать нужный код простым языком и автоматически генерирует структуру, что значительно ускоряет разработку.
👉💻 В терминале Gemini CLI выйдите из текущего сеанса Gemini CLI, дважды нажав ctrl+c
, так как наш каталог проекта находится в ~/companion-python
и перезапустите Gemini CLI.
cd ~/companion-python
clear
gemini --yolo
Мы используем CLI для создания агента . Агент — это больше, чем просто вызов языковой модели; это «мозг» или центральный контроллер нашего ИИ. Представьте его как отдельную сущность, способную рассуждать, следовать определённому набору инструкций (своей личности) и, в конечном итоге, использовать инструменты для выполнения задач. В нашем проекте этот агент — компонент, который будет получать сообщения пользователя, воплощать уникальную личность нашего собеседника и формулировать разумные, присущие персонажу ответы.
👉✨ В командную строку 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. Слева вы увидите проводник.
👉 В редакторе перейдите к character.py
в папке companion-python
. Проверьте строку model= и вручную отредактируйте её на gemini-2.5-flash
если выбрана другая модель. Это обеспечит единообразие в остальной части нашего семинара.
Примечание: Большие языковые модели могут быть недетерминированными, и это ключевая концепция разработки с использованием ИИ. «Недетерминированный» означает, что даже при одном и том же запросе модель может каждый раз выдавать немного разные результаты. Она использует свою креативность для генерации кода, поэтому вы можете заметить различия в комментариях, пробелах и даже названиях временных переменных. Однако основная логика и структура должны быть функционально идентичны запрошенным.
Вот почему программирование с использованием ИИ редко бывает одноразовым. В реальном проекте разработчики относятся к нему как к диалогу. Вы начинаете с общего запроса (как мы только что сделали), проверяете результат, а затем уточняете его, используя дополнительные подсказки, например:
- «Отлично, теперь добавь комментарии, поясняющие каждую строку».
- «Можно ли реорганизовать это в отдельную функцию?»
- «Пожалуйста, добавьте обработку ошибок для вызова API».
Этот итеративный диалоговый процесс позволяет вам сотрудничать с ИИ, направляя его до тех пор, пока код не станет именно тем, что вам нужно. В этом семинаре мы будем использовать конкретные, прямые подсказки, но помните, что в ваших собственных проектах именно диалог — это настоящая сила! Пока структура кода, генерируемая 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), запустите веб-сервер.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Перейдите на вкладку предварительного просмотра веб-страницы.
👉 Введите Hello, how are you?
и нажмите «Отправить». Теперь агент должен ответить дружелюбным приветствием, а не просто повторить ваши слова! Это подтверждает, что наш агент теперь работает на платформе Gemini.
👉 После завершения тестирования остановите сервер, нажав CTRL+C
. А в терминале, где запущен Gemini CLI, выйдите из Gemini CLI, дважды нажав CTRL+C
.
4. Улучшите личность агента
Простая инструкция — это хорошо, но подробный образ создаёт гораздо более интересный и запоминающийся персонаж. На этом этапе вы создадите личность своего спутника, а затем дадите команду Gemini CLI напрямую изменить код агента, чтобы адаптировать его к новой личности.
Проведите мозговой штурм по образу вашего компаньона
Для начала подумайте о том, какого ИИ-компаньона вы хотите создать. Это ваш шанс проявить креативность! Вот несколько вопросов для начала:
- Как его зовут? (например, Спарки, Кодекс, Капитан ИИ, Профессор Всезнайка)
- Какова его основная личность? (Например, дружелюбный и любопытный, остроумный и саркастичный, официальный и профессиональный, жизнерадостный пират?)
- Какова его роль или специализация? (Например, помощник общего назначения, эксперт по кодированию, партнер по творческому письму, фитнес-тренер?)
- Каким правилам он должен всегда следовать? (Например, «Всегда начинайте с приветствия», «Никогда не раскрывайте, что вы — ИИ», «Используйте эмодзи в своих ответах»).
Пример персоны:
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
. Считайте его базовой программой агента, его «главной директивой» или конституцией, которой он должен всегда следовать.
Эта инструкция — ключ к управлению поведением агента. Это не просто предложение; это основополагающий контекст, к которому ИИ обращается перед каждым взаимодействием с пользователем. Он определяет личность агента, его тон голоса, правила, которым он должен подчиняться, и то, как он должен себя представлять. Грамотно составленная инструкция — это то, что отличает стандартного чат-бота от правдоподобного, последовательного персонажа. Поэтому подсказка, которую мы собираемся создать, имеет решающее значение, поскольку она непосредственно внедрит эту личность в мозг нашего агента.
👉✨ Вернувшись в интерфейс командной строки Gemini, используйте этот шаблон. Замените текст в скобках описанием вашей персоны. ЗАМЕНИТЕ [ОПИСАНИЕ ВАШЕЙ ПЕРСОНАЖИ] на предпочитаемую вами персону.
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
.
👉💻 Запустите веб-сервер снова.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 В веб-превью поговорите со своим собеседником. Спросите how are you?
Его ответ теперь должен идеально соответствовать уникальному персонажу, которого вы создали!
👉 Когда закончите, остановите сервер сочетанием CTRL+C
.
5. Добавьте заземление для недавних событий
Наш агент теперь полон личности, но у него есть существенное ограничение: его знания заморожены во времени и основаны на данных, на которых он был обучен. Он не может рассказать вам о вчерашних новостях или недавних открытиях. Чтобы преодолеть это, мы предоставляем агентам инструменты .
Представьте себе инструменты как суперспособности или особые возможности, которые вы даруете своему агенту. Сам по себе агент может только говорить. С помощью инструмента поиска он получает возможность просматривать интернет. С помощью инструмента календаря он может проверять ваше расписание. Технически, инструмент — это определённая функция или API, который агент может разумно использовать, когда понимает, что его собственных знаний недостаточно для ответа на запрос пользователя.
В продвинутых системах инструменты могут предоставляться внешними системами, такими как серверы MCP (Model Context Protocol), упомянутые в нашей архитектуре; мы сделаем это позже для генерации изображений. Но на этом этапе нам не нужен отдельный сервер. ADK включает в себя мощный готовый инструмент google_search
, который мы можем легко добавить к возможностям нашего агента.
Давайте предоставим нашему спутнику возможности поиска Google.
👉 В редакторе Cloud Shell откройте character.py
в разделе companion-python
и измените его следующим образом:
- Импортируйте
google_search
изgoogle.adk.tools
. - Добавьте список
tools
в конструкторLlmAgent
. - Обновите
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
)
Проверьте заземленного агента
👉💻 Запустите сервер еще раз.
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 (Model Context Protocol) , который позволит Gemini CLI генерировать изображения. Этот сервер будет использовать генеративные модели ИИ, доступные в Google AI Studio.
Так что же такое MCP-сервер?
Протокол контекста модели (MCP) — это открытый стандарт, разработанный для решения распространённой и сложной проблемы: как модели ИИ взаимодействуют с внешними инструментами и источниками данных? Вместо написания индивидуального кода для каждой отдельной интеграции MCP предоставляет универсальный «язык» для такого взаимодействия.
Представьте себе универсальный адаптер или USB-порт для ИИ . Любой инструмент, «говорящий» на языке MCP, может подключиться к любому приложению ИИ, также «говорящему» на языке MCP.
В нашей мастерской сервер nano-banana-mcp
который мы сейчас запустим, выступает в роли этого важнейшего моста. Интерфейс командной строки Gemini отправит стандартизированный запрос на наш локальный сервер MCP. Сервер затем преобразует этот запрос в конкретный вызов генеративных моделей искусственного интеллекта для создания изображения. Это позволяет нам легко интегрировать мощные возможности генерации изображений непосредственно в наш рабочий процесс командной строки.
Настройка локального сервера создания изображений
Теперь мы клонируем и запустим готовый сервер MCP, который обрабатывает запросы на генерацию изображений.
👉💻 В терминале First Cloud Shell (том, на котором вы запускаете Python) клонируйте репозиторий сервера.
cd ~
git clone https://github.com/weimeilin79/nano-banana-mcp
Давайте кратко рассмотрим файл mcp_server.py
сервера в папке nano-banana-mcp
. Этот сервер создан для предоставления двух специальных «инструментов», которые может использовать 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
. Этот раздел можно рассматривать как адресную книгу или служебный каталог, предназначенный специально для инструментов, использующих протокол контекста модели. Каждая запись в этом каталоге имеет псевдоним (например, «nano-banana») и инструкции по подключению к нему (в нашем случае — URL).
Команда, которую мы сейчас выполним, программно добавит новую запись в этот каталог служб. Она сообщит Gemini CLI:
«Эй, теперь вы знаете об инструменте под названием nano-banana
. Всякий раз, когда пользователь просит вас его использовать, вам нужно подключиться к серверу MCP, работающему по URL-адресу http://localhost:8000/sse
».
Изменяя эту конфигурацию, мы делаем Gemini CLI более мощным. Мы динамически обучаем его новому навыку — взаимодействию с нашим локальным сервером генерации изображений, — не затрагивая основной код CLI. Именно эта расширяемая архитектура позволяет Gemini CLI выполнять сложные задачи, используя целую экосистему специализированных инструментов.
👉💻 В первом терминале выполните следующую команду. Она создаст или обновит файл настроек 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 можно приступать к генерации изображений. Но прежде чем просить ИИ проявить креативность, давайте сделаем то, что делает каждый хороший разработчик: проверим наши настройки. Нам нужно убедиться, что Gemini CLI может успешно взаимодействовать с нашим локальным сервером MCP.
👉💻 Вернитесь в терминал Gemini CLI (тот, где не запущен сервер), запустим интерактивную оболочку Gemini. Если она уже запущена, дважды нажмите CTRL+C
и перезапустите её, чтобы убедиться, что новые настройки загружены.
clear
gemini --yolo
Теперь вы находитесь в интерактивной среде Gemini CLI. Отсюда вы можете общаться с ИИ, а также отдавать прямые команды самому CLI.
👉✨ Чтобы проверить, подключён ли наш MCP-сервер, мы воспользуемся специальной «командой с косой чертой». Это не запрос для ИИ, а инструкция для самого 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 смог связаться с серверомnano-banana
по URL-адресу, указанному вsettings.json
. -
- Ready
: этот статус подтверждает стабильность соединения. -
(2 tools)
: Это самая важная часть. Это означает, что CLI не только подключился, но и спросил наш MCP-сервер: «Что вы можете сделать?». Наш сервер ответил, представив два инструмента, которые мы видели в его коде:generate_image
иgenerate_lip_sync_images
.
Это подтверждает, что вся цепочка связи установлена. Интерфейс командной строки теперь знает о нашем локальном сервисе генерации изображений и готов использовать его по нашей команде.
А теперь самая творческая часть семинара! Мы воспользуемся одним мощным командным запросом, чтобы дать команду Gemini CLI использовать специальный инструмент generate_lip_sync_images
на нашем работающем сервере MCP.
Это ваш шанс создать уникальный образ вашего спутника. Подумайте о его стиле, цвете волос, выражении лица и других деталях, которые соответствуют созданному вами ранее образу.
👉✨ Вот хорошо структурированный пример задания. Вы можете использовать его в качестве отправной точки или полностью заменить описательную часть своим собственным видением.
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.
Инструмент сгенерирует набор изображений (с открытым, закрытым ртом и т. д.) и сохранит их. Он выведет пути к сохраненным файлам.
Перезапустите приложение.
После того, как ваши аватары будут готовы, вы можете перезапустить веб-сервер, чтобы увидеть новый облик вашего персонажа.
👉💻 Запустите сервер в последний раз в своем первом терминале.
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 Чтобы обеспечить правильную загрузку новых изображений, мы заранее загрузим изображение char-mouth-open.png
.
- Оставьте вкладку веб-предварительного просмотра вашего приложения открытой.
- Откройте новую вкладку браузера .
- В этой новой вкладке вставьте URL-адрес вашего приложения, но добавьте в конец следующий путь:
/static/images/char-mouth-open.png
. Например, ваш URL-адрес будет выглядеть примерно так:https://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
- Нажмите Enter. Вы должны увидеть только изображение персонажа с открытым ртом. Этот шаг поможет убедиться, что браузер корректно скачал файлы из вашего экземпляра Cloud Shell.
Теперь вы можете взаимодействовать со своим визуально настроенным компаньоном!
Поздравляю!
Вы успешно создали сложного ИИ-компаньона. Вы начали с простого приложения, использовали Gemini CLI для создания агента, наделили его богатой индивидуальностью и снабдили инструментами для доступа к информации в режиме реального времени и даже для создания собственного аватара. Теперь вы готовы к созданию ещё более сложных и эффективных ИИ-агентов.