Несколько дней назад я решал задачу подключения 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 умеет сравнивать, искать общее, следовать логике описания для набора изображений.

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

Комментарии (18)


  1. theurus
    14.12.2023 10:11

    С большим трудом нашел впн с которого это работает.

    Получил апи ключ тут ai.google.dev/

    Посмотрел пример реквеста на курле. Сделал чатик для консоли. Вроде работает, без всех этих ваших облаков, кредитных карт и библиотек.

    https://pastebin.com/p32TKuh0

    (Да я уже заметил что память там не правильно отчищается)


  1. Extender
    14.12.2023 10:11

    Спасибо! Сейчас подключу к себе на Manga TV. Если честно, palm-2-32k был слабоват в сторителлинге


  1. Extender
    14.12.2023 10:11

    Если кому то интересно как подключить на NodeJS (без дурацкой неработающей под Windows библиотеки vertex), пишите


  1. idle0
    14.12.2023 10:11

    1. Если вы запускаете это в Google Colab to там уже установленgoogle-cloud-aiplatform и надо его обновить командойpip install "google-cloud-aiplatform>=1.38" , иначе ничего не будет работать

    2. Для загрузки картинки можно воспользоваться готовой Part.from_uri

      ```

      Part.from_uri("https://moscowplaces.com/wp-content/uploads/2017/11/vorobyevi-gori-moskva-2.jpg", mime_type="image/jpeg")
      ```


    1. SKarulin Автор
      14.12.2023 10:11

      Спасииииибо!


      1. Extender
        14.12.2023 10:11

        Кстати, не вижу списания со счета, неужели пока бесплатно?


        1. SKarulin Автор
          14.12.2023 10:11

          Я думаю, он списывает по результату периода. Можно в билинге посмотреть расходы (но лучше на следующий день), а если это первый платёжный аккаунт, то сначала будет тратиться $300 грант, а уже потом - живые деньги.


          1. Extender
            14.12.2023 10:11

            Не первый, конечно, уже лет 5 работаю с ним. Просто за chat-bison вроде бы сразу статистика по деньгам менялась, но вы правы, надо завтра посмотреть.


          1. Extender
            14.12.2023 10:11

            Нашел статью где пишут что АПИ пока бесплатный, с ограничением 60 запросов в минуту (что в общем то очень много)


            1. SKarulin Автор
              14.12.2023 10:11

              О, а я не знал. Полезно, спасибо.


              1. Extender
                14.12.2023 10:11

                Да и потом цены неплохие будут:

                Google has already released the prices for Gemini Pro: $0.00025 per thousand characters or $0.0025 per image. Output costs $0.0005 per thousand characters.


  1. theurus
    14.12.2023 10:11

    С большим трудом нашел впн с которого это работает.

    Получил апи ключ тут ai.google.dev/

    Посмотрел пример реквеста на курле. Сделал чатик для консоли. Вроде работает, без всех этих ваших облаков, кредитных карт и библиотек.

    https://pastebin.com/p32TKuh0

    (Да я уже заметил что память там не правильно отчищается)


    1. SKarulin Автор
      14.12.2023 10:11

      Это только пока API бесплатная. Выше в комментариях подсказали. Но для попробовать Ваш способ точно лучше ) Закреплю комментарий вверху.


      1. SKarulin Автор
        14.12.2023 10:11

        Спасибо!


    1. Extender
      14.12.2023 10:11

      Ну я в принципе почти так же подключил, но у вас токен через 30 минут кончается, а я сделал более-менее на продакшне


  1. theurus
    14.12.2023 10:11

    Нашел способ отключить ему цензуру. Надо добавлять в запрос

                "safetySettings": [

                {

                    "category": "HARM_CATEGORY_HARASSMENT",

                    "threshold": "BLOCK_NONE"

                },

                {

                    "category": "HARM_CATEGORY_HATE_SPEECH",

                    "threshold": "BLOCK_NONE"

                },

                {

                    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",

                    "threshold": "BLOCK_NONE"

                },

                {

                    "category": "HARM_CATEGORY_DANGEROUS_CONTENT",

                    "threshold": "BLOCK_NONE"

                }

            ]

    Добавил к себе в телеграм бота https://t.me/kun4sun_bot - надо затестить


    1. Extender
      14.12.2023 10:11

      А как вы Claude подключили? Я до сих пор в waitlist, уже месяц прошел


      1. theurus
        14.12.2023 10:11

        1. SKarulin Автор
          14.12.2023 10:11

          А вот это спасибо! Они меня прока продинамили с запросом раннего досутпа.