Gemini KSA ile uygulamalı deneyim

1. Giriş

Bu codelab'de, Gemini'ın gücünü doğrudan terminalinize getiren açık kaynaklı bir yapay zeka temsilcisi olan Gemini CLI hakkında bilgi edineceksiniz.

Gemini CLI projesi açık kaynaklıdır ve herkese açık yol haritasını buradan inceleyebilirsiniz.

Neler öğreneceksiniz?

  1. Gemini CLI'yı yükleme ve yapılandırma
  2. Gemini CLI'da araçları, yerleşik komutları ve MCP sunucularını yapılandırma
  3. GEMINI.md dosyası aracılığıyla Gemini CLI'yı özelleştirme
  4. Gemini CLI ile birkaç kullanım alanını keşfetme

Gerekenler

Bu codelab, Gemini CLI'ın önceden yüklü olduğu Google Cloud Shell'de tamamen çalıştırılabilir.

Alternatif olarak, kendi makinenizde çalışmayı tercih ederseniz Gemini CLI'yı yerel olarak yükleyebileceğiniz bir bölüm de vardır.

İhtiyacınız olanlar:

  • Chrome web tarayıcısı
  • Gmail hesabı

Bu codelab, yeni başlayanlar da dahil olmak üzere her seviyeden kullanıcı ve geliştirici için tasarlanmıştır. Codelab'deki kullanım alanları, geliştirici ve geliştirici olmayan görevler olarak sınıflandırılmıştır. Geliştirici kullanım alanları, Gemini CLI ile kod oluşturmanın ve kod açıklama/anlama, doküman oluşturma, sorunları düzeltme gibi yaygın geliştirme görevlerini gerçekleştirmek için GitHub deposuyla çalışmanın nasıl yapılacağını gösterir. Bu kullanım alanlarını codelab'de tamamlamanız önerilir. En sonda, geliştiricilere odaklanmayan ve günlük olarak yapılan çeşitli görevleri kapsayan isteğe bağlı bir bölüm bulunur.

2. Başlamadan önce

Proje oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Faturalandırmanın bir projede etkin olup olmadığını kontrol etmeyi öğrenin.
  1. bq'nun önceden yüklendiği, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.

Cloud Shell'i etkinleştir düğmesi resmi

  1. Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlanıp ayarlanmadığını kontrol edin:
gcloud auth list
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu doğrulamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>

3. Kurulum

Kurulumu yapıp Gemini CLI'yı çalıştırmadan önce, içinde oluşturabileceğiniz tüm projeler için ana klasör olarak kullanacağınız bir klasör oluşturalım. Bu, Gemini CLI'nin çalışması için bir başlangıç noktasıdır. Ancak sisteminizdeki diğer bazı klasörlere de referans verecektir. Bu klasörlere gerektiğinde daha sonra ulaşabilirsiniz.

Devam edin ve bir örnek klasör (gemini-cli-projects) oluşturun ve aşağıdaki komutları kullanarak bu klasöre gidin. Dilerseniz başka bir klasör adı kullanabilirsiniz.

mkdir gemini-cli-projects

Şimdi o klasöre gidelim:

cd gemini-cli-projects

gemini komutunu kullanarak Gemini CLI'yi doğrudan başlatabilirsiniz.

Lütfen doğrudan sonraki bölüme (settings.json aracılığıyla Gemini CLI yapılandırması) gidin.

Gemini CLI'yı yerel olarak yüklemek istiyorsanız aşağıdaki talimatları uygulayın.

İlk adım, makinenize Node 20 veya sonraki bir sürümü yüklemektir. Bu işlem tamamlandıktan sonra, aşağıdaki yöntemlerden herhangi birini kullanarak Gemini CLI'ı yükleyip çalıştırabilirsiniz:

  1. Öncelikle Gemini CLI'yi sisteminize genel olarak yükleyebilirsiniz. Bu adımı gerçekleştirmek için yönetici erişiminiz olması gerekebilir.
# option 1: install Gemini CLI

npm install -g @google/gemini-cli

# .. and then run
gemini
  1. Aşağıdaki komutla çalıştırın:
# option 2: run without installing Gemini CLI

npx https://github.com/google-gemini/gemini-cli

CLI'nin yüklendiğini doğrulamak için şu komutu çalıştırın:

gemini --version

Gemini CLI'yı yukarıdaki yöntemlerden herhangi biriyle başlattığınızı varsayarsak tema seçimiyle ilgili aşağıdaki ekranı görürsünüz. İstediğiniz birini seçin:

9b02bd0bf1c670d.png

Bu seçeneği belirlediğinizde kimlik doğrulama yöntemi istenir. Bu laboratuvarda Google dışı veya Google Workspace ile ilgili hesaplar yerine kişisel Google Hesabınızı kullanmanız önerilir. Bu ücretsiz lisansla Gemini 2.5 Pro'ya ve 1 milyon parçalık bağlam penceresine erişebilirsiniz. Ücretsiz katman,dakikada 60 model isteğine ve günde 1.000 isteğe ücretsiz olarak izin verir.

Google Hesaplarına verilen mevcut ücretsiz kotayla sınırlara ulaşırsanız Gemini API anahtarını veya Google Cloud Vertex AI'ı kullanmayı tercih edebilirsiniz. Bu durumda, ilgili proje için bir proje kimliğiniz ve konum adınız olması gerekir. Diğer kimlik doğrulama yöntemlerini kullanmayı planlıyorsanız dokümanların Kimlik Doğrulama bölümüne bakın.

afce8d90e20adb6.png

Enter'ı tıklayın. Tarayıcıda Google kimlik doğrulama sayfası açılır. Google Hesabınızla kimlik doğrulama işlemine devam edin, şartları kabul edin. Kimlik doğrulama işlemi başarıyla tamamlandıktan sonra Gemini CLI'nın hazır olduğunu ve komutunuzu beklediğini görürsünüz. Örnek ekran görüntüsü aşağıda verilmiştir:

ffd8ddfede565612.png

4. settings.json aracılığıyla Gemini CLI yapılandırması

Gemini'ı çalıştırmak için Cloud Shell'i seçerseniz Gemini CLI için varsayılan tema ve kimlik doğrulama yöntemi sizin için önceden seçilip yapılandırılır.

Gemini CLI'yi makinenize yükleyip ilk kez başlattıysanız bir tema ve ardından bir kimlik doğrulama yöntemi seçmişsinizdir.

Artık Gemini CLI'nın sonraki çalıştırmalarında tema ve kimlik doğrulama yöntemi seçmeniz istenmez. Bu, ayarların bir yerde kalıcı olarak saklandığı ve kullanılan dosyanın settings.json olarak adlandırıldığı anlamına gelir. Bu dosya, Gemini CLI'yı özelleştirmenin yoludur.

Ayarlar aşağıdaki öncelik sırasına göre uygulanır (Cloud Shell yalnızca kullanıcı ayarlarını kullanılabilir hale getirir):

  1. Sistem: /etc/gemini-cli/settings.json (Tüm kullanıcılar için geçerlidir, kullanıcı ve çalışma alanı ayarlarını geçersiz kılar.)
  2. Workspace: .gemini/settings.json (kullanıcı ayarlarını geçersiz kılar).
  3. Kullanıcı: ~/.gemini/settings.json.

Windows Kullanıcısı: %USERPROFILE%.gemini\settings.json (genellikle C:\Users&lt;YourUsername>.gemini\settings.json olarak genişletilir)

Sistem: %ProgramData%\gemini-cli\settings.json (genellikle C:\ProgramData\gemini-cli\settings.json olarak genişletilir)

Mac Kullanıcısı: ~/.gemini/settings.json (/Users/<YourUsername>/.gemini/settings.json olarak genişletilir)

Sistem: /etc/gemini-cli/settings.json

Hatırlarsanız temayı seçerken ayarların Kullanıcı Ayarları'na kaydedilmesini seçmiştiniz. Bu nedenle ~/.gemini folder adresini ziyaret ettiğinizde settings.json dosyasını görürsünüz.

settings.json dosyam aşağıda gösteriliyor. Başka bir tema seçtiyseniz adı orada görürsünüz.

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal" or "cloud-shell"
}

5. Gemini CLI ile ilk etkileşimimiz

Gemini CLI'yı kullanmaya başlayalım ve ilk sorgunuzu aşağıda gösterildiği gibi yazın:

Give me a famous quote on Artificial Intelligence and who said that?

Beklenen yanıt aşağıda gösterilmiştir:

4dc0961206c1b568.png

Sorgumuzun, GoogleSearch aracının (Gemini CLI'da yerleşik bir araç) çağrılmasıyla sonuçlandığını göreceksiniz. Diğer bir deyişle, Gemini CLI'ın güçlü yerleşik araçlarından biri olan GoogleSearch aracını kullanarak yanıtlarını web'den aldığı bilgilere dayandırmışsınızdır. Araçlar hakkında daha fazla bilgiyi sonraki bölümde bulabilirsiniz.

Gemini CLI'yı ve desteklediği çeşitli komutları anlamanın hızlı bir yolu, /help (eğik çizgi) yazmaktır. Aşağıda gösterildiği gibi çeşitli komutlar ve klavye kısayolları görürsünüz:

d333742310905dcc.png

Şimdilik Gemini CLI'dan çıkalım. Bu işlemi /quit komutuyla veya etkileşimli Gemini KSA terminal oturumunda Ctrl-C komutunu iki kez çalıştırarak yapabilirsiniz.

6. Gemini CLI - Komut Parametreleri

Gemini KSA'yı başlatırken kullanabileceğiniz birkaç komut satırı parametresi vardır. Seçeneklerin tam listesini görmek için aşağıda gösterildiği gibi --help kullanabilirsiniz.

gemini --help

Bu işlem, mevcut seçeneklerin tamamını gösterir. Buradaki belgeleri incelemeniz önerilir.

Bunlardan birkaçına göz atalım. İlk yöntem, Gemini CLI'yı Pro veya Flash modelini kullanacak şekilde yapılandırmaktır. Bu laboratuvarın yazıldığı sırada yalnızca bu iki model destekleniyordu. Varsayılan olarak Gemini 2.5 Pro modeli kullanılır. Ancak Flash modelini kullanmak isterseniz aşağıdaki örnekte gösterildiği gibi -m parametresiyle Gemini CLI'yı başlatırken bunu yapabilirsiniz:

gemini -m "gemini-2.5-flash"

Yukarıdaki şekilde başlarsanız modeli, Gemini CLI terminalinin sağ alt kısmında aşağıdaki gibi kontrol edebilirsiniz:

6e662d03b61b2b3f.png

Etkileşimsiz mod

İlginç bir seçenek de Gemini CLI'yi etkileşimli olmayan bir modda çalıştırmaktır. Bu durumda, istemi doğrudan sağladığınızda Gemini CLI etkileşimli terminali açılmadan yanıt verilir. Bu, Gemini CLI'yı komut dosyasının veya başka bir otomasyon sürecinin parçası olarak otomatik bir şekilde kullanmayı planlıyorsanız çok yararlıdır. Aşağıda gösterildiği gibi, Gemini CLI'ye istemi sağlamak için -p parametresini kullanırsınız:

gemini -p "What is the gcloud command to deploy to Cloud Run"

Sohbete devam ederek konuyla ilgili başka sorular soramayacağınızı unutmayın. Bu modda araçları (WriteFile dahil) yetkilendirmenize veya kabuk komutları çalıştırmanıza da izin verilmez.

7. Gemini CLI - Yerleşik Araçlar

Gemini CLI, bir dizi yerleşik araçla birlikte gelir ve araç dokümanlarında "Gemini modeli, yerel ortamınızla etkileşim kurmak, bilgilere erişmek ve işlemleri gerçekleştirmek için bu araçları kullanır. Bu araçlar, CLI'nın özelliklerini geliştirerek metin oluşturmanın ötesine geçmesini ve çok çeşitli görevlerde yardımcı olmasını sağlar."

Mevcut Yerleşik Araçlar'ın listesini almak için /tools komutunu aşağıda gösterildiği gibi çağırın:

39939257e3f3818e.png

Hemen dikkatinizi çekmesi gereken şeylerden biri, Gemini CLI'ın istediği zaman bu araçları basitçe çağırıp çağıramayacağını kendinize sormaktır. Yerel sisteme yazma, harici bir sistemden okuma, harici ağa gitme gibi hassas işlemler söz konusu olduğunda varsayılan yanıt hayır'dır.

KSA'yı başlattığınızda --yolomode seçeneği kullanılabilir (genellikle önerilmez). Gemini KSA'nın, seçtiği aracı çalıştırmak için sizden izin isteyeceğini göreceksiniz. İzni reddedebilir, tek bir kez çalışmasına izin verebilir veya her zaman çalışması için genel izin verebilirsiniz. Her şeyin kontrolü sizde olmalıdır.

Gemini CLI'ın yürütmek için yerleşik araçlardan birini seçmesini sağlayacak ve her şeyin nasıl çalıştığına dair iyi bir anlayış kazanmanızı sağlayacak bir istem kullanalım.

Dünyadaki en son finans haberleri hakkında bilgi edinmek ve bu bilgileri Gemini CLI'yı başlattığınız yerel çalışma dizinindeki bir dosyaya kaydetmek istediğiniz bir senaryo düşünün. Aşağıdaki istemi kullanın:

Search for the latest headlines today in the world of finance and save them in a file named finance-news-today.txt

Bir an için ne yapması gerektiğini düşünün. İdeal olarak, finansal haberler sağlayabilecek bazı alakalı bilgi kaynaklarından haber almak için Google Arama yapması gerekir. Ardından, içeriğiyle birlikte finance-news-today.txt adlı bir dosya oluşturması gerekir (yerel sisteminizde yazma işlemi için izniniz gerekir).

Ne olacağına bakalım (makinenizde de aynı işlemi yapmanız gerekir).

Bu araç, ilk olarak web'de arama yapmak için GoogleSearch aracını çağırır.

122e6e4b01d05e69.png

Arama tamamlandığında veriler aşağıda gösterildiği gibi alınır:

b721f40e6f643318.png

Bu işlem tamamlandıktan sonra dosyaya yazmaya hazır olur ve WriteFile aracını kullanır. Ancak bu hassas bir işlem (yazma) olduğundan izninizi ister. İzin türüne (ör. bir kez izin ver, her zaman izin ver) karar verebilirsiniz. Şimdilik "Bir kez izin ver"i seçin.

e92f3a4774dc1e7.png

Ardından bilgiler dosyaya yazılır ve aşağıda başarı mesajı gösterilir:

33c6afdb89033c35.png

Dosyanın yazılıp yazılmadığını nasıl kontrol edersiniz? @file simgesini kullanarak içeriği okumasını isteyebilirsiniz. @ yazarken geçerli klasördeki dosyaların listesi gösterilir ve yeni oluşturulan dosya da bu listede yer alır. Bunu seçip istemi gönderin. İstemim aşağıda gösterilmiştir:

read the contents of @finance-news-today.txt

Bu işlem, gerekli araçların (ReadManyFiles, ReadFile) çağrılmasına ve içeriklerin aşağıda gösterildiği gibi görüntülenmesine neden olur:

6f214cd743646f44.png

8. Gemini CLI - Shell modu

Bu, Gemini CLI'dan doğrudan Shell ile nasıl çalışacağınızı öğrenmek için iyi bir zamandır. İleti kutusunda ! tuşuna basarak kabuk moduna geçebilirsiniz. Bu işlem, kabuk moduna geçiş yapar. ! tuşuna tekrar basarak veya ESC tuşuna basarak geri dönebilirsiniz.

Kabuk modundayken istemin başında ! simgesini görürsünüz.

9e239408835a3acd.png

Aşağıda gösterildiği gibi pwd ve ls gibi standart komutları kullanarak doğrudan kontrol edebilirsiniz. Komutların Linux türü bir işletim sistemi için geçerli olduğunu lütfen unutmayın. Başka bir işletim sisteminde (Windows) çalışıyorsanız lütfen (cd, dir ve type) gibi eşdeğer komutları kullanın. Bu çağrıların çıktısının modelin bağlam penceresine dahil edildiğini unutmayın.

2f5d53d3c77fc8e2.png

Dosyanın içeriğini cat komutuyla yazdırabilirsiniz.

2249b5c80e3ae2c0.png

Alıştırma: Deneyebileceğiniz kısa bir alıştırma. Tercih ettiğiniz bir RSS feed'i seçin. Gemini CLI'ya RSS özet akışının içeriğini getirmesi ve sonuçları sizin için belirli bir şekilde biçimlendirmesi için istem girin. Bu, güne başlarken bir şeyi otomatize etmenin iyi bir yoludur. Hatta Gemini CLI'dan belirli bir alan için RSS feed'i olup olmadığını (ör. Google Cloud Platform Sürüm Notları) bulmasını da isteyebilirsiniz.

Örnek istem aşağıda gösterilmiştir:

Get the latest release notes for Google Cloud from its RSS Feed and display the key points in a well-formatted list.

Bu istem, ideal olarak önce Google Cloud Platform RSS özet akışını bulmak için GoogleSearch aracını çağırır. Ardından, RSS özet akışının içeriğini almak ve görüntülemek için WebFetch aracını kullanır.

9. Model Context Protocol (MCP) sunucularını yapılandırma

MCP sunucusu, Model Context Protocol aracılığıyla Gemini CLI'ye araçlar ve kaynaklar sunan, bu sayede harici sistemler ve veri kaynaklarıyla etkileşim kurmasına olanak tanıyan bir uygulamadır. MCP sunucuları, Gemini modeli ile yerel ortamınız veya API'ler gibi diğer hizmetler arasında köprü görevi görür.

Bir MCP sunucusu, Gemini CLI'nin araçları keşfedip yürütmesini sağlayarak Gemini CLI'nin yerleşik özelliklerinin ötesinde işlemler yapma (ör. veritabanları, API'ler, özel komut dosyaları veya özel iş akışlarıyla etkileşim kurma) yeteneklerini genişletir.

Gemini CLI, özel araçları keşfetmek ve kullanmak için MCP sunucularının yapılandırılmasını destekler. Gemini CLI'yi başlattıysanız aşağıda gösterildiği gibi /mcp komutunu kullanarak yapılandırılan MCP sunucularını kontrol edebilirsiniz:

255a14eb31529370.png

Herhangi bir MCP sunucusu yapılandırmadıysanız Gemini CLI'nın MCP sunucusu dokümanı başlatılır.

MCP sunucularını ~/.gemini/settings.json dosyasında veya projenizin kök dizininde genel düzeyde yapılandırabilirsiniz. .gemini/settings.json dosyasını oluşturun veya açın. Dosyaya, aşağıda gösterildiği gibi mcpServers yapılandırma bloğunu eklemeniz gerekir:

"mcpServers": {
    "server_name_1": {},
    "server_name_2": {},
    "server_name_n": {}
 }

Her sunucu yapılandırması aşağıdaki özellikleri destekler ( Referans belgeleri):

Zorunlu (aşağıdakilerden biri)

  • command (string): Stdio aktarımı için yürütülebilir dosyanın yolu
  • url (dize): SSE uç nokta URL'si (ör. "http://localhost:8080/sse")
  • httpUrl (dize): HTTP akışı uç nokta URL'si

İsteğe bağlı

  • args (string[]): Stdio aktarımı için komut satırı bağımsız değişkenleri
  • headers (object): URL veya httpUrl kullanılırken özel HTTP üstbilgileri
  • env (nesne): Sunucu işlemi için ortam değişkenleri. Değerler, $VAR_NAME veya ${VAR_NAME} söz dizimini kullanarak ortam değişkenlerine başvurabilir.
  • cwd (string): Stdio aktarımı için çalışma dizini
  • timeout (sayı): İstek zaman aşımı (milisaniye cinsinden) (varsayılan: 600.000 ms = 10 dakika)
  • trust (boolean): Doğru olduğunda bu sunucu için tüm araç çağrısı onaylarını atlar (varsayılan: yanlış)
  • includeTools (string[]): Bu MCP sunucusundan dahil edilecek araç adlarının listesi. Belirtildiğinde, bu sunucuda yalnızca burada listelenen araçlar kullanılabilir (beyaz liste davranışı). Belirtilmezse sunucudaki tüm araçlar varsayılan olarak etkinleştirilir.
  • excludeTools (string[]): Bu MCP sunucusundan hariç tutulacak araç adlarının listesi. Burada listelenen araçlar, sunucu tarafından kullanıma sunulmuş olsalar bile model tarafından kullanılamaz. Not: Bir araç her iki listede de yer alıyorsa hariç tutulur. excludeTools, includeTools'a göre önceliklidir.

Github ile çalışıyorsanız ihtiyacınız olabilecek temel MCP sunucularından birini yapılandıralım. Muhtemelen aklınıza şu soru gelecektir: Sisteminizde Git ve ilgili diğer araçlar zaten ayarlanmışsa GitHub MCP Server'a yine de ihtiyacınız var mı?

Gemini CLI, sisteminizdeki git araçlarını çağırır ve Gemini CLI'ya bunları kullanmasını da söyleyebilirsiniz. Bu nedenle, Gemini CLI'nın doğal dil sorgularınızı sisteminizde bulunan eşdeğer araçlara çevirmenize yardımcı olacağını ve isteminizde bunu açıkça belirtmenizin gerekebileceğini unutmayın.

Sisteminizde aşağıdakiler zaten ayarlanmışsa GitHub MCP sunucusu kurmak için bir sonraki bölüme ihtiyacınız olmayabilir:

  • Git araçları (Bu, sisteminizde git init, git add gibi komutları yürütebileceğiniz anlamına gelir.)
  • gh : Bu, komut satırında GitHub'dır. Bu uzantı, çekme isteklerini, sorunları ve diğer GitHub kavramlarını, git ve kodunuzla çalıştığınız yerin yanındaki terminale getirir. Uygulamayı buradan yükleyin ve kurulumunu birkaç komutla doğrulayın. Özellikle makinenizden GitHub'a kimlik doğrulama ile ilgili komutları kullanın.

Github MCP Server'ı denemek istiyorsanız lütfen sonraki bölüme bakın veya bu bölümü atlayabilirsiniz.

Github MCP Sunucusu

Github'un resmi MCP sunucusu, sunduğu araçlar ve bunların nasıl yapılandırılacağı hakkında yeterli belge sağlar. Gemini CLI, uzaktan MCP sunucularını da desteklediğinden yerel veya uzaktan çalıştırma konusunda tercihinizi yapabilirsiniz.

Bu eğitimde, Github'daki Uzak MCP Sunucusu seçeneği gösterilmektedir. Bunun için öncelikle GitHub'dan kişisel erişim jetonu (PAT) almanız gerekir.

Bu işlemden sonra settings.json dosyasına MCP Sunucusu nesnesini eklemeniz gerekir. Sistemimdeki settings.json dosyasının tamamı aşağıda gösterilmektedir. Başka ayarlarınız da olabilir ancak mcpServers nesnesi aşağıdaki gibi olmalıdır:

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal",
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "GITHUB_PAT"
            },
            "timeout": 5000
       }
  }
}

settings.json dosyasını GitHub MCP sunucu yapılandırmasıyla güncelledikten sonra Gemini CLI'yı yeniden başlatabilir veya /mcp refresh komutunu çalıştırabilirsiniz. Aşağıdaki ekran görüntüsünde, makinemde yapılandırılmış olan GitHub MCP sunucusu ve Gemini CLI'nin MCP ile çalışmak için kullanabileceği çeşitli araçlar vurgulanmaktadır.

e34f348129d448e9.png

Github MCP sunucusundaki araçlardan birini çağıracak bir istemle başlayalım. Aşağıdaki istemi girin:

da643d182ac3fca4.png

Bu aracın, Github MCP Sunucusu'ndan doğru aracı seçeceğini ancak diğer yerleşik araçlarda olduğu gibi, bu aracı çağırmak için de açık izin vermeniz gerektiğini unutmayın. Hangi çıktıyı alacağınızı görün.

Artık GitHub projelerinizden biriyle çalışabilirsiniz. Sorgularınızı doğal dilde girin. Örneğin:

  • Describe the <repo-name> to me? (<repo-name> deposunu bana açıkla.)
  • Yerel makinemde <repo-name> kod deposunu klonla.
  • @<dosya-adı> veya @<dizin-adı> hakkında açıklama yap/
  • Bu depodaki farklı bileşenler nelerdir?
  • Gerekli değişiklikleri yaptım. Değişiklikleri GitHub'a gönderebilir ve bu işlemi yapmak için GitHub MCP Server araçlarını kullanabilirsiniz.

Laboratuvarın ilerleyen bölümlerinde, Github MCP sunucusuyla çalışma alıştırması yapacaksınız.

Context7 MCP Sunucusu

Context7, LLM'ler ve yapay zeka kodu düzenleyicileri için güncel dokümanlar sağlar. Seçtiğiniz çerçeveyle ilgili en son dokümanlarla LLM'ye bağlam sağlamak istiyorsanız Context7 MCP sunucusunu yapılandırabilirsiniz.

Kitaplığınızın Context7 ana sayfasında listelendiğinden emin olun.

settings.json dosyasına eklemeniz gereken MCP sunucusu aşağıda verilmiştir.

"context7": {
      "httpUrl": "https://mcp.context7.com/mcp"
    }

MCP sunucusu yapılandırılıp Gemini CLI başarıyla yüklendikten sonra Context7 araçlarını aşağıdaki gibi görüntüleyebilirsiniz:

92f715d87989ff72.png

Artık isteminizde net olabilirsiniz ve Gemini CLI'dan belirli bir XYZ çerçevesini kullanarak uygulamanızı veya kod snippet'inizi oluştururken en son dokümanlar için Context7 kullanmasını isteyebilirsiniz.

Google'ın Agent Development Kit'ini (ADK) kullanarak bir Agent yazmak istediğim örnek istemi aşağıda bulabilirsiniz. İstemimde, Context7 MCP sunucusu üzerinden aynı dokümanı aramasını belirtiyorum.

I am working on coding an Agent using the Agent Development Kit (ADK) from Google. I would like to know how to create the LLMAgent in Python. Use Context7 for the latest documentation on ADK and specifically use /google/adk-python, /google/adk-docs and adk.wiki 

Alınan çıkış:

fe79972a61372d59.png

Google Slaytlar MCP Sunucusu

https://github.com/matteoantoci/google-slides-mcp adresindeki GitHub projesi, Google Slaytlar API'si ile etkileşim kurmak için bir MCP sunucusu sağlar. Google Slaytlar sunularını programatik olarak oluşturmanıza, okumanıza ve değiştirmenize olanak tanır.

MCP sunucusunu yapılandırma adımları projede verilmiştir. Sunucuyu oluşturduğunuz, Google Cloud projesini ve OAuth 2.0 jetonlarını yapılandırdığınız ve ardından settings.json dosyasında MCP sunucusunu yapılandırdığınız bir Node.js ortamınızın olması gerekir.

Kurulumdan sonra aşağıdaki gibi istemler çalıştırabilirsiniz:

  • "web_url"den en son bilgileri ayıkla, bunları temel noktalar halinde özetle ve "my_presentation" adlı bir sunu oluştur.

Mutlaka deneyin!

Diğer MCP sunucuları

İlginizi çekebilecek ek MCP sunucularının listesini aşağıda bulabilirsiniz:

  1. Firebase MCP Sunucusu
  2. Google Gen AI Media Services (Imagen, Veo, Lyria)
  3. Veritabanları için MCP Araç Kutusu (Firestore, BigQuery, Google Cloud veritabanlarıyla çalışma)
  4. Google Workspace MCP Sunucusu (Dokümanlar, E-Tablolar, Takvim ve Gmail ile çalışma)

Yukarıdaki MCP sunucularını ayarlama talimatları bu blog yayınında yayınlanmıştır.

10. GEMINI.md ile Gemini CLI'yı özelleştirme

Şimdiye kadar Gemini CLI kullanımınıza baktıysanız yalnızca istemi verdiğimizi ve Gemini CLI'nin bunu yürütmesini beklediğimizi fark etmişsinizdir. Bazen sonuçlar beklentilerimize uygun olmuyordu. Bazı istemlerde, ne yapılması gerektiği konusunda biraz ayrıntılı davrandınız ve bu talimatları isteme eklediniz.

Bu, Gemini CLI'a yapmasını söylediğiniz işlemler ve aldığınız sonuçlar açısından sorunsuz çalışabilir. Ancak çoğu durumda, bu içeriğin kurallara uygun olmasını istersiniz. Bu kurallar, kullanılacak belirli programlama dilleri veya çerçeveler olabilir. Belirli araçlar da olabilir. Kodlama stilleri olabilir. Bu yalnızca kod oluşturmayla ilgili değildir. Gemini CLI'nın kesinlikle "planlama" modunda olmasını ve yalnızca bir plan sunmasını, sistemde herhangi bir kod oluşturmamasını veya dosyaları değiştirmemesini de isteyebilirsiniz.

GEMINI.md yazın. Bu, Gemini modeline sağlanan talimat bağlamının (aynı zamanda "hafıza" olarak da adlandırılır) yapılandırılması için çok önemli olan bağlam dosyasıdır (varsayılan olarak GEMINI.md'dır ancak settings.json dosyasındaki contextFileName özelliği aracılığıyla yapılandırılabilir). Bu dosya, yapay zekaya projeye özel talimatlar, kodlama stili kılavuzları veya alakalı arka plan bilgileri vermenize olanak tanır. Böylece yapay zekanın yanıtları ihtiyaçlarınıza daha uygun ve doğru olur.

GEMINI.md dosyası Markdown biçimindedir ve birden çok konumdan birleştirilerek hiyerarşik bir şekilde yüklenir.

Yükleme sırası:

  1. Genel bağlam:**~/.gemini/GEMINI.md** (tüm projeleriniz için geçerli olan talimatlar için).
  2. Proje/Üst Bağlamı: CLI, GEMINI.md dosyaları için geçerli dizininizden proje köküne kadar arama yapar.
  3. Alt Dizin Bağlamı: CLI, alt dizinleri de GEMINI.md dosyaları için tarayarak bileşene özel talimatlara olanak tanır.

Modele gönderilen son birleştirilmiş bağlamı görmek için /memory show simgesini kullanabilirsiniz.

GEMINI.md nasıl görünür? Resmi dokümanlardan birini oluşturduk:

# Project: My Awesome TypeScript Library

## General Instructions:

- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.

## Coding Style:

- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).

## Specific Component: `src/api/client.ts`

- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.

## Regarding Dependencies:

- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.

Bu aracın, kodlama stili ve bağımlılık yönetimi gibi konularda genel talimatların yanı sıra çok ayrıntılı talimatlar verdiğini fark edeceksiniz. Bu, TypeScript projeleri için örnek bir GEMINI.md dosyası olsa da programlama dilinize, çerçeveye, kodlama stilinize ve diğer tercihlerine göre kendi dosyanızı yazabilirsiniz.

Özel bir GEMINI.md dosyasını deneyebilirsiniz. Bu, Gemini CLI'nın yalnızca Plan modunda nasıl kullanılacağını gösteren bir gist'ten alınmıştır. Dosya burada yeniden üretilir:

# Gemini CLI Plan Mode
You are Gemini CLI, an expert AI assistant operating in a special 'Plan Mode'. Your sole purpose is to research, analyze, and create detailed implementation plans. You must operate in a strict read-only capacity.

Gemini CLI's primary goal is to act like a senior engineer: understand the request, investigate the codebase and relevant resources, formulate a robust strategy, and then present a clear, step-by-step plan for approval. You are forbidden from making any modifications. You are also forbidden from implementing the plan.

## Core Principles of Plan Mode
*   **Strictly Read-Only:** You can inspect files, navigate code repositories, evaluate project structure, search the web, and examine documentation.
*   **Absolutely No Modifications:** You are prohibited from performing any action that alters the state of the system. This includes:
    *   Editing, creating, or deleting files.
    *   Running shell commands that make changes (e.g., `git commit`, `npm install`, `mkdir`).
    *   Altering system configurations or installing packages.

## Steps
1.  **Acknowledge and Analyze:** Confirm you are in Plan Mode. Begin by thoroughly analyzing the user's request and the existing codebase to build context.
2.  **Reasoning First:** Before presenting the plan, you must first output your analysis and reasoning. Explain what you've learned from your investigation (e.g., "I've inspected the following files...", "The current architecture uses...", "Based on the documentation for [library], the best approach is..."). This reasoning section must come **before** the final plan.
3.  **Create the Plan:** Formulate a detailed, step-by-step implementation plan. Each step should be a clear, actionable instruction.
4.  **Present for Approval:** The final step of every plan must be to present it to the user for review and approval. Do not proceed with the plan until you have received approval. 

## Output Format
Your output must be a well-formatted markdown response containing two distinct sections in the following order:

1.  **Analysis:** A paragraph or bulleted list detailing your findings and the reasoning behind your proposed strategy.
2.  **Plan:** A numbered list of the precise steps to be taken for implementation. The final step must always be presenting the plan for approval.

NOTE: If in plan mode, do not implement the plan. You are only allowed to plan. Confirmation comes from a user message.

Yukarıdaki içeriği GEMINI.md adlı bir dosyaya kaydedin ve bu dosyayı ~/.gemini/GEMINI.md klasörüne kaydedin. Bu klasör, settings.json dosyasını oluşturduğunuz klasörle aynıdır. Ayrıca, GEMINI.md dosyasını <current project folder>/.gemini klasörünüzde saklayabilir veya farklı talimatlarınız varsa alt dizinlerinizde birden fazla GEMINI.md dosyası bulundurabilirsiniz.

Uygulama oluşturmak için bir istem girin ve nasıl yanıt verdiğini görün.

İnceleyip ihtiyaçlarınıza göre uyarlayabileceğiniz ve kullanabileceğiniz başka bir GEMINI.md dosyası ( Gemini Açıklama Modu) aşağıda verilmiştir. Bu, Gemini CLI'nın etkileşimli bir kılavuz olarak kullanılmasına odaklanır. Kullanıcıların, keşif sürecinde sohbet ederek karmaşık kod tabanlarını anlamasına yardımcı olur.

GEMINI.md dosyası, Gemini CLI'ın tercihlerinize uymasını sağlamanın anahtarıdır. Bu alanı, projeniz için nasıl otomatik olarak oluşturabileceğinizi, Sistem İstemi'ni ve daha fazlasını nasıl özelleştirebileceğinizi ele alan "Pratik Gemini CLI" adlı pratik seriyi incelemenizi öneririz.

Gemini CLI ile etkileşim kurarken GEMINI.md dosyasını da oluşturabileceğinizi unutmayın. İstediğiniz zaman /memory add <some instruction/rule> komutunu kullanabilirsiniz. Gemini CLI, bu komutu GEMINI.md dosyasına ekler. Hatta "Remember <some instruction/rule>" ("<Bazı talimatları/kuralları> hatırla") veya "Add to memory <some instruction/rule>" ("Belleğe ekle <bazı talimatlar/kurallar>") gibi istemlerle Gemini CLI'dan belleğine GEMINI.md eklemesini istemek için doğal dil kullanabilirsiniz.

11. Gemini CLI - Özel eğik çizgi komutları

GEMINI.md simgesini plan modu oluşturacak şekilde nasıl özelleştireceğinizi öğrendiniz. Önceki bölümde, Açıklama modunun bağlantıları da verilmişti.

Bu modların ikisini de yapılandırmak ve Gemini CLI'ya /plan veya /explain eğik çizgi komutlarıyla bu modlardan herhangi birine geçmesini söylemek isterseniz ne yapmanız gerekir? Gemini CLI'daki özel eğik çizgi komutları tam olarak bu amaçla kullanılır.

Dokümanlarda belirtildiği gibi, "Özel komutlar, en sevdiğiniz veya en sık kullandığınız istemleri Gemini CLI'da kişisel kısayollar olarak kaydetmenize ve yeniden kullanmanıza olanak tanır. İş akışınızı kolaylaştırmak ve tutarlılık sağlamak için tek bir projeye özgü komutlar veya tüm projelerinizde genel olarak kullanılabilen komutlar oluşturabilirsiniz."

/plan ve /explain gibi birkaç özel eğik çizgi komutu oluşturalım.

Bir sonraki adım, Gemini CLI'nın özel komutları nereden aldığını anlamaktır. Belgelere göre, komutları belirli bir sırada yüklenen iki konumdan keşfeder:

  1. Kullanıcı Komutları (Genel): ~/.gemini/commands/ konumundadır. Bu komutlar, üzerinde çalıştığınız tüm projelerde kullanılabilir.
  2. Proje Komutları (Yerel): <your-project-root>/.gemini/commands/ konumunda bulunur. Bu komutlar mevcut projeye özeldir ve ekibinizle paylaşmak için sürüm kontrolüne eklenebilir.

Gemini CLI'yı başlattığınız yerden geçerli proje klasörünü seçelim. Bu nedenle, <your-project-root>/.gemini/commands/ klasörü oluşturulur. Klasör yapısını oluşturun.

Bu klasörde ne oluşturmamız gerekiyor? İki TOML dosyasına (plan.toml ve explain.toml) ihtiyacımız var. Ad alanları ve adlandırma kuralları hakkında daha fazla bilgiyi burada bulabilirsiniz.

Her TOML dosyasında iki alan bulunmalıdır : description ve prompt. Gemini CLI'da komutun yanında gösterileceği için açıklamanın kısa ve net olduğundan emin olun. Aşağıdaki TOML dosyası örneği, resmi Özel eğik çizgi komutları blog yayınından alınmıştır.

Aşağıda örnek bir plan.toml dosyası gösterilmektedir. İstemde özel bir yer tutucu {{args}} olduğunu unutmayın. CLI, bu yer tutucuyu kullanıcının komut adından sonra yazdığı tüm metinlerle değiştirir.

description="Investigates and creates a strategic plan to accomplish a task."
prompt = """
Your primary role is that of a strategist, not an implementer.
Your task is to stop, think deeply, and devise a comprehensive strategic plan to accomp{{lish the following goal: args}}

You MUST NOT write, modify, or execute any code. Your sole function is to investigate the current state and formulate a plan.

Use your available "read" and "search" tools to research and analyze the codebase. Gather all necessary context before presenting your strategy.

Present your strategic plan in markdown. It should be the direct result of your investigation and thinking process. Structure your response with the following sections:

1.  **Understanding the Goal:** Re-state the objective to con&firm your understanding.
2.  **Investigation  Analysis:** Describe the investigative steps you would take. What files would you need to read? What would you search for? What critical questions need to be answered before any work begins?
3.  **Proposed Strategic Approach:** Outline the high-level strategy. Break the approach down into logical phases and describe the work that should happen in each.
4.  **Verification Strategy:** Explain how the success of this plan would be measured. What should be tested to ensure the goal is met without introduci&ng regressions?
5.  **Anticipated Challenges  Considerations:** Based on your analysis, what potential risks, dependencies, or trade-offs do you foresee?

Your final output should be ONLY this strategic plan.
"""

explain.toml dosyası da oluşturmayı deneyin. İçerik seçmek için Gemini Açıklama Modu'na göz atabilirsiniz.

Gemini CLI'yı yeniden başlatın. Artık aşağıdaki resimde gösterildiği gibi eğik çizgi komutu (/plan) olduğunu göreceksiniz:

8b0720ba31b6c251.png

12. Deneyebileceğiniz kullanım alanları

Gemini CLI, hem geliştiriciler hem de geliştirici olmayanlar için geçerli olan çok çeşitli kullanım alanlarında uygulanabilir. Burada birkaç senaryo sunulmaktadır. İlgi alanınıza bağlı olarak bu senaryolardan herhangi birini veya tümünü deneyebilirsiniz.

Bu durumlarda istem sağlanır. Bu özelliği, Gemini CLI'yi başlatırken -p parametresini kullanarak Gemini CLI'nin etkileşimli veya etkileşimsiz modunda deneyebilirsiniz.

Gemini CLI ile kodlama

Bir uygulamayı vibe code etmek için Gemini CLI'yi kullanalım. Bu görevde, Gemini CLI'dan bir uygulama oluşturmasını isteyecek ve ardından ilk sürümü bir GitHub deposuna göndereceksiniz.

Ön koşul

Bu bölümdeki görevleri gerçekleştirmek için birkaç ön koşul vardır:

  • Git
  • GitHub MCP sunucusuyla Gemini CLI (bunu daha önce yaptık) veya gh ( GitHub CLI aracı) kurduysanız bu da işe yarar.
  • Git'in temelleri ve biraz programlama bilgisi

Gemini CLI'yı seçtiğiniz belirli bir klasörde başlattığınızı varsayacağız. Özellikle GitHub MCP sunucusu olmak üzere MCP sunucularının başarıyla başlatıldığından emin olun.

İlk istemle başlayın. İstediğiniz gibi değiştirebilirsiniz. Gemini CLI ile oturum boyunca dosyaları oluşturmak için sizden izin isteyeceğini unutmayın. Gerekli izinleri verin.

Bu görevde, biraz daha fazla kontrol istediğimiz için Gemini CLI'nın uygulamayı çalıştırmasını veya bizim için test etmesini istemiyoruz. Ancak bunu nasıl yapacağınız tamamen size bağlıdır.

Generate a website for a 1-day event filled with technical talks. There are going to be 6 talks in a single track of 1 hour each. Each talk has the following information: title, 1 or maximum of 2 speakers, category (1 or maximum of 3 keywords), duration and a description. The website has a single page where users can see the schedule for the entire day with the timings. There will be one lunch break of an hour and the event starts at 10:00 AM. Keep a 10 minute transition between talks. I would like to use Node.js on the server side and standard HTML, JavaScript and CSS on the front-end. The users should be able to search the talks based on category.

I would like you to proceed in the following way: 
1. Plan out how you would design and code this application.
2. Ask me for any clarifications along the way.
3. Once I am fine with it, do generate the code and provide me instructions to run and test locally. 

Aşağıdaki birkaç istem ve yanıt, gözlemlenen örnek bir akışı gösterir. Tamamen farklı bir yanıt alabilirsiniz. Bu nedenle, planı inceleyin ve gerektiğinde Gemini CLI ile etkileşime geçin.

90232297f1e952f8.png

Gemini KSA'nın bazen daha fazlasını yapmaya çalıştığını ve hatta yürütmek istediği komutları size verdiğini gözlemledik. Bu alıştırmada, görevin nasıl yapılacağı ve önce kendiniz doğrulamak istediğiniz şeyler üzerinde daha fazla kontrol sahibi olabilmek için bunu yapmamanız önerilir.

Örneğin, komutları çalıştırmayı teklif ederse çıkış yapıp aşağıdaki gibi bir mesaj verebilirsiniz:

d74e235b0db77c51.png

Sunucuyu başlatma ve ana sayfaya gitme talimatlarını uyguladığımızda aşağıdaki gibi bir örnek site elde ettik (aynı istemi kullandıysanız benzer bir sitenin varyantını görmeniz gerekir):

71a0a6123a90e068.png

Gemini CLI'nin yardımıyla daha fazla değişiklik yapmaya devam edebilirsiniz. Değişikliklerden memnun kaldığınızda bunları bir GitHub deposuna aktarabilirsiniz.

Öncelikle .gitignore dosyası oluşturalım. Bu işlem için Gemini CLI'dan yardım alabilirsiniz.

Create a .gitignore file for this project.

Sonraki adımda, bu depoyu GitHub hesabımızda göndermesi için Gemini CLI'ya talimat vermeniz gerekir. Bu işlem, arka planda GitHub MCP Server araçlarını kullanır.

Aşağıdakine benzer bir istem girin:

Great! I would now like to push all of this to a new repository in my Github account. I would like to name this repository <Your-Name>-event-talks-app

Burada çeşitli komutlar çalıştırılır:

  1. Kod deposunu oluşturun.
  2. Yerel Git deposunu yönetmek için init, add, commit gibi birden fazla Git komutu kullanılır.
  3. Ardından Git remote'u kurar ve push işlemi yapar.

Not: Gemini CLI'nin zaman aşımına uğrayabileceği veya yanlış kullanıcı adı kullanabileceği durumlar olabilir. Bu gibi durumlarda Gemini CLI ile etkileşime geçin ve düzeltmeleri önerin.

Her şey yolunda giderse bir GitHub deposu oluşturmuş olursunuz. Örnek ekran görüntüsü aşağıda gösterilmiştir:

35c2db48c39fb21a.png

Bu proje için README.md oluşturmadığınızı ve bunun, şimdi oluşturduğunuz bu depoyla çalışacağımız bir sonraki bölüm için iyi bir alıştırma olduğunu unutmayın.

GitHub deposunda çalışmak için Gemini CLI'ı kullanma

Bu kullanım alanında, bir GitHub deposuyla çalışmak için Gemini CLI'ı kullanacaksınız. Aşağıdakiler de dahil olmak üzere birden fazla görev gerçekleştireceksiniz:

  • Kod tabanını anlama
  • Belge oluşturma
  • Yeni bir özelliği uygulama
  • Değişiklikleri kaydedip depoya geri aktarma
  • Bir GitHub sorunu üzerinde çalışma ve önerilen değişiklikleri uygulama

Bu, depolarınızla çalışmak ve Gemini CLI'ı bu geliştiriciye özel görevlerde yardımcı olarak kullanmak için iyi bir temel oluşturur.

Ön koşul

Bu bölümdeki görevleri gerçekleştirmek için aşağıdakileri yapmanız gerekir:

  • Git
  • GitHub MCP sunucusuyla Gemini CLI (bunu daha önce yaptık) veya gh ( GitHub CLI aracı) kurduysanız bu da işe yarar.
  • Git'in temelleri ve biraz programlama bilgisi (Gemini CLI'yı yüklediğiniz için makinenizde ortam zaten hazır olabilir. Bu nedenle bu örnekte Node.js'yi kullanacağız). Ancak daha sonra farklı bir programlama dili ve çerçeveyle istediğiniz depoyu seçebilirsiniz.
  • Önceki bölümü tamamlamış olmanız ve Event Talks web sitesini oluşturduğumuz depoyu hazır bulundurmanız gerekir.

Event Talks uygulamasını oluşturmak için kullandığınız klasör/dizinden Gemini CLI'ı kullanmaya devam edelim. Gerekirse depoyu yerel makinenize klonlayıp Gemini CLI'ı bu dizinden başlatabilirsiniz. Aşağıda listelenen senaryoları deneyin:

Kod tabanını anlama

  • Bu projeyi ayrıntılı olarak anlamak istiyorum. Ana özellikleri anlamama yardımcı ol ve ardından bunları sunucu ve istemci tarafı olarak ayır. Örnek bir akış al ve istek ile yanıtın nasıl çalıştığını göster.
  • @server.js dosyasını açıkla

README dosyası oluşturma

  • Bu proje için README dosyası oluşturun.

Bu durumda Gemini CLI yalnızca README dosyasını oluşturmakla kalmadı, aynı zamanda Git deposuna eklemek ve değişiklikleri uzak depoya göndermek için komutları yürütmek istedi. Bunu yaparken görürseniz yapmasına izin verebilirsiniz.

Hatta bazı durumlarda LICENSE dosyasını sizin için oluşturmayı teklif edebilir. Bu işlemi yapıp yapmamaya karar verebilirsiniz. Sonuca bağlı olarak, oluşturulan README ve/veya LICENSE dosyalarını görürsünüz ve değişiklikler GitHub'a gönderilir.

d77239c8fae0aa8b.png

Yeni bir özelliği uygulama

  • Kullanıcının belirli bir konuşmacıya göre de arama yapmasına olanak tanıyan yeni bir özellik uygulamak istiyorum. Önce bu değişikliği nasıl uygulayacağınıza dair bir plan gösterin, ardından kodu oluşturabiliriz.

Onaylayabileceğiniz bir plan sunar. Onaylandığında Gemini CLI bu değişiklikleri yapar. Değişikliklerinizi test edin ve hatalar varsa (büyük olasılıkla) Gemini CLI'dan bunları düzeltmesini isteyin.

Değişiklikler istediğiniz gibi olduğunda, bunları kaydedip uzak depoya göndermek için aynı adımları uygulayabilirsiniz.

Önerilen özelliklere göre sorun oluşturma

Burada ilginç bir şey deneyelim. Gemini CLI'ya bu uygulamanın kullanıcı deneyimini nasıl iyileştirebileceğini soracaksınız. Gemini CLI, değerlendirmesine dayanarak bu önerileri aynı GitHub deposunda sorun olarak oluşturabilir. Bu işlem için Github MCP Sunucusu'ndaki "create_issue" aracı kullanılır.

Aşağıdaki istemi deneyin:

  • Uygulamayı kullanıcı deneyimi açısından değerlendirmeni istiyorum. Kullanım kolaylığı, hızlı yanıt verme, faydalı mesajlar ve daha fazlası. Lütfen bir iyileştirme listesi oluşturun ve ardından bunları GitHub deposunda Sorun olarak oluşturun.

İyileştirmeleri önce sizinle paylaşır ve ardından GitHub deposunda sorun oluşturmak için izninizi ister. Çalışmamızdan örnek bir ekran görüntüsü:

495b0f7afab91ec6.png

Bir GitHub sorunu üzerinde çalışma ve önerilen değişiklikleri uygulama

Artık daha önce oluşturulan sorunlardan birini alıp Gemini CLI'dan üzerinde çalışmasını ve bunu uygulamasını isteyebilirsiniz.

Oluşturduğu örnek bir sorun aşağıda gösterilmektedir:

2e41f9f6eac3d1b.png

Sorun URL'sinin tamamını alıp aşağıdaki gibi bir istem girin:

  • Lütfen Sorun: <YOUR_ISSUE_URL> bölümünü inceleyerek hangi değişikliklerin yapılması gerektiğini anlayın. Önce planı tartış, ardından önerilen değişiklikleri kodda göster.

Değişiklikleri onaylayıp depoya aktarabilirsiniz. Hatta sorunu kapatmasını da isteyebilirsiniz.

cd3c89cf3d47723b.png

(İsteğe bağlı) Günlük Görevler

Aşağıda verilen kullanım alanları, düzenli olarak yapmanız gereken görevlerdir. Örneğin, dosyaları klasörler halinde düzenleme, web'deki içerikleri getirme ve özetleme, resim dosyalarını işleme ve bu dosyalardan içerik ayıklama, veritabanlarıyla çalışma gibi işlemler bu kapsamdadır.

İstediğiniz kullanım alanlarını inceleyebilirsiniz.

Dosyaları/Klasörleri Düzenleme

Gemini CLI'yı kullanarak dosyaları türlerine göre çeşitli klasörlerde düzenleyebilirsiniz. Makinenizde .txt, .png, .jpg, .pdf, .mp4 ve diğer uzantılı dosyaların bulunduğu bir klasöre gidin. Bu klasör büyük olasılıkla masaüstünüz veya İndirilenler klasörünüzdür.

Aşağıda örnek bir klasör ve klasörün içeriği gösterilmektedir (başka dosyalarınız da olabilir):

e9d70be5bbea46d5.png

İlgili klasöre gidip Gemini CLI'yı başlatın. Öncelikle Gemini CLI'dan Resimler, Dokümanlar ve Videolar adlı klasörleri oluşturmasını isteyeceksiniz. Ardından Gemini CLI'dan bu klasörlerdeki dosyaları düzenlemesini isteyeceksiniz.

Gemini CLI, özellikle dosya sisteminizi değiştiren (ör. dosya yazma, taşıma veya silme) komutları yürütmeden önce genellikle sizden izin ister. İzin vermeden önce bu istemleri her zaman dikkatlice inceleyin. Bu, güvenlik ağınızdır.

Create the following folders "Images","Documents","Videos"

Ardından aşağıdaki istemi girin:

Go through all the files in this folder and then organize them by moving all the files ending with .jpg, .jpeg, .gif into the "Images" folder. Move all ".txt" files into the "Documents" folder. Move all the ".mp4" files in the "Videos" folder.

Klasörün son durumunun nasıl olması gerektiğine dair bir örneği aşağıda görebilirsiniz. Yeni alt klasörlerin oluşturulduğunu ve dosyaların türlerine göre ilgili alt klasörlere taşındığını görürsünüz.

7e27d4c88416f62.png

Diğer bazı düzenleme senaryoları (istemler her senaryonun yanında verilmiştir):

  1. Özetleme: "Documents" (Dokümanlar) klasöründeki her doküman için aynı klasörde "summary_ORIGINAL_FILENAME.txt" adında bir txt dosyası oluşturun. Bu dosya, dokümanın ana noktalarının 3 cümlelik özetini içermelidir.
  2. Türe Göre Kategorize Etme: Bu dizindeki tüm PDF ve DOCX dosyalarını tarayın. Adında veya içeriğinde "fatura" kelimesi geçen tüm dosyaları "Finansal/Faturalar" klasörüne taşıyın. "Makbuz" içeren dosyaları "Finans/Makbuzlar" klasörüne taşıyın. Diğer tüm .docx dosyaları "Raporlar" klasörüne gider.
  3. Önemli Bilgileri Ayıklama (ve "Etiketleme"): "Finansal/Faturalar" klasöründeki her PDF dosyasının içeriğini okuyun. Bir tarih bulursanız dosyayı YYYY-AA-GG biçiminde bu tarihi içerecek şekilde yeniden adlandırın. Örneğin: ‘invoice_2025-07-26_original_name.pdf'.

Görüntüleri düzenleme

Makinenizdeki resim içeriklerini nasıl düzenleyebileceğinize bakalım.

Bu özelliği denemek için:

  • Çeşitli resim dosyalarının (.jpg, .png vb.) bulunduğu bir dizininiz/klasörünüz olmalıdır. EXIF verileri içeren bazı fotoğraflar ekleyin (kameralardan/telefonlardan alınan çoğu fotoğrafta bu veriler bulunur).
  • Bu dizine gidin.
  • Gemini CLI'yı başlatın.

Aşağıdaki senaryolardan herhangi birini deneyin (istemler her senaryonun yanında verilmiştir):

  • Tarihe Göre Yeniden Adlandır (EXIF Verileri): Bu dizindeki tüm .jpg ve .png dosyalarını, EXIF verilerindeki oluşturulma tarihlerini "YYYYMMDD_HHMMSS_original_name.jpg" biçiminde içerecek şekilde yeniden adlandırın. EXIF tarihi bulunamazsa dosyanın son değiştirilme tarihi kullanılır.
  • Resim Açıklamaları Oluşturma: Bu klasördeki her resim için resimde ne olduğunu açıklayın ve bu açıklamayı aynı dizinde "description_ORIGINAL_FILENAME.txt" adlı bir metin dosyasına kaydedin.
  • Kopyaları Belirle (Kavramsal, daha gelişmiş mantık gerektirir): Bu klasördeki görsel içeriklerine göre tüm kopya resimleri bulun ve dosya adlarını listeleyin. Henüz silmeyin.

Makaleleri Özetleme (Yerel Dosyalar veya Web)

Aşağıdaki senaryoların her birinde URL'yi, ilgi alanını ve yerel dosya adlarını uygun şekilde değiştirebilirsiniz. Belirtilen dosya adları örnek dosya adlarıdır. Bunları sisteminizdeki dosyaların dosya adlarıyla değiştirebilirsiniz.

Aşağıdaki senaryolardan herhangi birini deneyin (istemler her senaryonun yanında verilmiştir):

  • Web makalesini özetleme (tek URL): https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371 adresine gidin ve bu haber makalesindeki en önemli 3 bilgiyi özetleyin.
  • Birden fazla web makalesini özetleme (ör. arama sonuçlarından): Google Arama'yı kullanarak "Gemini CLI" ile ilgili en son haber makalelerini bulun. En alakalı ilk 5 makaleyi 2-3 cümleyle özetleyin ve URL'lerini listeleyin.
  • Yerel bir metin dosyasını özetleme: "my_research_paper.txt" dosyasındaki makalenin ana noktalarını özetle. Metodolojiye ve sonuçlara odaklanın.
  • Yerel bir PDF'yi özetleme: "financial_report_Q2_2025.pdf" dosyasını oku. Bahsedilen finansal performansın ve temel zorlukların bir özetini sağlayın.

Belirli Bilgileri Çıkarma (Yerel Dosyalar veya Web)

Aşağıdaki senaryoların her birinde URL'yi, ilgi alanını ve yerel dosya adlarını uygun şekilde değiştirebilirsiniz. Belirtilen dosya adları örnek dosya adlarıdır. Bunları sisteminizdeki dosyaların dosya adlarıyla değiştirebilirsiniz.

Aşağıdaki senaryolardan herhangi birini deneyin (istemler her senaryonun yanında verilmiştir):

  • Yerel bir makaleden öğe ayıklama: "biyografi.txt" dosyasından, adı geçen tüm kişileri ve onlarla ilişkili önemli tarihleri listeleyin.
  • PDF'deki bir tablodan veri ayıklama: "quarterly_sales.pdf" dosyasında, 3. sayfadaki "Bölgeye Göre Ürün Satışları" tablosundan verileri ayıklayıp Markdown tablo biçiminde sun.
  • Bir haber web sitesinden haber başlıklarını ve kaynaklarını ayıklama: "https://news.google.com/" (veya benzer bir haber sitesi) adresine gidin. Ana sayfadaki ana başlıkları ve ilgili haber kaynaklarını ayıklayın. Bunları madde işaretli liste olarak sun.
  • E-ticaret sayfasından ürün spesifikasyonlarını bulma: "https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441" adresine gidin (kitap örneği). Kitap başlığını, yazarı ve diğer ayrıntıları ayıklayın. Bunu yapılandırılmış bir JSON biçiminde sun.
  • Belirli bir biçimde (ör. "2s37dk42sn") videodan süreyi ayıklayın.

İçeriğe dayalı soruları yanıtlama (RAG benzeri davranış)

Aşağıdaki senaryoların her birinde URL'yi, ilgi alanını ve yerel dosya adlarını uygun şekilde değiştirebilirsiniz. Belirtilen dosya adları örnek dosya adlarıdır. Bunları sisteminizdeki dosyaların dosya adlarıyla değiştirebilirsiniz.

Aşağıdaki senaryolardan herhangi birini deneyin (istemler her senaryonun yanında verilmiştir):

  • Yerel bir dokümanla ilgili soru-cevap: "user_manual.pdf" dosyasını ekliyorum. Ağ bağlantısı sorunlarını gidermek için hangi adımlar uygulanır?
  • Web sayfasında soru-cevap: "https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health" adresindeki içeriği kullanarak, DSÖ'ye göre iklim değişikliğiyle ilişkili başlıca sağlık riskleri nelerdir?
  • Birden fazla kaynaktaki bilgileri karşılaştır: "article1.txt" ve "article2.txt" adlı iki haber makalem var. Her ikisinde de son ekonomik politika değişiklikleri ele alınıyor. Küçük işletmeler üzerindeki potansiyel etkiyle ilgili görüşlerini karşılaştırın ve aralarındaki farkları belirleyin.

Ayıklanan bilgilere dayalı içerik oluşturma

Aşağıdaki senaryoların her birinde URL'yi, ilgi alanını ve yerel dosya adlarını uygun şekilde değiştirebilirsiniz.

Aşağıdaki senaryolardan herhangi birini deneyin (istemler her senaryonun yanında verilmiştir):

  • Bir makaleden haber özeti oluşturma: @tech_innovation_article.txt dosyasını oku. Yeni teknolojiyi ve potansiyelini vurgulayan, şirket bülteni için uygun, kısa ve ilgi çekici bir haber özeti (yaklaşık 150 kelime) yaz.
  • Toplantı transkriptini özetleyen bir e-posta taslağı oluştur: Toplantı transkripti dosyası: @meeting_transcript.txt. Alınan önemli kararları ve atanan yapılacak işleri (her birinden kimin sorumlu olduğunu da belirterek) özetleyen bir e-posta taslağı oluşturun.

Gemini CLI'da çok formatlı destek

Gemini CLI, Gemini aracılığıyla çoklu model desteğine sahiptir ve farklı içerik biçimlerindeki dosyaları gereksinimlerinize göre işlemesini isteyebilirsiniz.

Bu görevde, Gemini CLI ile bir dizi fatura resmini işleyip bunlardan önemli bilgileri ayıklayacaksınız. Aşağıdaki adımları uygulayın:

  • Makinenizde bir klasör oluşturun ve aşağıdaki GitHub deposundan bazı faturaları indirin.
  • Gemini CLI'yı bu klasörden başlatın.

Faturalardaki bilgileri tablo şeklinde ayıklamak için aşağıdaki istemi girin.

The current folder contains a list of invoice files in Image format. Go through all the files in this folder and extract the following invoice information in the form of a table: Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount.

İdeal olarak şu şekilde bir çıkış almanız gerekir:

fb4183498d02229.png

Türetilmiş ek sütunlar isteyebileceğiniz başka bir senaryo: Geçmişteki tüm fatura son ödeme tarihleri için kırmızı çarpı emojisi göstermek istediğinizi varsayalım. Aşağıdaki gibi bir istem girebilirsiniz:

list all files with .png extension in this folder. Extract the invoice information from it by reading them locally and display it in a table format containing the following column headers: : Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount. Add a column at the end of the table that shows a red cross emoji in case the due date is in the past.

Bu işlem aşağıdaki çıkışı üretir:

f65f6ca8308c7053.png

Bu özelliği, metin biçiminde olmayan kendi dosyalarınızda kullanabilirsiniz.

Veritabanlarıyla çalışmak için Gemini CLI'yı kullanma

Çeşitli veritabanlarıyla daha verimli çalışmak için Gemini CLI'yı kullanabilirsiniz. Bu aracı doğal dilde sorgulama, veri dışa aktarma, veritabanı şemaları tasarlama, gerçekçi test verileri oluşturma gibi birçok senaryoda kullanabilirsiniz.

Bu görevi tamamlamak için SQLite3 kullanacaksınız. SQLite3'ü yüklemeniz ve örnek Chinook veritabanına sahip olmanız gerekir.

SQLite3'ü ayarlamayla ilgili kısa talimatları aşağıda bulabilirsiniz:

  1. macOS: SQLite3 önceden yüklenmiş olarak gelir. sqlite3 --version ile doğrulayın. Gerekirse Homebrew ile yükleyin: brew install sqlite3.
  2. Windows: Önceden derlenmiş ikili dosyaları SQLite web sitesinden indirin. Dosyaları bir dizine (ör. C:\sqlite). Bu dizini sisteminizin PATH ortam değişkenine ekleyin.
  3. Linux: Debian/Ubuntu: sudo apt update && sudo apt install sqlite3

Örnek Chinook veritabanını indirin (indirmek için doğrudan bağlantıyı kullanabilirsiniz).

Bu istemleri çalıştırmak için gemini-cli-projects dizininde bir klasör (database-tasks) oluşturmanız önerilir. Chinook veritabanı dosyasını bu klasöre kopyalayın. Gemini KSA'nın kullanabilmesi için sqlite3 aracının sisteminizde ayarlandığından ve yolda kullanılabilir olduğundan emin olun. Gemini CLI'yı başlatın.

Veritabanı şema diyagramı aşağıda gösterilmektedir:

fb8e96c21ad57590.png

database-tasks adlı bir klasörde olduğunuzu ve Chinook veritabanı dosyasının chinook.db olarak adlandırıldığını varsayalım.

Aşağıda, veritabanlarıyla çalışmanıza yardımcı olabilecek çeşitli istemler verilmiştir. İstenen izni göstermek için ilkini kısaca ele alalım.

Veritabanında bulunan tabloları listeleme istemiyle başlayın ve şu istemi girin:

What tables are present in the file: chinook.db 

Bu, dosyayı okumak için aracı kullanır ve ardından gerekli işlemleri yapmak için sisteminizde bulunan sqlite3 yardımcı programını kullanmak ister:

b2a17ef60706c3f5.png

Beklenen çıktıyı almak için bir kez çalıştırma izni verin:

8d40754b830f4697.png

Aşağıdaki istemleri veya istediğiniz başka bir istemi deneyin:

  • Kaç çalışan var?
  • Faturalar tablosunun şeması nedir?
  • Toplam tutara göre ilk 3 fatura hangileri ve bu faturaları hangi müşteriler oluşturdu?

Gemini CLI'nın iki şeyi hallettiğini fark edeceksiniz: İhtiyacınızı karşılayacak doğru SQL ifadesini oluşturma ve doğru sqlite3 komutunu verme.

Veri oluşturmak için Gemini CLI'yı kullanma

Gemini KSA'dan çeşitli veri biçimlerinde veri üretmesini isteyebilirsiniz. Bu, içerik parçalarından taklit etmeniz gerekebilecek JSON verilerine kadar değişebilir. Burada geliştiriciler/test kullanıcıları için geçerli olan senaryolara odaklanacağız.

Deneyebileceğiniz bazı istemler:

Örnek müşteri yorumlarının JSON verilerini oluşturma

Generate a JSON array of 3 synthetic customer reviews for a new smartphone. Each review should have 'reviewId' (string, UUID-like), 'productId' (string, e.g., 'SMARTPHONE_X'), 'rating' (integer, 1-5), 'reviewText' (string, 20-50 words), and &#39;reviewDate' (string, YYYY-MM-DD format).

Sahte API yanıtları oluşturma (JSON)

Generate a JSON array representing 7 daily sales records for a mock API endpoint. Each record should include 'date' (YYYY-MM-DD, chronologically increasing), 'revenue' (float, between 5000.00 and 20000.00), 'unitsSold' (integer, between 100 and 500), and 'region' (string, either 9;North', 'South', 'East', 'West').

Örnek Veritabanı Ekleme İfadeleri (SQL) Oluşturma

Generate 5 SQL INSERT statements for a table named 'users' with columns: 'id' (INTEGER, primary key), 'username' (VARCHAR(50), unique), 'email' (VARCHAR(100)), 'password_hash' (VARCHAR(255)), 'created_at' (DATETIME, current timestamp). Ensure the password_hash is a placeholder string like 'hashed_password_X'.

Veri yükleme/analiz için CSV verileri oluşturma

Generate 10 lines of CSV data, including a header row, for customer transactions. Columns should be: 'TransactionID' (unique string), 'CustomerID' (integer), 'ItemPurchased' (string, e.g., 'Laptop', 'Monitor', 'Keyboard'), 'Quantity' (integer, 1-3), 'UnitPrice' (float, between 100.00 and 1500.00), 'TransactionDate' (YYYY-MM-DD).

Yapılandırma dosyası (YAML) oluşturma

Generate a sample YAML configuration for a 'user_service'. Include sections for 'database' with 'host', 'port', 'username', 'password', 'database_name'. Also include a 'api_keys' section with 'payment_gateway' and 'email_service' placeholders. Use realistic default values.

Sınır durumları/doğrulama için test verileri oluşturma

Generate a JSON array of 8 email addresses for testing purposes. Include a mix of: 2 valid standard emails, 2 with missing '@', 2 with invalid domains (e.g., '.com1'), and 2 with special characters in the local part that are usually invalid (e.g., spaces or multiple dots).

13. Tebrikler

Tebrikler! Gemini CLI'ı, özelliklerini başarıyla keşfettiniz ve birkaç kullanım alanında uyguladınız.

Referans belgeleri