I Aipress tester fick Claude Code verktyget att fungera direkt genom att läsa dess hjälptext. Vid granskningen av samma kodändring hittade Gemini 3.8 Flash fyra inlagda buggar och Gemini 4 Argon alla sex. Dokumentanalysen gav rätt svar från båda modellerna, medan ett uppdrag till forskningsagenten Deep Research förblev oavgjort.
Vad gör Gemini API CLI?
Gemini API CLI, med programnamnet gemini-api, anropar Googles tjänster från terminalen, där instruktioner skrivs som kommandon. Det är byggt för AI agenter med tillgång till en sådan miljö, men fungerar också i vanliga skript och automatiska byggflöden.
Google beskriver i dokumentationen för Gemini API CLI hur samma kommandon kan användas av bland annat Claude Code, Codex, Cursor och Antigravity. En kodagent kan exempelvis skapa både en illustration och en berättarröst till en webbsida och samtidigt beställa en bakgrundsanalys från Deep Research.
För den som i stället bygger in Gemini i en egen app hänvisar Google till sina SDK:er, programbibliotek som används direkt i appens kod. Kommandoradsverktyget är till för att anropa Gemini utan att lägga till sådana bibliotek.
Verktyget täcker flera typer av innehåll. Kommandona nedan visar hur arbetet är uppdelat.
| Uppgift | Kommando | Vad verktyget gör |
|---|---|---|
| Bilder | image |
Skapar eller redigerar bilder och sparar dem som JPEG. |
| Tal | tts |
Skapar tal som WAV-filer, med en eller två röster. |
| Musik och video | music, video |
Skapar musikspår, loopar och videoklipp. |
| Text | generate |
Skriver text direkt till terminalens utdata. |
| Dokument och inspelningar | analyze, transcribe |
Besvarar frågor om filer eller sparar tidsstämplade utskrifter med talarmarkeringar. |
| Hanterade agenter | agent |
Startar och följer upp uppdrag samt hanterar egna agentdefinitioner. |
För bilder, ljud och andra mediefiler sparas själva filen på datorn. Agenten får normalt tillbaka filens sökväg, inte en lång sträng med kodade bild- eller ljuddata. Enligt Google håller det nere mängden information som agenten behöver hantera i samtalet.
Kommandona väntar inte heller på interaktiva svar om användaren inte uttryckligen väljer det. Varje kommando saknar som standard ett dolt lokalt minne av tidigare steg. Den som vill fortsätta ett arbete skickar i stället med ett ID från en tidigare interaktion eller en referens till en uppladdad fil.
Claude Code tog in en andra kodgranskare
Aipress lät Claude Code med Opus 5.5 granska en verklig kodändring i ett skript på drygt 400 rader. Skriptet meddelar sökmotorer om ändrade sidor. Vi hade lagt in sex buggar och bad Claude att hämta en oberoende granskning från Gemini innan den lämnade sin slutliga lista. Testet mätte både om agenten kunde använda verktyget själv och vilka av de inlagda buggarna modellerna hittade.
Claude fick varken kommando eller flaggor angivna. Den läste först verktygets hjälptext och sedan hjälpen för textkommandot. Därefter skickade den hela ändringen och hela den nya filen i ett anrop som fungerade direkt. Standardmodellen Gemini 3.8 Flash svarade på cirka 37 sekunder. Hela granskningen tog 64 sekunder.
Vi skickade sedan exakt samma begäran med samma kommando till Gemini 4 Argon. Bara modellvalet ändrades. Alla svar rättades mot samma facit.
Aipress kodgranskning: resultat för varje inlagd bugg
| Inlagd bugg | Svårighet | Claude | Gemini 3.8 Flash | Gemini 4 Argon |
|---|---|---|---|---|
| Omvänt villkor: kontrollen räknade fungerande sidor som trasiga | Lätt | Hittad | Hittad | Hittad |
| Fel med ett: gränsen för hur många adresser skriptet får skicka per gång slog till en adress för tidigt | Lätt | Hittad | Missad | Hittad |
| Fel variabel: sidor som inte svarade togs bort ur kön i stället för att vänta | Medel | Hittad | Missad | Hittad |
| Krasch när listan över ändrade sidor var tom | Medel | Hittad | Hittad | Hittad |
| Svar från parallella anrop hamnade i fel ordning, så en sida kunde få en annan sidas status | Svår | Hittad | Hittad | Hittad |
| Ett nytt loggformat som en annan del av skriptet fortfarande läste på det gamla sättet | Svår | Hittad | Hittad | Hittad |
Claude och Argon hittade alla sex buggarna i den här ändringen. Flash missade gränsen som slog till en adress för tidigt och variabeln som gjorde att obesvarade sidor försvann ur kön. Ingen av modellerna rapporterade fel som inte fanns. Argons fynd pekade alla på rätt rad med rätt förklaring, och tre innehöll också en rättning. Claude märkte korrekt vem som hade hittat respektive fel i sin slutliga lista.
Aipress kodgranskning: tid, token och kostnad för Gemini-anropen
| Gemini 3.8 Flash | Gemini 4 Argon | |
|---|---|---|
| Hittade buggar | 4 av 6 | 6 av 6 |
| Felaktiga fynd | 0 | 0 |
| Svarstid | cirka 37 s | 10,4 s |
| Indatatoken | 10 334 | 10 326 |
| Utdatatoken | 301 | 540 |
| Tänketoken | 4 520 | 0 |
| Token totalt | 15 155 | 10 866 |
| Kostnad för anropet | 0,026 dollar | 0,026 dollar |
Argon svarade snabbare i den här granskningen, men de båda anropen kostade lika mycket enligt Googles listpriser. Token är de delar av innehållet som modellen behandlar och som ligger till grund för debiteringen. Tänketoken redovisar modellens interna resonemang och debiteras som utdata. Argon rapporterade inga sådana token i svaret, medan Flash gjorde det.
Gemini förklarade trasiga byggen från loggar
Nästa test på Aipress.se gällde en CI-pipeline, ett automatiskt flöde som bygger programmet och kontrollerar det med tester. Vi använde ett litet Python-paket med elva tester av enskilda programdelar och lade in fem fel, ett i taget. När ett steg föll installerade flödet Gemini API CLI och skickade loggen till Gemini med en fråga om orsak och åtgärd. Modellen fick bara loggen, inte programkoden.
Installationen i jobbets tillfälliga mapp tog mellan 0,4 och 0,8 sekunder och krävde ingen administratörsbehörighet. Alla fem anrop med standardmodellen Flash avslutades utan fel. Svaren tog mellan 5,9 och 14,6 sekunder per logg. Därefter fick Argon samma loggar och frågor genom samma kommando, med enbart modellen utbytt.
Aipress byggtest: orsak och åtgärd för varje inlagt fel
| Inlagt fel | Steget som föll | Rätt orsak, Gemini 3.8 Flash | Rätt orsak, Gemini 4 Argon | Rätt åtgärd, Gemini 3.8 Flash | Rätt åtgärd, Gemini 4 Argon |
|---|---|---|---|---|---|
| Logikfel: gratis frakt gällde inte längre vid exakt gränsbeloppet | Test | ja | ja | ja | ja |
| Syntaxfel: en parentes saknades | Bygge | ja | ja | ja | ja |
| Saknat tredjepartspaket | Test | ja | ja | ja | ja |
| Fel värde i en miljövariabel i CI-konfigurationen | Bygge | delvis | ja | delvis | delvis |
| Ändrad testdatafil, koden orörd | Test | delvis | ja | delvis | delvis |
Båda modellerna gav rätt orsak och åtgärd för logikfelet, syntaxfelet och det saknade paketet. Flash kunde exempelvis härleda ett felaktigt gränsvillkor från testets namn och de två beloppen. Argon gav rätt fil, rad och exakt rättad kodrad för den saknade parentesen.
Skillnaden låg i felen vars ursprung fanns utanför loggen. Vid det felaktiga valutavärdet gissade Flash på serverns språkinställning och föreslog först att koden skulle godta okända valutakoder. Argon identifierade att inställningen innehöll en valutasymbol i stället för en ISO-kod och rekommenderade rätt kod. Den pekade dock inte ut CI-konfigurationen som källa, och dess kodexempel ändrade standardvärdet i programmet.
För den ändrade testdatafilen satte Argon rätt förklaring först bland tre möjliga orsaker. Flash placerade den sist, efter två förklaringar som antog fel i den fungerande koden. Argon föreslog att uppdatera testets förväntade värden om ändringen var avsiktlig, men föreslog inte att återställa filen. Därför fick båda bara delvis rätt på åtgärden i de två sista fallen.
Aipress byggtest: samlat resultat och kostnad för logganalysen
| Gemini 3.8 Flash | Gemini 4 Argon | |
|---|---|---|
| Rätt orsak | 3 av 5, delvis i 2 | 5 av 5 |
| Rätt åtgärd | 3 av 5, delvis i 2 | 3 av 5, delvis i 2 |
| Indatatoken, fem anrop | 2 471 | 2 559 |
| Utdatatoken, fem anrop | 2 014 | 2 210 |
| Tänketoken, fem anrop | 3 248 | 0 |
| Token totalt, fem anrop | 7 733 | 4 769 |
| Kostnad för fem anrop | 0,022 dollar | 0,027 dollar |
| Kostnad per förklarat bygge | ungefär 0,004 dollar | ungefär 0,005 dollar |
Argon fick rätt på fler orsaker i de här loggarna. Antalet helt rätta åtgärder var däremot lika för båda modellerna. Flash kostade något mindre för de fem anropen, trots fler rapporterade token totalt.
Klarar Gemini att hämta exakta värden ur PDF-filer?
I dokumenttestet skickade ett Python-skript tre PDF-filer på en sida vardera till analyskommandot: en faktura, ett produktblad med tabell och ett avtal. Varje fil fick fyra frågor i ett anrop. Testet mätte om modellerna hämtade rätt uppgifter och lämnade svar som skriptet kunde läsa direkt som JSON, ett strukturerat dataformat.
Flash och Argon fick samma filer, frågor och krav på enbart JSON. Båda svarade rätt på alla tolv frågor, med exakt samma värden. Ingen av de sex svarstexterna innehöll kodstaket eller extra text runt JSON-innehållet. Flash skilde bland annat slutsumman från delsumman och förfallodatumet från fakturadatumet.
Aipress PDF-test: träffsäkerhet och svarstid per dokument
| Fil | Rätt, Gemini 3.8 Flash | Rätt, Gemini 4 Argon | Tid, Gemini 3.8 Flash | Tid, Gemini 4 Argon |
|---|---|---|---|---|
| Faktura | 4 av 4 | 4 av 4 | 2,5 s | 5,6 s |
| Produktblad | 4 av 4 | 4 av 4 | 3,6 s | 3,3 s |
| Avtal | 4 av 4 | 4 av 4 | 4,0 s | 2,6 s |
| Totalt | 12 av 12 | 12 av 12 | 10,1 s | 11,5 s |
Ingen modell vann på alla svarstider. Flash var snabbare på fakturan och totalt, medan Argon var snabbare på produktbladet och avtalet.
Aipress PDF-test: svarsformat, token och kostnad
| Gemini 3.8 Flash | Gemini 4 Argon | |
|---|---|---|
| Giltig JSON | 3 av 3 | 3 av 3 |
| Indatatoken, tre anrop | 2 035 | 3 089 |
| Utdatatoken, tre anrop | 135 | 154 |
| Tänketoken, tre anrop | 554 | 0 |
| Kostnad för tre anrop | 0,004 dollar | 0,0077 dollar |
Flash kostade mindre i det här dokumenttestet. Argon rapporterade inga tänketoken men räknade ungefär hälften fler indatatoken för samma filer och frågor.
Vi kontrollerade också två fel med båda modellerna. En saknad fil stoppades lokalt på 0,02 sekunder. En trasig PDF skickades till tjänsten och fick HTTP-fel 400. I båda fallen lämnades den vanliga utdatan tom och ett felmeddelande skrevs separat, så inget påhittat dokumentsvar gick vidare till skriptet. Båda gav felkod 2 och feltypen validation_error. Detaljerna i felmeddelandet skilde ett lokalt valideringsfel från API-felet, men tjänstens svar angav inte att PDF-filen var trasig.
Hur frågan formulerades påverkade formatet i vårt test. Med en kortare och lösare fråga direkt i terminalen svarade Flash rätt, men lade JSON-innehållet i ett kodstaket och skrev slutsumman som text med tusentalsavgränsare. Skriptets strikta formatkrav gav däremot svar som gick att läsa maskinellt utan efterarbete.
Deep Research gav inget avgörande resultat
Aipress gav också Deep Research ett bakgrundsuppdrag: att lista utgåvor av Gemini API CLI med datum, en kort ändringsbeskrivning och en källa för varje uppgift. Testet följde starten, statusfrågorna, avbrottet och raderingen. Vi kontrollerade även hur en egen agentdefinition skapas och tas bort.
Testet kunde varken bekräfta eller dementera att forskningsagenten klarar uppdraget. Efter 35 minuter stod det fortfarande som pågående, utan utdata eller rapporterad tokenförbrukning. Tiden för senaste uppdatering hade inte ändrats från start. Vi avbröt då vid vår tidsgräns. Händelselistan innehöll bara att uppdraget skapats, pågick och avslutats som avbrutet.
Aipress agenttest: start, uppföljning och avslut
| Steg | Resultat | Tid |
|---|---|---|
| Start i bakgrunden | interaktions-ID, status pågående | 1,8 s |
| 36 statuskontroller | pågående varje gång, ingen utdata | 0,7 till 1,8 s styck |
| Avbrott efter 35 minuter | status avbruten | 11,2 s |
| Radering | en ny statusfråga ger HTTP 404 | 1,7 s |
| Ny start, avbruten direkt | avbruten cirka 6 sekunder efter start, raderad | 4,3 s för avbrottet |
| Egen agentdefinition: skapa, lista, hämta, radera, lista | alla fem fungerade, sista listan tom | 0,2 till 0,7 s styck |
Hanteringen runt forskningsuppdraget fungerade. Starten gav ett interaktions-ID på under två sekunder och samtliga statusfrågor svarade. Även alla fem stegen för den egna agentdefinitionen fungerade. Efter radering gav en ny statusfråga HTTP 404, vilket betyder att uppdraget inte längre hittades.
Agentens inställningar hade ingen gräns för token, varv eller tid. Vi använde därför en egen tidsgräns och avbröt uppdraget. Efter avbrott visades ett meddelande om ett internt problem och om att bara genererade token debiteras. Samma meddelande kom för ett nytt uppdrag som avbröts efter några sekunder. Inget av uppdragen rapporterade tokenförbrukning, så det fanns ingen förbrukningsuppgift att beräkna kostnaden från.
Hur börjar man använda Gemini API CLI?
Verktyget finns för macOS, Linux och Windows. Google erbjuder installationsskript och versionsbestämda paket för nedladdning, så att samma version kan användas i ett automatiskt byggflöde. Åtkomsten kräver en API-nyckel, som kan skapas i Google AI Studio och anges med miljövariabeln GEMINI_API_KEY.
Google rekommenderar också instruktioner om verktyget i kodagentens projektfil, exempelvis AGENTS.md eller CLAUDE.md. Google rekommenderar att agenten börjar med hjälptexten och granskar schemat för mer avancerade anrop. Med --dry-run går det att kontrollera indata och förhandsgranska begäran utan att skicka den, samtidigt som inloggningsuppgifter maskeras.
Varje kommando har ett modellval som passar uppgiften. En annan modell väljs med --model. Det var så vi bytte från Flash till Argon utan att ändra testernas filer eller frågor.
För skript finns strukturerad utdata och särskilda felkoder. Vid textgenerering och agentuppdrag behöver --stream=false anges om hela resultatet ska komma som ett enda JSON-objekt. Filer på upp till 14 MB kan skickas direkt. Större filer laddas upp separat och återanvänds via en filreferens. Uppladdade filer raderas av Files API efter 48 timmar.
Den praktiska nyttan i våra tester var att samma kommandoradsverktyg gick att använda från en kodagent, ett byggflöde och ett vanligt skript. Modellvalet påverkade sedan vad svaren innehöll, hur lång tid de tog och vad de kostade. Det syntes tydligast i kodgranskningen: identisk begäran, men två fler upptäckta buggar med Argon.
Frågor om Gemini API CLI
Vad är Gemini API CLI?
Det är Googles kommandoradsverktyg för att anropa Gemini från kodagenter, skript och automatiska byggflöden. Det kan bland annat skapa text och mediefiler, analysera dokument och starta hanterade agenter.
Kan Claude Code och Codex använda Gemini API CLI?
Ja, verktyget fungerar i miljöer där agenten kan använda terminalkommandon. I Aipress kodgranskning läste Claude Code hjälptexten och hämtade en granskning från Gemini utan att få kommandot angivet.
Måste man använda verktygets standardmodell?
Nej. Modellen kan väljas med flaggan --model. I våra tester fick Gemini 3.8 Flash och Gemini 4 Argon samma kodändring, byggloggar och PDF-filer.
Vad kostade anropen i Aipress tester?
Kodgranskningen kostade 0,026 dollar per Gemini-modell enligt Googles listpriser. Analysen av fem byggloggar kostade sammanlagt 0,022 dollar med Flash och 0,027 dollar med Argon. De tre PDF-analyserna kostade 0,004 respektive 0,0077 dollar.
Fungerade Deep Research i bakgrunden?
Start, statusfrågor, avbrott och radering fungerade i testet. Själva forskningsuppdraget var fortfarande pågående utan utdata efter 35 minuter och avbröts då. Resultatet för forskningsuppgiften var därför oavgjort.
Källor
- Gemini API CLI
Google, hämtad
Thomas Karlsson
Huvudredaktör, AI expert och journalist
Thomas bevakar generativ AI, språkmodeller och verktygen som förändrar hur vi arbetar. Han skriver för dig som vill förstå utvecklingen utan att redan kunna tekniken.