Используем HTTP API Gemini 2.0 thinking бесплатно

от автора

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

Я подписан в Telegram на десяток новостных каналов про ИИ, но только недавно с удивлением для себя обнаружил, что гугл даёт делать 1500 бесплатных запросов в сутки на свои модели Gemini, что вполне достаточно для создания прототипа или даже небольшого pet-проекта. Как по мне так это неплохой способ начать экспериментировать с gpt-моделями, при этом ничего не платить и не возиться с банковской картой.

На ai.google.dev видно, что можно использовать 1500 запросов на gemini 1.5 flash и 1500 на gemini 1.5 flash 8b. Размер контекста — 1 миллион токенов.
Карту привязывать не надо. Я вообще создал под это дело новый гугл-аккаунт, чтобы не париться, что могу не уложиться в бесплатные лимиты.
Однако в прайсе не указано, что помимо моделей 1.5 flash, также доступны бесплатно ещё и топовые модели gemini 2.0 flash и gemini 2.0 flash thinking. С теми же ограничениями — не более 1500 запросов в сутки на каждую.

Однако можно столкнуться с ограничением «User location is not supported for the API use.»

Мне не хотелось арендовать сервер в штатах или в другой стране, для которой позволяют делать эти бесплатные запросы и при этом хотелось надёжный и бесплатный прокси.

Один из вариантов для этого — cloudflare workers. Ограничения на бесплатном тарифе — 100к вызовов своего кода в день. Код можно писать на js.

Я раньше никогда не создавал своих воркеров в cloudflare, поэтому код был сгенерирован в бесплатной версии chatgpt.

Вот пример кода, который будет проксировать все наши запросы к generativelanguage.googleapis.com:

export default {   async fetch(request) {     // URL внешнего сервера     const externalUrl = "https://generativelanguage.googleapis.com";      // Формирование полного URL для запроса     const url = new URL(request.url);     const proxiedUrl = externalUrl + url.pathname + url.search;      try {       // Проксирование запроса       const proxiedRequest = new Request(proxiedUrl, {         method: request.method,         headers: request.headers,         body: request.method !== "GET" && request.method !== "HEAD" ? request.body : null,       });        // Выполнение запроса к внешнему API       const response = await fetch(proxiedRequest);        // Возврат ответа клиенту       return new Response(response.body, {         status: response.status,         statusText: response.statusText,         headers: response.headers,       });     } catch (error) {       // Обработка ошибок       return new Response(JSON.stringify({ error: error.message }), {         status: 500,         headers: { "Content-Type": "application/json" },       });     }   }, };

В принципе таким способом можно сделать свой бесплатный прокси для чего угодно.

Далее делаем http-запросы уже не к generativelanguage.googleapis.com, а к myworker.myaccount.workers.dev.

Пример:

Получить apikey для запросов можно в aistudio.google.com. Если по какой-то причине у вас забанен этот сайт, то вот один из простых способов. Это нужно сделать всего один раз, чтобы получить apikey, больше в aistudio заходить не понадобится.

Используя Gemini API я сделал себе два телеграмм бота.

Первый — это свой собственный Gemini 2.0 Thinking бот. В основном я просто пересылаю в него сообщения из диалогов в тг, когда кто-то задаёт вопрос, а мне лень копировать-вставить в chatgpt.

Второй бот — более сложный. Это @kiprinfobot — он находит все релевантные диалоги в кипрских телеграмм-чатах, а потом отправляет их в gemini, который уже формирует развёрнутый итоговый ответ. Я сделал это с помощью RAG (postgresql + pgvector + jina-embeddings), но можно сделать проще: отправляем пользовательский запрос в gemini и просим извлечь ключевые слова, далее делаем по своей базе полнотекстовый поиск по ключевым словам и делаем второй запрос в gemini, отправляя запрос пользователя и всё что было найдено в нашей базе данных по ключевым словам. Если читателям будет интересно, то я постараюсь написать статью, как именно я делал этого бота.

Примеры работы @kiprinfobot

Дополнительная информация:

Прокси на aws lambda

AWS Lambda даёт бесплатно 1 млн запросов в месяц. Для создания аккаунта нужна карта.

Код прокси, который сгенерировал chatgpt:

export async function handler(event) {   const externalUrl = "https://generativelanguage.googleapis.com";    // Формирование полного URL для запроса   const path = event.rawPath || event.path;   const queryString = event.queryStringParameters     ? new URLSearchParams(event.queryStringParameters).toString()     : "";   const proxiedUrl = `${externalUrl}${path}${queryString ? `?${queryString}` : ""}`;    //return [proxiedUrl, event];   try {     // Подготовка опций для fetch     const options = {       method: event.body ? 'POST': 'GET',       headers: {         ...event.headers,       },       body: event.body ? event.body : null,     };      // Выполнение запроса к внешнему API     const response = await fetch(proxiedUrl, options);      // Чтение тела ответа     const responseBody = await response.text();      // Возврат ответа клиенту     return {       statusCode: response.status,       headers: response.headers,       body: responseBody,     };   } catch (error) {     return {       statusCode: 500,       body: JSON.stringify({ error: error.message }),       headers: { "Content-Type": "application/json" },     };   } }

Также gemini-2.0-flash-thinking-exp можно бесплатно использовать в Cursor (The AI Code Editor). Если у вас есть другие идеи, как использовать бесплатные возможности Google Gemini, поделитесь ими в комментариях!


ссылка на оригинал статьи https://habr.com/ru/articles/876566/