1. Чему вы научитесь
- Как использовать интерфейс командной строки Gemini для генерации полной конфигурации агента ADK.
- Как улучшить личностные качества агента, скорректировав его инструкции.
- Как добавить функцию "привязки" к вашему агенту, указав ему
google_searchдля ответа на вопросы о недавних событиях. - Как создать пользовательский аватар для вашего компаньона с помощью сервера MCP и Imagen.
Приложение-компаньон с искусственным интеллектом
В этом практическом занятии вы воплотите в жизнь визуального интерактивного ИИ-компаньона. Это больше, чем просто стандартный чат-бот, вводящий и выводящий текст. Представьте себе персонажа, живущего на веб-странице. Вы набираете сообщение, и вместо простого текста в ответ, персонаж смотрит на вас и отвечает вслух, при этом его рот двигается синхронно со словами.
Вы начнёте с готового веб-приложения — цифровой «марионетки», у которой есть лицо, но нет собственного разума. Она может только повторять то, что вы печатаете. Ваша задача — создать её мозг и личность с нуля.
В ходе этого мастер-класса вы постепенно будете добавлять новые уровни интеллекта и возможностей персонализации, превращая эту простую куклу в уникального и способного компаньона. Вы сможете:
- Наделение его базовым интеллектом с использованием ADK (Python) для понимания и генерации языка.
- Формирование его уникальной индивидуальности путем написания основных инструкций, определяющих его характер.
- Наделить его сверхспособностями , предоставив ему инструменты для доступа к информации в режиме реального времени из интернета.
- Создание уникального внешнего вида с помощью искусственного интеллекта для генерации неповторимого аватара.
В итоге вы получите полностью функционального и персонализированного ИИ-компаньона, созданного вами. 
Архитектура
Наше приложение построено по простой, но мощной схеме. У нас есть бэкенд на Python, который обслуживает API. Этот бэкенд будет содержать наш агент ADK, который выступает в роли «мозга». Любой пользовательский интерфейс (например, фронтенд на JavaScript из базового приложения, мобильное приложение или даже инструмент командной строки) может взаимодействовать с этим «мозгом» через API.
Кроме того, мы рассмотрим более продвинутую концепцию, запустив локальный сервер MCP (Model Context Protocol). Этот сервер будет выступать в качестве специализированного моста для генерации изображений. Затем мы будем использовать интерфейс командной строки Gemini для управления этим сервером MCP, давая ему указание сгенерировать уникальный внешний вид для нашего ИИ-компаньона.

Получите свои кредиты
Внимательно следуйте этим инструкциям, чтобы подготовить ресурсы для вашего семинара.
Прежде чем начать
ПРЕДУПРЕЖДЕНИЕ!
- Используйте личный аккаунт Gmail. Корпоративные или школьные аккаунты НЕ подойдут.
- Используйте режим инкогнито в Google Chrome, чтобы избежать конфликтов учетных записей.
Откройте новое окно в режиме инкогнито, вставьте ссылку на мероприятие и войдите в систему, используя свою личную почту Gmail.
👉 Нажмите ниже, чтобы скопировать ссылку на ваше специальное мероприятие:
goo.gle/devfest-boston-ai
Примите условия использования платформы Google Cloud. После применения вы увидите сообщение о том, что средства зачислены.

Создание и настройка проекта
Теперь, когда ваши средства зачислены, настройте среду проекта.
👉 Перейдите в консоль Google Cloud. Нажмите ниже, чтобы скопировать ссылку:
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 . Затем введите идентификатор проекта Google Cloud, найденный на предыдущем шаге, когда скрипт init.sh запросит это.
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.

Мы будем использовать Gemini CLI — мощный интерфейс командной строки, который выступает в роли помощника по программированию на основе искусственного интеллекта. Он позволяет нам описать нужный код простым языком, и система сгенерирует для нас структуру, значительно ускорив разработку.
👉💻 В терминале Gemini CLI выйдите из текущей сессии Gemini CLI, дважды нажав ctrl+c , поскольку каталог нашего проекта находится в ~/companion-python , и перезапустите Gemini CLI.
cd ~/companion-python
clear
gemini --yolo
Мы используем интерфейс командной строки для создания агента . Агент — это больше, чем просто вызов языковой модели; это «мозг» или центральный контроллер нашего ИИ. Представьте его как отдельную сущность, способную рассуждать, следовать определенному набору инструкций (его личность) и в конечном итоге использовать инструменты для выполнения задач. В нашем проекте этот агент — компонент, который будет получать сообщения от пользователей, воплощать уникальную личность нашего компаньона и формулировать интеллектуальные, соответствующие характеру персонажа ответы.

👉✨ В командной строке 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".
Интерфейс командной строки сгенерирует код на 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, дважды нажмите CTRL+C , чтобы выйти из Gemini CLI.
4. Улучшить образ агента.
Простая инструкция — это хорошо, но детально проработанный образ создает гораздо более привлекательного и запоминающегося персонажа. На этом этапе вы разработаете личность своего компаньона, а затем дадите указание интерфейсу командной строки Gemini напрямую изменить код агента, чтобы он принял этот новый образ.
Продумайте характер вашего компаньона.
Для начала, уделите немного времени тому, чтобы обдумать, какого ИИ-компаньона вы хотите создать. Это ваш шанс проявить творчество! Вот несколько вопросов, которые помогут вам начать:
- Как его зовут? (например, Спарки, Кодекс, Капитан ИИ, Профессор Всезнайка)
- В чём заключается его главная черта характера? (например, дружелюбный и любознательный, остроумный и саркастичный, формальный и профессиональный, весёлый пират?)
- Какова его роль или специализация? (например, универсальный помощник, эксперт по программированию, партнер по творческому письму, фитнес-тренер?)
- Какие правила ему следует всегда соблюдать? (например, «Всегда начинайте с приветствия», «Никогда не раскрывайте, что вы — ИИ», «Используйте смайлики в своих ответах»).
Пример персонажа:
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.
Теперь, когда вы разработали личность своего компаньона на бумаге, пришло время воплотить её в жизнь в коде. Самая важная часть агента 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 сгенерирует обновлённый код для 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 генерировать изображения. Этот сервер будет использовать модели генеративного ИИ, доступные в 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 использовать специализированный инструмент 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") и инструкции по подключению к нему (в нашем случае, URL-адрес).
Команда, которую мы сейчас выполним, программно добавит новую запись в этот каталог служб. Она сообщит интерфейсу командной строки Gemini:
«Привет! Теперь вы знаете об инструменте под названием nano-banana . Всякий раз, когда пользователь просит вас его использовать, вам необходимо подключиться к серверу MCP, работающему по адресу 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-серверу, мы воспользуемся специальной командой с косой чертой. Это не подсказка для ИИ, а инструкция для самого приложения командной строки. Введите следующее и нажмите Enter:
/mcp list
Эта команда сообщает интерфейсу командной строки Gemini: «Просмотрите свою конфигурацию, найдите все известные вам серверы 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.
Это подтверждает, что вся цепочка связи установлена. Теперь CLI знает о нашей локальной службе генерации образов и готов использовать её по нашей команде.
А теперь самая креативная часть мастер-класса! Мы будем использовать одну мощную команду для управления 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 для создания агента, наделили его богатой индивидуальностью и оснастили инструментами для доступа к информации в реальном времени и даже генерации собственного аватара. Теперь вы готовы создавать еще более сложные и функциональные ИИ-агенты.