Создайте автономную цепочку поставок с помощью Gemini 3 Flash и AlloyDB AI.

1. Обзор

Эпоха «читающих чат-ботов» подходит к концу. Мы вступаем в эпоху агентного зрения.

В этом практическом занятии мы будем реализовывать детерминированное проектирование ИИ — практику создания систем искусственного интеллекта, которые не делают предположений. Стандартные модели ИИ часто «галлюцинируют» (делают предположения), когда их просят подсчитать количество предметов на сложном изображении. В цепочке поставок предположение опасно. Если ИИ предполагает, что у вас 12 предметов, когда на самом деле их 15, это приводит к дорогостоящим ошибкам.

Мы создадим автономного агента для управления цепочкой поставок, используя новый цикл «Думай, действуй, наблюдай» в Gemini 3 Flash . Он не просто смотрит, он исследует.

Детерминированная архитектура

Начнём с «слепой» и «амнезичной» системы. Вы будете вручную «пробуждать» её чувства одно за другим:

17191a91a9c54146.png

  1. «Глаза» (Агент зрения) : Мы активируем Gemini 3 Flash с выполнением кода . Вместо предсказания токенов для угадывания числа, модель пишет код на Python (OpenCV) для детерминированного подсчета пикселей.
  2. Память (агент поставщика) : Мы используем AlloyDB AI с алгоритмом ScaNN (масштабируемый метод ближайших соседей). Это позволяет агенту за миллисекунды находить точного поставщика детали среди миллионов вариантов.
  3. Протокол "рукопожатие" (A2A) : Мы обеспечиваем связь между агентами с использованием стандартизированного файла agent_card.json, что позволяет агенту Vision автономно заказывать товары у агента-поставщика.

Что вы построите

  • Агент обработки изображений , выполняющий «визуальные вычисления» над видеопотоками с камер.
  • Агент поставщика, использующий AlloyDB ScaNN для высокоскоростного векторного поиска.
  • Интерфейс диспетчерской вышки с обновлениями WebSocket в реальном времени для визуализации автономного цикла.

Что вы узнаете

  • Как включить Agentic Vision с помощью gemini-3-flash-preview, используя API Gemini.
  • Как реализовать векторный поиск с использованием оператора <=> (косинусное расстояние) в AlloyDB.
  • Как связать Cloud Shell с AlloyDB с помощью прокси-сервера аутентификации.

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной функцией выставления счетов.
  • Ключ API Gemini (бесплатный уровень доступен в Google AI Studio ) для Vision Agent.

2. Прежде чем начать

Создать проект

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
  1. Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell необходимо проверить, прошли ли вы аутентификацию и установлен ли идентификатор вашего проекта, используя следующую команду:
gcloud auth list

Вот и все!

Теперь вы готовы к настройке в один клик. В следующем разделе вы узнаете:

  • Автоматическое открытие Cloud Shell
  • Клонируйте репозиторий
  • Мы проведем вас через весь процесс настройки с помощью интерактивного руководства.

3. Настройка в один клик в Cloud Shell

Мы упростили настройку, превратив её в пошаговое руководство по Cloud Shell . Всё автоматизировано: выделение инфраструктуры, настройка AlloyDB, конфигурация прокси-сервера аутентификации и заполнение базы данных данными.

Руководство по запуску Cloud Shell

⚠️ ВАЖНО — Перед нажатием: После нажатия кнопки ниже появится диалоговое окно безопасности с вопросом «Открыть в Cloud Shell» . Оно появляется ДО клонирования репозитория.

Вы должны:

  1. ✅ Поставьте галочку: " Доверять репозиторию "
  2. ✅ Нажмите « Подтвердить »

Без этого репозиторий не будет клонирован.

Готовы? Нажмите, чтобы открыть проект с пошаговой инструкцией:

Что произойдет дальше:

  1. Cloud Shell открывается с предварительно клонированным репозиторием.
  2. Справа появляется панель с пошаговыми инструкциями.
  3. Вас проведут через следующие этапы:
  • Получение ключа API Gemini (доступен бесплатный тариф)
  • Настройка проекта GCP в терминале
  • Выполняется настройка (проверяются API, включаются при необходимости, выполняется инициализация AlloyDB: ~15 минут)
  • Внесение двух ключевых изменений в код (включение зрения и памяти).
  • Создание карты агента (протокол A2A)
  • Запуск всех служб

Учебное пособие интерактивное — каждый шаг пронумерован, и вы можете отслеживать свой прогресс.

Альтернативный вариант: Ручная настройка

Если вы предпочитаете ручное управление:

  1. Откройте Cloud Shell и убедитесь, что ваш проект настроен.
gcloud config get-value project
  1. При необходимости настройте свой проект.
gcloud config set project YOUR_PROJECT_ID
  1. Клонируйте репозиторий
git clone https://github.com/MohitBhimrajka/visual-commerce-gemini-3-alloydb.git
cd visual-commerce-gemini-3-alloydb
  1. Запуск настройки
sh setup.sh

Следуйте инструкциям на экране из скрипта настройки.

Что дальше: В этом руководстве вы пройдете оставшиеся шаги. После завершения перейдите к разделу 4 , чтобы понять, что происходило «под капотом».

4. За кулисами: прокси-сервер аутентификации и заполнение базы данных.

Проблема : AlloyDB находится внутри частной виртуальной частной сети (VPC). Cloud Shell находится за её пределами. Прямое подключение невозможно.

Решение: Прокси-сервер аутентификации AlloyDB создает защищенный туннель с аутентификацией IAM от 127.0.0.1:5432 в Cloud Shell к вашему экземпляру AlloyDB. Если для вашего экземпляра включен публичный IP-адрес, прокси-сервер использует его; в противном случае он подключается через частный IP-адрес VPC.

Что сделал скрипт setup.sh?

  1. Автоматически определен ваш экземпляр AlloyDB (кластер, регион, проект).
  2. Создан файл .env со всеми учетными данными (GEMINI_API_KEY, DB_PASS, сведения об AlloyDB).
  3. Загрузили и запустили прокси-сервер аутентификации (с параметром –public-ip , если применимо).
  4. В базу данных внесены данные из 8 образцов складских запасов + индекс ScaNN.

Ваш файл .env готов. При последующих запусках учетные данные будут загружаться автоматически.

Проверьте, всё ли работает.

Убедитесь, что вы по-прежнему находитесь в корневом каталоге репозитория.

pwd  # Should end with: visual-commerce-gemini-3-alloydb

Проверьте, запущен ли прокси-сервер аутентификации.

ps aux | grep alloydb-auth-proxy

Что было создано

  • Инвентарная таблица с 8 элементами и 768-мерными векторными представлениями.
  • Индекс ScaNN (idx_inventory_scann) для быстрого векторного поиска

5. Шаг 1: Память (агент-поставщик)

Агент поставщика запоминает миллионы деталей, используя AlloyDB ScaNN . Мы запускаем его как A2A-сервер, а затем корректируем векторный запрос.

Аудит: Амнезиак

Если вы сейчас отправите запрос к агенту поставщика (используя SQL-запрос-заполнитель), он вернет первую найденную строку, а не ближайшее совпадение. У него нет понятия о сходстве. Он страдает амнезией.

Запустите агента поставщика.

Сервер A2A (main.py) делегирует управление скрипту agent_executor.py, который обеспечивает связь протокола с бизнес-логикой в ​​скрипте inventory.py .

pkill -f uvicorn #Kill all uvicorn processes

Шаг 1: Перейдите в каталог агентов.

cd agents/supplier-agent

Шаг 2: Установка зависимостей

pip install -r requirements.txt

Шаг 3: Запустите сервер агента.

uvicorn main:app --host 0.0.0.0 --port 8082 > /dev/null 2>&1 &

Команда `> /dev/null 2>&1 &` запускает сервер в фоновом режиме и подавляет вывод, чтобы он не прерывал работу терминала.

Шаг 4: Убедитесь, что агент запущен (подождите 2-3 секунды после запуска).

curl http://localhost:8082/.well-known/agent-card.json

Ожидаемый результат: JSON с конфигурацией агента (должен возвращаться без ошибок).

Реальные семантические вложения

В процессе настройки база данных была заполнена реальными семантическими векторами, сгенерированными с помощью модели text-embedding-005 из SDK Google Gen AI. Это обеспечивает точное сопоставление по сходству, а не использование случайных векторов. Процесс заполнения занимает около 10 секунд для 13 примеров элементов с использованием параллельной генерации векторов для создания осмысленных 768-мерных векторов, отражающих семантическое значение каждой части.

AlloyDB Detour: Почему ScaNN?

Решение: Реализация оператора <=>

В комплекте с агентом поставляется запрос-заполнитель. Нам необходимо включить векторный поиск ScaNN.

Шаг 1: Откройте файл инвентаризации.

cd agents/supplier-agent

Шаг 2: Найдите задачу TODO в файле inventory.py.

Найдите функцию find_supplier() в строках 47-60. Вы увидите:

# ============================================================
# CODELAB STEP 1: Implement ScaNN Vector Search
# ============================================================
# TODO: Replace this placeholder query with ScaNN vector search

sql = "SELECT part_name, supplier_name FROM inventory LIMIT 1;"
cursor.execute(sql)

Шаг 3: Замените SQL-заполнитель на векторный поиск ScaNN.

Удалите эти две строки:

sql = "SELECT part_name, supplier_name FROM inventory LIMIT 1;"
cursor.execute(sql)

И замените их на:

sql = """
SELECT part_name, supplier_name
FROM inventory
ORDER BY part_embedding <=> %s::vector
LIMIT 1;
"""
cursor.execute(sql, (embedding_vector,))

Что это делает:

  • <=> — это оператор косинусного расстояния в PostgreSQL.
  • ORDER BY part_embedding <=> %s::vector находит ближайшее совпадение (наименьшее расстояние = ближайшее семантическое значение)
  • %s::vector преобразует ваш массив вложений в векторный тип PostgreSQL.
  • LIMIT 1 возвращает только наиболее близкое совпадение.
  • Индекс ScaNN автоматически ускоряет выполнение этого запроса!

Шаг 4: Сохраните файл (Ctrl+S или Cmd+S)

Теперь агент будет использовать семантический поиск вместо возврата случайных результатов!

Проверка

Проверка обнаружения A2A и инвентаризации:

curl http://localhost:8082/.well-known/agent-card.json

44500cdeeca3cee8.png

python3 -c "
from inventory import find_supplier
import json
vec = [0.1]*768
r = find_supplier(vec)
if r:
    result = {'part': r[0], 'supplier': r[1]}
    if len(r) > 2:
        result['distance'] = float(r[2]) if r[2] else None
    print(json.dumps(result))
else:
    print('No result found')
"

Ожидалось: файл agent-card.json возвращает карточку агента. Приведенный фрагмент кода на Python возвращает информацию о детали и поставщике из исходных данных.

6. Шаг 2: Глаза (Видящий Агент)

Пока база данных доступна, давайте пробудим зрение с помощью Gemini 3 Flash . Vision Agent выполняет «визуальные вычисления» посредством выполнения кода. Сервер A2A (main.py) делегирует задачу agent_executor.py, который вызывает agent.py для анализа Gemini.

Аудит: Галлюцинация

Если задать стандартной мультимодальной модели вопрос: «Сколько квадратов на этом беспорядочном изображении?», она обработает изображение как статический снимок и сделает предположение.

  • Модель говорит: «Я вижу около 12 коробок».
  • В действительности: всего 15 коробок.
  • Результат: Сбой в цепочке поставок.

Решение: Пробуждение цикла «Думай-Действуй-Наблюдай»

Мы включаем выполнение кода и ThinkingConfig , чтобы модель писала код на Python (OpenCV) для детерминированного подсчета.

  1. Откройте файл agents/vision-agent/agent.py.
  2. Найдите раздел GenerateContentConfig.
  3. Раскомментируйте блок thinking_config=types.ThinkingConfig(...) и tools=[types.Tool(code_execution=...)].
  4. Клиент уже настроен на использование вашего GEMINI_API_KEY из среды выполнения.

Файл: agents/vision-agent/agent.py

config = types.GenerateContentConfig(
    temperature=0,
    # CODELAB STEP 1: Uncomment to enable reasoning
    thinking_config=types.ThinkingConfig(
        thinking_level="LOW",  # Valid: "MINIMAL", "LOW", "MEDIUM", "HIGH"
        include_thoughts=False    # Set to True for debugging
    ),
    # CODELAB STEP 2: Uncomment to enable code execution
    tools=[types.Tool(code_execution=types.ToolCodeExecution)]
)

Почему thinking_level="LOW"?

Для решения данной конкретной задачи (подсчет элементов посредством выполнения кода) параметр "LOW" обеспечивает достаточный объем вычислительных ресурсов для:

  • Спланируйте структуру скрипта на Python.
  • Выберите подходящий метод обработки изображений.
  • Убедитесь, что количество совпадает с числом ограничивающих прямоугольников.

Использование параметра "HIGH" увеличит задержку в 2-3 раза и стоимость без повышения точности для детерминированных задач. Используйте "HIGH" только для сложных многоэтапных рассуждений (например, "Проанализируйте сбой в цепочке поставок и порекомендуйте 3 альтернативных поставщика с обоснованием").

Оптимизация соотношения затрат и производительности — ключевой навык для разработки ИИ-приложений: необходимо соотносить глубину рассуждений со сложностью задачи.

Запустите агента Vision

🔄 Проверка пути: Если вы все еще находитесь в папке agents/supplier-agent/, сначала вернитесь в корневую папку репозитория с помощью команды cd ../..

Шаг 1: Перейдите в каталог агентов Vision.

cd agents/vision-agent

Шаг 2: Установка зависимостей

pip install -r requirements.txt

Шаг 3: Запустите сервер агента Vision.

uvicorn main:app --host 0.0.0.0 --port 8081 > /dev/null 2>&1 &

Команда `> /dev/null 2>&1 &` запускает сервер в фоновом режиме и подавляет вывод, чтобы он не прерывал работу терминала.

Проверка

Проверка обнаружения A2A:

curl http://localhost:8081/.well-known/agent-card.json

Ожидается: JSON с именем агента и его навыками. Фактический подсчет обнаруженных объектов вы проверите с помощью пользовательского интерфейса диспетчерской вышки на шаге 8.

dc9bc53007336472.png

7. Шаг 3: Рукопожатие (Карточка агента A2A)

Наш агент видит проблему (Vision) и знает поставщика (Memory). Протокол A2A обеспечивает динамическое обнаружение — интерфейс обучается взаимодействию с каждым агентом, считывая его карточку.

A2A против традиционных REST API

Аспект

Традиционный ОТДЫХ

Протокол A2A

Обнаружение конечных точек

Закодированные URL-адреса в конфигурации

Динамическое управление через /.well-known/agent-card.json

Описание возможностей

Документация API (для пользователей)

Навыки (машинночитаемые)

Интеграция

Ручной код для каждой услуги

Семантическое сопоставление: "Мне нужен поиск по инвентарю" → обнаруживает навык

Добавлен новый агент.

Обновите конфигурации всех клиентов.

Настройка не требуется — автоматическое обнаружение

Практическое преимущество: В традиционной микросервисной архитектуре, если добавить третьего «агента логистики», потребуется обновить код диспетчерской вышки, добавив его URL-адрес и контракт API. С A2A диспетчерская вышка обнаруживает его автоматически и понимает его возможности благодаря описаниям навыков на естественном языке.

Именно поэтому A2A обеспечивает возможность подключения и использования агентов по принципу Plug-and-Play — архитектурный шаблон для автономных систем.

Решение: Создайте карточку агента.

Нам необходимо определить, что может делать агент поставщика.

  1. Скопируйте файл agents/supplier-agent/agent_card_skeleton.json в файл agents/supplier-agent/agent_card.json.
  2. Отредактируйте файл, заменив заполнители:

До (скелет):

{
  "name": "___FILL: agent-name ___",
  "description": "___FILL: what-this-agent-does ___"
}

После (ваших правок):

{
  "name": "Acme Supplier Agent",
  "description": "Autonomous fulfillment for industrial parts via AlloyDB ScaNN.",
  "version": "1.0.0",
  "skills": [{
    "id": "search_inventory",
    "name": "Search Inventory",
    "description": "Searches the warehouse database for semantic matches using AlloyDB ScaNN vector search.",
    "tags": ["inventory", "search", "alloydb"],
    "examples": ["Find stock for Industrial Widget X-9", "Who supplies ball bearings?"]
  }]
}
  1. Перезапустите агент поставщика , чтобы он загрузил новую карту:

Шаг 1: Остановите работающее устройство.

pkill -f "uvicorn main:app.*8082"

Шаг 2: Перейдите в каталог агентов.

cd agents/supplier-agent

Шаг 3: Запустите агента снова.

uvicorn main:app --host 0.0.0.0 --port 8082 > /dev/null 2>&1 &

Команда `> /dev/null 2>&1 &` запускает сервер в фоновом режиме и подавляет вывод, чтобы он не прерывал работу терминала.

Шаг 4: Проверьте новую карту агента (подождите 2-3 секунды после начала).

curl http://localhost:8082/.well-known/agent-card.json

Ожидаемый результат: JSON с заполненными вами именем, описанием и навыками.

dd352ca2e7e6109a.png

8. Шаг 4: Диспетчерская вышка

Запустите интерфейс Control Tower с помощью FastAPI + WebSockets. Он обнаруживает агентов через A2A и управляет полным циклом с обновлениями в реальном времени.

Запустить все службы

Самый простой способ запустить все сервисы:

Убедитесь, что вы находитесь в корневом каталоге репозитория.

pwd  # Should end with: visual-commerce-gemini-3-alloydb

Затем,

sh run.sh

Эта единственная команда запускает:

  • Прокси-сервер аутентификации AlloyDB (если не запущен)
  • Агент Vision на порту 8081
  • Представитель поставщика в порту 8082
  • Диспетчерская вышка в порту 8080

Подождите примерно 10 секунд, пока все службы инициализируются.

Проверьте систему

Получите доступ к диспетчерской вышке:

  1. Нажмите кнопку «Предварительный просмотр веб-страницы» (значок глаза 👁️) на панели инструментов Cloud Shell.
  2. Выберите " Предварительный просмотр на порту 8080 "
  3. Панель управления диспетчерской вышки откроется в новой вкладке.

Запустите демоверсию:

  1. В правом верхнем углу: состояние подключения (зеленая точка «Live»), переключение между режимами DEMO/AUTO и элементы управления звуком.
  2. В центре : Основное рабочее поле с загрузкой изображений и визуализацией анализа.
  3. Боковые панели (появляются во время анализа): временная шкала рабочего процесса (слева), отслеживание прогресса и просмотр кода (справа).

Вариант 1: Быстрый старт (рекомендуется)

  1. На главной странице вы увидите раздел « Быстрый старт » с примерами изображений.
  2. Щелкните по любому изображению-образцу , чтобы автоматически начать анализ.
  3. Посмотрите, как работает автономный процесс (примерно 30-45 секунд).

Вариант 2: Загрузите свой собственный файл.

  1. Перетащите изображение склада/полки (PNG, JPG, до 10 МБ) или выберите нужный файл, нажав на него.
  2. Нажмите « Запустить автономный рабочий процесс ».
  3. Ознакомьтесь с четырехэтапным конвейером обработки данных.

Что происходит:

  1. Обнаружение агентов: в модальных окнах протокола A2A отображаются карточки агентов Vision и агентов-поставщиков с указанием их навыков и конечных точек.
  2. Анализ изображений: Gemini 3 Flash генерирует и выполняет код на Python (OpenCV) для подсчета элементов. Индикатор выполнения показывает подшаги. На обнаруженные элементы накладываются ограничивающие рамки. Значок результата показывает «✓ Код проверен» или «~ Предполагаемое значение».
  3. Поиск поставщика: анимация векторного поиска AlloyDB ScaNN. Отображается поисковый запрос (например, «промышленные металлические коробки»). В карточке результатов отображается найденная деталь, поставщик и оценка достоверности.
  4. Заказ оформлен: Чек с идентификатором заказа, количеством и подробной информацией.

Совет: Оставьте режим DEMO включенным (в правом верхнем углу), чтобы приостанавливать работу на каждом этапе для презентаций. В режиме AUTO рабочий процесс выполняется непрерывно.

1a031c4fd407a183.png

Что только что произошло?

Диспетчерская вышка использовала протокол A2A для обнаружения обоих агентов через файл /.well-known/agent-card.json, организовала анализ изображений (Gemini 3 Flash с выполнением кода), выполнила векторный поиск (AlloyDB ScaNN) и разместила автономный заказ — всё с обновлениями WebSocket в реальном времени. Каждый агент предоставляет свои возможности через стандарт A2A, что позволяет создавать конфигурации по принципу «подключи и работай» без использования пользовательских SDK. Подробнее: Протокол A2A

Поиск неисправностей

Ошибки, связанные с путями:

  • Сообщение " Нет такого файла или каталога " при выполнении команд означает, что вы находитесь не в корневом каталоге репозитория.
# Check where you are
pwd

# If you're lost, navigate to home and back to repo
cd
cd visual-commerce-gemini-3-alloydb

Ошибки сервиса:

  • " Адрес уже используется ": Процессы из предыдущих запусков все еще активны.
# Kill all services and restart
pkill -f uvicorn
sh run.sh  # Or manually restart individual agents
  • Службы не запускаются : проверьте, не заняты ли порты:
# Check which processes are using the ports
lsof -i :8080  # Control Tower
lsof -i :8081  # Vision Agent
lsof -i :8082  # Supplier Agent
  • Сообщение "Соединение с AlloyDB отклонено": Убедитесь, что прокси-сервер аутентификации запущен:
ps aux | grep alloydb-auth-proxy

Проблемы с подключением к AlloyDB:

Если вы видите сообщение "Подключение к серверу по адресу 127.0.0.1, порт 5432 не удался":

Если вы видите сообщение "Подключение к серверу по адресу 127.0.0.1, порт 5432 не удался":

  1. Проверка прокси-сервера аутентификации: ps aux | grep alloydb-auth-proxy
  2. Проверка включения публичного IP-адреса: gcloud alloydb instances describe INSTANCE_NAME –cluster=CLUSTER_NAME –region=us-central1 –format="value(ipAddress)"
  3. Для локальной разработки (без использования Cloud Shell):
  4. Проблема : Cloud Shell работает автоматически, но локальным компьютерам необходимы авторизованные сети.
  5. Решение : Повторно запустите sh setup.sh и выберите вариант 1 (authorize 0.0.0.0/0) при появлении соответствующего запроса.
  6. Примечание по безопасности : Даже при использовании адреса 0.0.0.0/0 для установления соединения требуется:
  7. Действительные учетные данные GCP (учетные данные приложения по умолчанию)
  8. пароль базы данных
  9. Шифрование mTLS (за это отвечает Auth Proxy)

9. Уборка

Во избежание дополнительных расходов удалите все ресурсы с помощью автоматического скрипта очистки:

# From repo root
sh cleanup.sh

Это безопасно удаляет:

  • Кластер AlloyDB (основной фактор, влияющий на стоимость)
  • Сервисы Cloud Run (если развернуты)
  • Связанные сервисные счета

Перед удалением скрипт запросит подтверждение.

10. Список литературы и дополнительные материалы

Все технические утверждения в этом практическом занятии проверены на основе официальной документации Google Cloud и Google AI.

Официальная документация

Gemini 3 Flash:

AlloyDB AI & ScaNN:

Информация о ценах:

Подтвержденные заявления о производительности

Особенность

Требовать

Источник

ScaNN против HNSW (отфильтровано)

В 10 раз быстрее

Блог Google Cloud (проверено)

ScaNN против HNSW (стандарт)

В 4 раза быстрее

Блог Google Cloud (проверено)

Объем памяти, занимаемый ScaNN

в 3-4 раза меньше

Блог Google Cloud (проверено)

Время построения индекса ScaNN

В 8 раз быстрее

Блог Google Cloud (проверено)

Таймаут выполнения кода

максимум 30 секунд

Документация Google Cloud (проверено)

Ввод-вывод файлов выполнения кода

Не поддерживается

Документация Google Cloud (проверено)

Поведение при температуре = 0

Детерминированный результат

Подтверждено сообществом

Дополнительные ресурсы

Протокол взаимодействия между агентами (A2A):

  • A2A стандартизирует обнаружение агентов и обмен информацией.
  • Карты агентов размещены по адресу /.well-known/agent-card.json
  • Формирующийся стандарт для взаимодействия автономных агентов

Исследование ScaNN:

  • На основе 12 лет исследований Google.
  • Обеспечивает работу Google Search и YouTube в масштабах миллиарда пользователей.
  • Дата выхода в широкую продажу: октябрь 2024 года.
  • Первый векторный индекс PostgreSQL, подходящий для векторов объемом от миллионов до миллиардов.

11. Режим испытаний: Повышайте уровень своих агентских навыков.

Вы создали работающую автономную цепочку поставок. Готовы двигаться дальше? Эти задачи позволят применить изученные вами методы к решению новых проблем.

Задача 1: Поиск на основе изображений (мультимодальные встраивания)

Текущий алгоритм: Агент Vision подсчитывает количество элементов → генерирует текстовый запрос → Агент Supplier встраивает текст → выполняет поиск в AlloyDB

Задача: Полностью обойтись без текста — отправить обрезанное изображение напрямую агенту поставщика.

Подсказки:

  1. Выполнение кода Vision Agent позволяет вырезать отдельные элементы из изображения на полке.
  2. Модель multimodalembedding@001 от Vertex AI может напрямую встраивать изображения.
  3. Измените файл inventory.py, чтобы он принимал байты изображения вместо текста.
  4. Обновите описание навыка A2A, указав: «Принимает: изображения/jpeg или текст».

Почему это важно: Визуальный поиск более точен для деталей со сложным внешним видом (цветовые вариации, повреждения, различия в упаковке).

Задача 2: Наблюдаемость — Доверие через прозрачность

Текущее состояние: Система работает, но заглянуть "под капот" невозможно.

Задача: Проанализировать журналы запросов AlloyDB, чтобы доказать, что векторный поиск выполняется.

Шаги:

  • Функция анализа запросов включена по умолчанию в AlloyDB. Для проверки выполните:
gcloud alloydb instances describe INSTANCE_NAME \
  --cluster=CLUSTER_NAME \
  --region=us-central1 \
  --format="value(queryInsightsConfig.queryPlansPerMinute)"
  • Выполните поиск поставщика через пользовательский интерфейс.
  • Посмотреть фактический выполненный SQL-запрос:
gcloud logging read \
  'resource.type="alloydb.googleapis.com/Instance" AND textPayload:"ORDER BY part_embedding"' \
  --limit 5 \
  --format=json

Ожидаемый результат: Вы увидите точный запрос ORDER BY part_embedding <=> $1::vector LIMIT 1 с указанием времени выполнения.

Почему это важно: Наблюдаемость укрепляет доверие. Когда заинтересованные стороны спрашивают: «Как этот агент принимает решения?», вы можете показать им план выполнения запроса, а не только результат.

Задача 3: Составление многоагентной структуры

Задача: Добавить третьего агента (агента по логистике), который будет рассчитывать стоимость доставки на основе местоположения склада и веса товара.

Архитектура:

  • Результаты работы Vision Agent: количество элементов
  • Выходные данные агента поставщика: местоположение поставщика
  • Входные данные для логистического агента (НОВИНКА): пункт назначения, вес → выходные данные: стоимость доставки + расчетное время прибытия

Подсказка: Протокол A2A делает это тривиальным — создайте новую карточку агента с навыком calculate_shipping. Центр управления обнаружит её автоматически.

Изучаемый шаблон: это ядро ​​агентно-ориентированной архитектуры — сложных систем, построенных из небольших, компонуемых специалистов.

12. Заключение

Вы успешно перешли от генеративного ИИ к агентному ИИ .

Что мы построили:

  • Наша цель: мы заменили «угадывание» выполнением кода (прошивка Gemini 3 через API-ключ).
  • Память: Мы заменили "медленный поиск" на AlloyDB ScaNN (через GCP).
  • Действие: Мы заменили "интеграцию API" протоколом A2A .

Преимущества гибридной архитектуры:

В этом практическом занятии был продемонстрирован гибридный подход:

  • Vision Agent: Использует API Gemini (ключ API) — доступен простой бесплатный тариф, не требуется оплата через GCP.
  • Агент поставщика: использует GCP (Vertex AI + AlloyDB) — решение корпоративного уровня, готовое к соблюдению нормативных требований.

Это архитектура автономной экономики. Код остаётся за вами.

Следующие шаги