Несколько дней назад я решал задачу подключения 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, поскольку именно она заявлена как главный прорыв.
Подключить модель просто, весь процесс состоит из четырёх шагов
Настройка платежного аккаунта в Google Cloud.
Включение Vertex AI и подключение тарификации.
Установка Google Cloud CLI и модуля vertexai.generative_models.
Написание и запуск python-файла.
Настройка платежного аккаунта и создание проекта
Процесс довольно прозрачен, подсвечу лишь последовательность действий и нюансы.
Перейдите в консоль Google Cloud.
При первой регистрации в консоли Google, как и Яндекс, предоставляет грант. Размер - $300, срок использования - 90 дней.-
Создайте способ оплаты. Насколько я могу судить, требуется аккаунт юридического лица, по крайней мере, для меня опция использования личного аккаунта была недоступна.
Здесь стоит сказать, что потребуется пластиковая карта иностранного банка. К сожалению, отечественные Google пока еще не принимает. Надеюсь, у всех есть друзья, готовые помочь. Забегая вперёд, оно того стоит.
Вновь созданный аккаунт потребует активации, которая выполняется кнопкой "Activate" в правом верхнем углу страницы.
Создайте проект по ссылке. После этого, если у Вас больше одного проекта, выбрать проект можно из выпадающего списка, расположенного справа от логотипа Google Cloud вверху страницы.
Включение Vertex AI и подключение тарификации
Перейдите на страницу Vertex AI API и нажмите синюю кнопку "ENABLE". После система предложит выбрать аккаунт для тарификации, который мы создали ранее.
После выбора аккаунта тарификации Вы попадёте на страницу API.
Установка Google Cloud CLI и модуля vertexai.generative_models
Оговорюсь, что пример сделан под Windows.
Скачайте Google Cloud CLI здесь. Согласно документации, для установке ей требуется Python от 3.8 до 3.12, однако ничего по этому поводу делать не нужно: установочный пакет включет его. В конце установке отметьте, как минимум, чекбокс "start the Google Cloud CLI shell". Если не отметили, её придётся запустить вручную, а затем выполнить в ней команду "gcloud init".
Инициализация идёт в три шага. На первом откроется бразуер и потребуется авторизоваться в Google аккаунте. На втором спросит, нужен ли сервисный аккаунт, для целей демонстрации я его не создавал, и не использовал. На третьем будет предложено выбрать проект и расположение сервера.
Установите модуль vertexai.generative_models командой:
pip install google-cloud-aiplatform
Не закрывайте окно CLI консоли: она скоро нам пригодится.
Написание и запуск python-файла
Как и в случае с Yandex GPT, это самая простая часть.
Создайте .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 <имя_модуля>.
Выполните в CLI консоли: python "путь_к_файлу_testGeminiPro.py". В моём случае это было:
python C:\Users\Sergey\testGeminiPro.py
В качестве ответа вернётся:
Это Москва, район Воробьевы горы. Рядом с этим местом находятся: смотровая площадка на Воробьевых горах, канатная дорога, МГУ, Поклонная гора, Нескучный сад, Андреевский пруд.
Впечатляет, не правда, ли?
Наблюдения
Работает исключительно быстро. Даже на русском языке. Не хватило сил сегодня сделать замеры, но на глаз, раз в 5 быстрее, чем API от Open AI при использовании gpt-4-1106-preview.
Всё доступно с российских IP. Как само API, так и консоль Google Cloud. Никаких блокировок ни с нашей стороны, ни с их.
Модель неплохо играет на поляне OpenAI. Если задавать узкопрофильные вопросы, даёт достойные ответы. Но, на примерее тематикии микробиологии, ChatGPT и их доступная через API "gpt-4-1106-preview" пока еще впереди. Но, повторюсь, в высшей степени достойно. Поработаю подольше, может, отношение и изменится.
Мультимодальность впечатляет. Очень советую поэкспериметировать, не ограничиваясь "опиши эту картинку". Gemini Pro Vision умеет сравнивать, искать общее, следовать логике описания для набора изображений.
Вывод: на рынке снова появилась конкуренция.
Комментарии (18)
Extender
14.12.2023 10:11Спасибо! Сейчас подключу к себе на Manga TV. Если честно, palm-2-32k был слабоват в сторителлинге
Extender
14.12.2023 10:11Если кому то интересно как подключить на NodeJS (без дурацкой неработающей под Windows библиотеки vertex), пишите
idle0
14.12.2023 10:11-
Если вы запускаете это в Google Colab to там уже установлен
google-cloud-aiplatform и надо его обновить командой
pip install "google-cloud-aiplatform>=1.38" , иначе ничего не будет работать -
Для загрузки картинки можно воспользоваться готовой Part.from_uri
```Part.from_uri("https://moscowplaces.com/wp-content/uploads/2017/11/vorobyevi-gori-moskva-2.jpg", mime_type="image/jpeg")
```
SKarulin Автор
14.12.2023 10:11Спасииииибо!
Extender
14.12.2023 10:11Кстати, не вижу списания со счета, неужели пока бесплатно?
SKarulin Автор
14.12.2023 10:11Я думаю, он списывает по результату периода. Можно в билинге посмотреть расходы (но лучше на следующий день), а если это первый платёжный аккаунт, то сначала будет тратиться $300 грант, а уже потом - живые деньги.
Extender
14.12.2023 10:11Не первый, конечно, уже лет 5 работаю с ним. Просто за chat-bison вроде бы сразу статистика по деньгам менялась, но вы правы, надо завтра посмотреть.
Extender
14.12.2023 10:11Нашел статью где пишут что АПИ пока бесплатный, с ограничением 60 запросов в минуту (что в общем то очень много)
-
theurus
14.12.2023 10:11С большим трудом нашел впн с которого это работает.
Получил апи ключ тут ai.google.dev/
Посмотрел пример реквеста на курле. Сделал чатик для консоли. Вроде работает, без всех этих ваших облаков, кредитных карт и библиотек.
(Да я уже заметил что память там не правильно отчищается)
Extender
14.12.2023 10:11Ну я в принципе почти так же подключил, но у вас токен через 30 минут кончается, а я сделал более-менее на продакшне
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 - надо затестить
theurus
С большим трудом нашел впн с которого это работает.
Получил апи ключ тут ai.google.dev/
Посмотрел пример реквеста на курле. Сделал чатик для консоли. Вроде работает, без всех этих ваших облаков, кредитных карт и библиотек.
https://pastebin.com/p32TKuh0
(Да я уже заметил что память там не правильно отчищается)