# Полный гайд по Google Gemini AI: от основ до создания чат-бота

Источник: https://www.youtube.com/watch?v=DJtX3S7qx2s
Канал: freeCodeCamp.org
Опубликовано: 22.02.2024

---

Эта статья основана на видеокурсе freeCodeCamp.org, который провела разработчик Ана Кубо (Ania Kubów). В материале подробно разбирается работа с моделями Google Gemini AI, архитектура больших языковых моделей (LLM) и процесс создания полноценного чат-бота на стеке Node.js и React.

## 🤖 Что такое Gemini и как работает современный ИИ
[[JUMP:01:29]]

Google Gemini — это серия мультимодальных генеративных моделей ИИ [01:34]. В отличие от узкоспециализированных систем, Gemini является мультимодальной: она способна обрабатывать не только текст, но и изображения, выдавая текстовые ответы в зависимости от выбранной вариации модели [01:47].

По определению Ани Кубо, ИИ — это симуляция человеческого интеллекта машинами. Важно понимать, что на текущем этапе ИИ не обладает сознанием; это сложная система машинного обучения [04:17]. Принцип её работы строится на:

*   Анализе огромных массивов данных для поиска корреляций.
*   Предсказании результатов на основе выявленных паттернов [04:29].

Например, если скормить модели тысячи текстов о моде и финансах, она с высокой точностью определит категорию нового абзаца, просто сопоставив ключевые слова и структуры [05:21].

## 🧠 Анатомия LLM: вероятности и «температура»
[[JUMP:05:46]]

Большие языковые модели (LLM) — это подвид машинного обучения, предназначенный для понимания и генерации человеческого языка. По мнению Кубо, на базовом уровне LLM можно сравнить с очень продвинутой системой автодополнения текста [06:12]. 

Процесс генерации ответа в LLM проходит в два этапа:

1.  **Детерминированный этап:** Модель анализирует ввод и вычисляет распределение вероятностей для следующего токена (слова). Для фразы «Собака прыгнула через...» слово «забор» будет иметь более высокий балл вероятности, чем «одеяло» [07:34].
2.  **Этап декодирования:** Здесь в игру вступает параметр **Temperature (Температура)** [08:25].
    *   **Температура 0:** Модель всегда выбирает самый вероятный токен. Ответы становятся предсказуемыми и строгими.
    *   **Высокая температура:** Модель вводит элемент случайности, выбирая менее вероятные слова. Это делает ответы более креативными, неожиданными или «живыми» [08:39].

## 🔑 Безопасность и получение API-ключа
[[JUMP:08:51]]

Для интеграции Gemini в свои приложения необходим API-ключ, который можно получить в Google AI Studio [10:24]. 

Ана Кубо делает критически важное предупреждение: **никогда не публикуйте свой API-ключ в открытом доступе и не используйте его в клиентском коде (frontend)** [09:04]. Любой пользователь может просмотреть код страницы через инспектор браузера, украсть ключ и израсходовать ваши лимиты или средства на банковской карте [09:17]. 

Безопасный метод работы — хранение ключа на бэкенд-сервере в переменных окружения (`.env`) [09:42].

## 🛠 Обзор инструментов и токенизация
[[JUMP:12:10]]

Перед началом разработки важно понять, как измеряется объем данных. В Gemini используются токены. 

*   **Правило большого пальца:** 1 токен ≈ 4 символа. 100 токенов — это примерно 60–80 английских слов [12:36].
*   Инструментарий курса включает:
    *   **Node.js** (версия 18+) и **npm** [15:05].
    *   Библиотека `@google/generative-ai` для взаимодействия с SDK [15:30].
    *   Пакет `dotenv` для защиты секретов [20:01].

### Основные модели в семействе Gemini:

1.  **Gemini Pro:** Оптимизирована для задач, основанных только на тексте [14:25].
2.  **Gemini Pro Vision:** Мультимодальная модель, принимающая текст и изображения [14:39].
3.  **Embedding-001:** Создает векторные представления текста для поиска сходства [15:05].

## 🖼 Практика: текст, изображения и эмбеддинги
[[JUMP:21:35]]

### Генерация текста
Базовый запрос выполняется методом `generateContent`. Пример кода включает инициализацию модели и асинхронное ожидание ответа [23:12]. В тесте модели Ана попросила написать сказку о магическом рюкзаке, и ИИ сгенерировал историю о девочке по имени Ана, что ведущая назвала забавным совпадением [24:17].

### Работа с изображениями (Vision)
Для анализа картинок используется модель `Gemini Pro Vision`. В демонстрации Кубо передала функции два изображения (кота и персонажа Рика из «Рика и Морти») и попросила найти различия [28:48]. Модель успешно распознала кота, но ошиблась с Риком, назвав его персонажем из аниме One Punch Man [30:46].

### Эмбеддинги (Embeddings)
Это продвинутая техника представления текста в виде массива чисел (векторов) [35:30]. 

*   Схожие по смыслу слова (например, «кошка» и «собака») будут иметь похожие числовые значения векторов [35:56].
*   Это позволяет машинам понимать контекстуальную близость понятий, даже если слова разные.

## 💻 Финальный проект: AI Code Buddy
[[JUMP:38:55]]

В завершающей части курса Ана создает полноценное фулстек-приложение — чат-бота с сохранением контекста беседы.

**Архитектура проекта:**

*   **Frontend:** React. Основные компоненты: поле ввода, кнопка «Surprise me» для случайных вопросов и область отображения диалога [44:34].
*   **Backend:** Express (Port 8000). Обрабатывает POST-запросы и общается с API Google [10:26].

**Ключевая особенность: Мульти-чат (Multi-turn conversation)**
Чтобы бот помнил предыдущие фразы, на бэкенд передается не только последний вопрос, но и весь массив `history` [1:13:48]. 
История состоит из объектов с ролями:

*   `user`: текст пользователя.
*   `model`: ответ ИИ [32:10].

Благодаря этому, если пользователь спрашивает «Когда Рождество?», а затем задает уточняющий вопрос «Ты уверен?», Gemini понимает, что вопрос «Ты уверен?» относится именно к дате Рождества, а не к чему-то другому [1:18:29].

В итоге получается адаптивный интерфейс, где кнопка «Surprise me» подставляет случайные глубокие вопросы о Нобелевской премии или приготовлении сэндвичей, а ИИ поддерживает связный диалог, имитируя человеческое общение [1:01:31].