Подключение Google Gemini Pro к проекту на Python

38fe0813b4b1f78c193566f82bc89441

Несколько дней назад я решал задачу подключения Yandex GPT, и главной сложностью там было освоение Yandex Cloud Console. В остальном API — вылитая LLaMa 2.

С Google Gemini история иная. Документация консоли содержит те самые вставки «New to Google Cloud», отсутствие которых вдохновило меня писать про Yandex GPT. При работе с консолью есть нюансы, их и выделим ниже по тексту. Но в целом, можно просто следовать документации, и всё получится.

В Google Cloud теперь доступны два пространства, с которых можно начинать: Vertex AI Studio и Model Garden. Первая предназначена для экспериментов с моделями и отладки промптов. А вторая — библиотека моделей, где всего их на сегодня 56, среди них упомянутая LLaMa 2, PaLM 2, знаменитый тем, что на нём работет Google Bard и, возможно, скоро мы увидим прорыв в медконсультировании Med PaLM 2, Gemini Pro. Мы сегодня коснёмся только Gemini Pro Vision, поскольку именно она заявлена как главный прорыв.

Подключить модель просто, весь процесс состоит из четырёх шагов

  1. Настройка платежного аккаунта в Google Cloud.

  2. Включение Vertex AI и подключение тарификации.

  3. Установка Google Cloud CLI и модуля vertexai.generative_models.

  4. Написание и запуск python-файла.

Настройка платежного аккаунта и создание проекта

Процесс довольно прозрачен, подсвечу лишь последовательность действий и нюансы.

  1. Перейдите в консоль Google Cloud.
    При первой регистрации в консоли Google, как и Яндекс, предоставляет грант. Размер — $300, срок использования — 90 дней.

  2. Создайте способ оплаты. Насколько я могу судить, требуется аккаунт юридического лица, по крайней мере, для меня опция использования личного аккаунта была недоступна.
    Здесь стоит сказать, что потребуется пластиковая карта иностранного банка. К сожалению, отечественные Google пока еще не принимает. Надеюсь, у всех есть друзья, готовые помочь. Забегая вперёд, оно того стоит.

  3. Вновь созданный аккаунт потребует активации, которая выполняется кнопкой «Activate» в правом верхнем углу страницы.

  4. Создайте проект по ссылке. После этого, если у Вас больше одного проекта, выбрать проект можно из выпадающего списка, расположенного справа от логотипа Google Cloud вверху страницы.

Включение Vertex AI и подключение тарификации

  1. Перейдите на страницу Vertex AI API и нажмите синюю кнопку «ENABLE». После система предложит выбрать аккаунт для тарификации, который мы создали ранее.

  2. После выбора аккаунта тарификации Вы попадёте на страницу API.

Установка Google Cloud CLI и модуля vertexai.generative_models

Оговорюсь, что пример сделан под Windows.

  1. Скачайте Google Cloud CLI здесь. Согласно документации, для установке ей требуется Python от 3.8 до 3.12, однако ничего по этому поводу делать не нужно: установочный пакет включет его. В конце установке отметьте, как минимум, чекбокс «start the Google Cloud CLI shell». Если не отметили, её придётся запустить вручную, а затем выполнить в ней команду «gcloud init».

  2. Инициализация идёт в три шага. На первом откроется бразуер и потребуется авторизоваться в Google аккаунте. На втором спросит, нужен ли сервисный аккаунт, для целей демонстрации я его не создавал, и не использовал. На третьем будет предложено выбрать проект и расположение сервера.

  3. Установите модуль vertexai.generative_models командой:

pip install google-cloud-aiplatform

Не закрывайте окно CLI консоли: она скоро нам пригодится.

Написание и запуск python-файла

Как и в случае с Yandex GPT, это самая простая часть.

  1. Создайте .py-файл, например, testGeminiPro.py, следующего содержания:.

import http.client
import typing
import urllib.request
from vertexai.preview.generative_models import GenerativeModel, Image, Part

import urllib.request

def load_image_from_url(image_url: str) -> Image:
    # Готовим изображение. Обратите внимание, что это не PIL Image!
    # это Image из vertexai.preview.generative_models
    with urllib.request.urlopen(image_url) as response:
        response = typing.cast(http.client.HTTPResponse, response)
        image_bytes = response.read()
    return Image.from_bytes(image_bytes)

def generate_text(prompt) -> str:
    import vertexai
    project_id = "fair-catbird-407919"
    location = "us-central1"
    vertexai.init(project=project_id, location=location)
    multimodal_model = GenerativeModel("gemini-pro-vision")
    response = multimodal_model.generate_content(prompt)
    return response.text

# Формируем промпт. Можем подавать не только текст, но и фрагменты (parts) типа, картинка, словарь, URL. 
# Причём по URL может располагаться даже видео. Точно знаю, что поддерживает, как минимум, mp4.
prompt = [
            "Что это за город, район? Какие достопримечательности находятся рядом с этим местом?",
            Part.from_image(load_image_from_url("https://moscowplaces.com/wp-content/uploads/2017/11/vorobyevi-gori-moskva-2.jpg"))
         ]

result = generate_text(prompt)
print(result)

Я упустил момент с установкой модулей (http.client, typing, urllib.request). Судя по всему, они уже были в комплекте установки, либо Google Cloud CLI, либо google-cloud-aiplatform. Если на следующем шаге Вы получите ошибку, связанную с отсутсвтием какого-либо модуля, просто установите его через консоль командой pip install <имя_модуля>.

  1. Выполните в CLI консоли: python «путь_к_файлу_testGeminiPro.py». В моём случае это было:

python C:\Users\Sergey\testGeminiPro.py
  1. В качестве ответа вернётся:

Это Москва, район Воробьевы горы. Рядом с этим местом находятся: смотровая площадка на Воробьевых горах, канатная дорога, МГУ, Поклонная гора, Нескучный сад, Андреевский пруд.

Впечатляет, не правда, ли?

Наблюдения

  1. Работает исключительно быстро. Даже на русском языке. Не хватило сил сегодня сделать замеры, но на глаз, раз в 5 быстрее, чем API от Open AI при использовании gpt-4–1106-preview.

  2. Всё доступно с российских IP. Как само API, так и консоль Google Cloud. Никаких блокировок ни с нашей стороны, ни с их.

  3. Модель неплохо играет на поляне OpenAI. Если задавать узкопрофильные вопросы, даёт достойные ответы. Но, на примерее тематикии микробиологии, ChatGPT и их доступная через API «gpt-4–1106-preview» пока еще впереди. Но, повторюсь, в высшей степени достойно. Поработаю подольше, может, отношение и изменится.

  4. Мультимодальность впечатляет. Очень советую поэкспериметировать, не ограничиваясь «опиши эту картинку». Gemini Pro Vision умеет сравнивать, искать общее, следовать логике описания для набора изображений.

Вывод: на рынке снова появилась конкуренция.

© Habrahabr.ru