Gemini 2.5 Pro API gratis prin Gemini CLI

GitHub - google-gemini/gemini-cli: An open-source AI agent that brings the power of Gemini directly into your terminal.
An open-source AI agent that brings the power of Gemini directly into your terminal. - google-gemini/gemini-cli

La sfârșit de iunie Google lansa Gemini CLI, o încercare de rival pentru Claude Code, un agent AI în terminal, bazat pe modelele Gemini 2.5 Pro și 2.5 Flash. Totuși, față de Claude Code, Gemini CLI are un avantaj major: modelul 2.5 Pro este gratis de folosit, în limita a 1000 de request-uri pe zi și 60 pe minut.

Când am văzut asta mă gândeam că ar fi destul de mișto dacă ar exista un reverse API pentru Gemini CLI, compatibil cu structura celui de la Open AI, că să poată fi folosit în chat-uri gen OpenWebUI sau în extensii de VSCode ca Cline.

gemini-cli-openai

GitHub - GewoonJaap/gemini-cli-openai: Expose Gemini CLI endpoints as OpenAI API with Cloudflare Workers
Expose Gemini CLI endpoints as OpenAI API with Cloudflare Workers - GewoonJaap/gemini-cli-openai

Nu a durat mult căutarea, că am și găsit un proiect care face fix asta, folosindu-se de Cloudflare Workers (pe care încă nu i-am înțeles complet) și credențialele de autentificare din Gemini CLI.

Instalarea e destul de simplă, doar că era puțin mai greu pe Windows. Am încercat întâi cu o imagine de node în Docker, doar că login-ul în Gemini CLI nu putea să deschidă browser-ul, așa că am apelat la nvm-windows ca să instalez node și npm direct.

Am urmat întâi prerequisites, instalând wrangler (cont de Google și Cloudflare aveam deja):

> npm install -g wrangler

Am clonat repo-ul local și am urmat pașii de pe GitHub:

> git clone https://github.com/GewoonJaap/gemini-cli-openai.git
> cd gemini-cli-openai
> npm install -g @google/gemini-cli
> gemini
> cat C:\Users\Dorin\.gemini\oauth_creds.json
> wrangler kv namespace create "GEMINI_CLI_KV"
> wrangler secret put GCP_SERVICE_ACCOUNT
> wrangler secret put OPENAI_API_KEY
> npm install
> npm run deploy

Apoi API-ul era accesibil (cu un Bearer token definit mai devreme ca secret, OPENAI_API_KEY) din Cloudflare Workers, cu cost zero și limite destul de lejere:

> curl https://gemini-cli-worker.***.workers.dev/


StatusCode        : 200
StatusDescription : OK
Content           : {"name":"Gemini CLI OpenAI Worker","description":"OpenAI-compatible API for Google Gemini models
                    via OAuth","version":"1.0.0","authentication":{"required":true,"type":"Bearer token in
                    Authorization he...
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    CF-RAY: 96043998c86a6250-OTP
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type, Authorization
                    Access-Control-Allow-Methods: GET, POS...
Forms             : {}
Headers           : {[Connection, keep-alive], [CF-RAY, 96043998c86a6250-OTP], [Access-Control-Allow-Origin, *],
                    [Access-Control-Allow-Headers, Content-Type, Authorization]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : System.__ComObject
RawContentLength  : 440

L-am testat din OpenWebUI și din VSCode cu Cline, ambele merg perfect, ambele sunt în stare să citească modelele disponibile din /v1/models. Streaming-ul, chiar dacă încet, merge și el.