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

Я подписан в 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, поделитесь ими в комментариях!

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


  1. Robastik
    27.01.2025 05:51

    Прокси на воркерах CF - хорошая идея)

    Требует развития.


  1. provide
    27.01.2025 05:51

    В этом api можно изображения отправлять?


    1. morozovsk Автор
      27.01.2025 05:51

      Судя по документации - да.


    1. gfiopl8
      27.01.2025 05:51

      В джемини можно и картинки, и звук/видео, и документы. И еще запросы в ИИ поиск гугла можно делать.

      У больших моделей лимит 2 запроса в минуту, и плюс они чаще не отвечают (перегружены).

      У 2.0 моделей лимит 10 запросов в минуту.

      У 1.5 - 15.

      1млн токенов там в минуту но сами запросы для бесплатных запросов ограничены размером 128к и даже меньше для думающих моделей.

      Кроме гугла так же много халявы дает мистраль https://console.mistral.ai/api-keys/. Может даже больше, там лимит 1 запрос в секунду, 500к токенов в минуту и 1млрд в месяц (это примерно 50000 запросов по 20т токенов)

      И еще из интересных вариантов - самбанова, там раздают очень много лламы, и квина, причем ллама там большая 405 и отвечает очень быстро. Лимит что то около 10 запросов в минуту, контекст всего 8к.


      1. morozovsk Автор
        27.01.2025 05:51

        У больших моделей лимит 2 запроса в минуту, и плюс они чаще не отвечают (перегружены).

        Я с таким ни разу не сталкивался и в логах у себя не видел. Возможно у меня мало статистики. Единственная ошибка, которую я ловил - это "User location is not supported for the API use." Раньше всё работало, но недавно на моём сервере в Германии (hetzner) стал ловить ошибки, поэтому и пришлось городить прокси на cloudflare и aws.

        для бесплатных запросов ограничены размером 128к

        С этим тоже не сталкивался. Для gemini-2.0-flash-thinking-exp да, ограничение на длину контекста 32k. В него периодически упираюсь и тогда делаю запросы на gemini-2.0-flash-exp.

        Кроме гугла так же много халявы дает мистраль

        Спасибо за дополнение - потестирую.

        В джемини можно и картинки, и звук/видео, и документы.

        Сейчас узнал, что его можно использовать ещё и в Cursor (The AI Code Editor). Скачал курсор, добавил в настройки гугловый apikey - всё работает.


        1. gfiopl8
          27.01.2025 05:51

          Лимит на большие запросы виден на... больших запросах. 128к токенов это примерно 450т английских букв в обычном тексте и 350т в русском.

          У джемини есть какое то разделение на запросы до 128к и выше, в платной версии у них даже цена различается, большие запросы дороже.

          Ps я там еще позже дописал про запросы в гугл через джемини, это вообще чумовая штука обязательно посмотри, фишка называется grounding, можно приделать чат боту команду гугл и задавать вопросы в нейрогугол.


          1. Per_Ardua
            27.01.2025 05:51

            Да, граудинг - вещь топовая. Задумывалась, правда, не так, как большинство её используют)