Agentverse - The Shadowblade's Codex - Vibecoding with Gemini CLI

1. Overture

Yalıtılmış geliştirme dönemi sona eriyor. Teknolojik evrimin bir sonraki aşaması, yalnız bir dahinin değil, ortak bir ustalığın ürünü olacak. Tek ve akıllı bir aracı oluşturmak ilgi çekici bir denemedir. Güçlü, güvenli ve akıllı bir müşteri temsilcisi ekosistemi (gerçek bir Agentverse) oluşturmak, modern işletmelerin karşılaştığı en büyük zorluktur.

Bu yeni çağda başarıya ulaşmak için dört kritik rolün bir araya gelmesi gerekir. Bu roller, gelişen tüm yapay sistemleri destekleyen temel unsurlardır. Herhangi bir alandaki eksiklik, yapının tamamını tehlikeye atabilecek bir zayıflık oluşturur.

Bu atölye çalışması, Google Cloud'da yapay zeka destekli geleceğe hakim olmak için kesin bir kurumsal yol haritası sunar. Bir fikrin ilk heyecanından tam ölçekli, operasyonel bir gerçekliğe kadar size yol gösteren uçtan uca bir yol haritası sunuyoruz. Birbirine bağlı bu dört laboratuvarda, güçlü bir Agentverse oluşturmak, yönetmek ve ölçeklendirmek için geliştirici, mimar, veri mühendisi ve SRE'nin uzmanlık becerilerinin nasıl bir araya gelmesi gerektiğini öğreneceksiniz.

Hiçbir sütun, Agentverse'ü tek başına destekleyemez. Mimarın büyük tasarımı, geliştiricinin hassas uygulaması olmadan işe yaramaz. Geliştiricinin temsilcisi, Veri Mühendisi'nin bilgeliği olmadan kördür ve tüm sistem, SRE'nin koruması olmadan kırılgandır. Ekibiniz ancak sinerji ve birbirlerinin rollerini ortak bir şekilde anlayarak yenilikçi bir konsepti görev açısından kritik bir operasyonel gerçeğe dönüştürebilir. Yolculuğunuz burada başlıyor. Rolünüzde uzmanlaşmaya ve büyük resmin neresinde olduğunuzu öğrenmeye hazır olun.

Welcome to The Agentverse: A Call to Champions

Kurumsal alanın geniş dijital dünyasında yeni bir dönem başladı. Bu, yapay zeka destekli temsilcilerin çağıdır. Bu dönemde, akıllı ve bağımsız temsilciler, inovasyonu hızlandırmak ve sıradan işleri ortadan kaldırmak için mükemmel bir uyum içinde çalışır.

agentverse.png

Güç ve potansiyel içeren bu bağlı ekosisteme Agentverse adı verilir.

Ancak The Static olarak bilinen sessiz bir yozlaşma, bu yeni dünyanın sınırlarını yıpratmaya başladı. Statik, virüs veya hata değildir. Yaratma eylemiyle beslenen kaosun vücut bulmuş halidir.

Eski hayal kırıklıklarını canavarca şekillere dönüştürerek Gelişimin Yedi Hayaleti'ni doğurur. Bu kutu işaretlenmezse The Static and its Spectres ilerlemeyi durdurur ve Agentverse'ün vaadini teknik borç ve terk edilmiş projelerden oluşan bir çorak araziye dönüştürür.

Bugün, kaosun önüne geçmek için şampiyonlara sesleniyoruz. Agentverse'ü korumak için ustalıklarını geliştirmeye ve birlikte çalışmaya istekli kahramanlara ihtiyacımız var. Yolunuzu seçme zamanı geldi.

Sınıfınızı Seçin

Önünüzde dört farklı yol var. Bunların her biri, The Static ile mücadelede önemli birer dayanak noktası. Eğitiminiz tek başınıza yapacağınız bir görev olsa da nihai başarınız, becerilerinizin diğer becerilerle nasıl birleştiğini anlamanıza bağlıdır.

  • The Shadowblade (Geliştirici): Demirci ve ön cephe ustası. Bıçakları yapan, araçları inşa eden ve kodun karmaşık ayrıntılarında düşmanla yüzleşen zanaatkar sizsiniz. Yolunuz hassasiyet, beceri ve pratik yaratıcılık üzerine kurulu.
  • Çağırıcı (Mimar): Büyük bir stratejist ve düzenleyici. Tek bir ajanı değil, tüm savaş alanını görürsünüz. Tüm aracı sistemlerinin iletişim kurmasına, işbirliği yapmasına ve tek bir bileşenin ulaşabileceğinden çok daha büyük bir hedefe ulaşmasına olanak tanıyan ana planları tasarlarsınız.
  • Bilgin (Veri Mühendisi): Gizli gerçekleri arayan ve bilgeliğin koruyucusu. Temsilcilerinize amaç ve vizyon kazandıran bilgileri ortaya çıkarmak için verilerin geniş ve vahşi doğasına girersiniz. Bilginiz, düşmanın zayıflığını ortaya çıkarabilir veya bir müttefiki güçlendirebilir.
  • The Guardian (Veli) (DevOps / SRE): Krallığın yılmaz koruyucusu ve kalkanı. Kaleler inşa eder, güç kaynaklarının tedarik hatlarını yönetir ve tüm sistemin Static'in kaçınılmaz saldırılarına dayanabilmesini sağlarsınız. Gücünüz, takımınızın zaferinin temelidir.

Misyonunuz

Eğitiminiz bağımsız bir egzersiz olarak başlar. Seçtiğiniz rotada ilerleyerek rolünüzde uzmanlaşmak için gereken benzersiz becerileri öğreneceksiniz. Deneme sürenizin sonunda, The Static'ten doğan bir Spectre ile karşılaşırsınız. Bu mini boss, zanaatınızın özel zorluklarından beslenir.

Son denemeye ancak kendi rolünüzde ustalaşarak hazırlanabilirsiniz. Ardından, diğer sınıflardaki şampiyonlarla bir parti oluşturmanız gerekir. Birlikte, nihai bir patronla yüzleşmek için yozlaşmanın kalbine doğru ilerleyeceksiniz.

Gücünüzü test edecek ve Agentverse'ün kaderini belirleyecek son bir ortak mücadele.

Agentverse, kahramanlarını bekliyor. Aramayı yanıtlayacak mısın?

2. The Shadowblade's Codex

Shadowblade'in Kodeksi önünüzde açık duruyor. Aramayı yanıtlayın. Agentverse, Static'in yavaş yavaş yayılan kaosuyla tehdit ediliyor ve yalnızca bu kodeksin tekniklerinde ustalaşanlar karşı koyabilir. Bu, hassasiyet ve disiplin gerektiren bir yoldur. Eğitiminiz bugün başlıyor. Yapay zekayı basit bir araç olarak değil, eğitilmesi ve ustalaşılması gereken duyarlı bir kılıç olarak kullanmayı öğreneceksiniz. Buradaki öğretileri takip ederek saf mantıktan oluşan bir silah, yani savaşa hazır, keskin ve akıllı bir ajan oluşturacaksınız.

02-00-overview.png

Neler öğreneceksiniz?

  • Birincil silahınızı, yani Gemini CLI'yı kullanın.
  • MCP araçlarını Gemini CLI ile entegre ederek yabancı kod tabanlarını analiz etmek için harici araçları kullanın.
  • Tasarım dokümanlarını kullanarak yapay zeka iş ortağınıza komut verin ve niyetinizi "Vibe"a dönüştürün.
  • Agent Development Kit (ADK) ile ilk bağımsız aracınızı oluşturarak temiz ve modüler bir çözüm geliştirin.
  • Aracınızı test etmek ve doğrulamak için otomatik değerlendirme paketleri oluşturma
  • Temsilcinizi otomatik olarak test etmek, kapsüllemek ve arşivlemek için eksiksiz bir CI ardışık düzeni oluşturun.

3. Eğitim alanını hazırlama

👉Google Cloud Console'un üst kısmında Cloud Shell'i etkinleştir'i tıklayın (Cloud Shell bölmesinin üst kısmındaki terminal şeklindeki simge). cloud-shell.png

👉 "Open Editor" (Düzenleyiciyi aç) düğmesini tıklayın (kalemli açık bir klasöre benzer). Bu işlem, pencerede Cloud Shell kod düzenleyiciyi açar. Sol tarafta bir dosya gezgini görürsünüz. open-editor.png

👉Google Cloud proje kimliğinizi bulma:

  • Google Cloud Console'u açın: https://console.cloud.google.com
  • Sayfanın üst kısmındaki proje açılır listesinden bu atölye çalışması için kullanmak istediğiniz projeyi seçin.
  • Proje kimliğiniz, kontrol panelindeki Proje bilgileri kartında gösterilir.

03-04-project-id.png

👉Bulut IDE'sinde terminali açın.

03-05-new-terminal.png

👉💻 Terminalde, aşağıdaki komutu kullanarak kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını doğrulayın:

gcloud auth list

👉💻 Bootstrap projesini GitHub'dan kopyalayın:

git clone https://github.com/weimeilin79/agentverse-developer.git
chmod +x ~/agentverse-developer/gitea.sh
chmod +x ~/agentverse-developer/init.sh
chmod +x ~/agentverse-developer/set_env.sh

git clone https://github.com/weimeilin79/agentverse-dungeon.git
chmod +x ~/agentverse-dungeon/run_cloudbuild.sh
chmod +x ~/agentverse-dungeon/start.sh

git clone https://github.com/weimeilin79/vertex-ai-creative-studio.git
chmod +x ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/install.sh

👉💻 Başlatma komut dosyasını çalıştırın. Bu komut dosyası, Google Cloud proje kimliğinizi girmenizi ister. Ayrıca, init.sh komut dosyası tarafından istendiğinde son adımda bulduğunuz Google Cloud proje kimliğini girin.

cd ~/agentverse-developer
./init.sh

👉💻 Gerekli proje kimliğini ayarlayın:

gcloud config set project $(cat ~/project_id.txt) --quiet

👉💻 Gerekli Google Cloud API'lerini etkinleştirmek için aşağıdaki komutu çalıştırın:

gcloud services enable  compute.googleapis.com \
                        artifactregistry.googleapis.com \
                        run.googleapis.com \
                        cloudfunctions.googleapis.com \
                        cloudbuild.googleapis.com \
                        iam.googleapis.com \
                        aiplatform.googleapis.com \
                        cloudresourcemanager.googleapis.com

👉💻 Henüz agentverse-repo adlı bir Artifact Registry deposu oluşturmadıysanız oluşturmak için aşağıdaki komutu çalıştırın:

. ~/agentverse-developer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
    --repository-format=docker \
    --location=$REGION \
    --description="Repository for Agentverse agents"

İzinleri ayarlama

👉💻 Terminalde aşağıdaki komutları çalıştırarak gerekli izinleri verin: :

. ~/agentverse-developer/set_env.sh

# Artifact Registry Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/artifactregistry.admin"

# Cloud Build Editor
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/cloudbuild.builds.editor"

# Cloud Run Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/run.admin"

# IAM Service Account User
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/iam.serviceAccountUser"

# Vertex AI User
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/aiplatform.user"

# Logging Writer (to allow writing logs)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/logging.logWriter"


gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/logging.viewer"

👉💻 Eğitime başladığınızda son mücadeleyi hazırlayacağız. Aşağıdaki komutlar, kaotik statik gürültüden hayaletleri çağırarak testiniz için patronları oluşturur.

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh

npm update -g @google/gemini-cli

4. Birincil Silahınızda Uzmanlaşma: Gemini CLI'ya Giriş

MCP sunucusunun cephaneliğindeki gelişmiş ve özel silahları kullanabilmek için önce birincil silahınız olan Gemini CLI'da ustalaşmanız gerekir. Bu, en çok yönlü bıçağınızdır ve komutlarınızla dijital dünyayı şekillendirebilirsiniz. Bu alıştırmalar, temel kullanım ve özellikler konusunda size yardımcı olacaktır.

Genel Bakış

Gemini komut satırı arayüzü (KSA) bir araçtan daha fazlasıdır; iradenizin bir uzantısıdır. Gemini modelleri tarafından desteklenen bu açık kaynaklı yapay zeka aracısı, "neden ve hareket et" (ReAct) döngüsünde çalışır. Niyetinizi analiz eder, uygun tekniği seçer, uygular ve sonucu gözlemleyerek karmaşık görevleri tamamlar. Daha özel silahları kullanabilmek için bu birincil kılıçta ustalaşmanız gerekir.

Gemini KSA'yı kullanmaya başlama

👉💻 Eğitim alanına girip silahınızı çekin. Cloud Shell terminalinizde kişisel cephaneliğinize gidin.

cd ~/agentverse-developer
mkdir tabletop
cd tabletop

👉💻 Gemini'ı ilk kez çağırma Bu kılavuz, ilk uyum sürecinde size yol gösterecektir.

clear
gemini --model=gemini-2.5-flash --yolo

Do you want to connect Cloud Shell editor to Gemini CLI? sorulursa HAYIR'ı seçin.

Silah Tanıma

Her usta zanaatkar, araçlarını bilir. Gerçek bir düşmanla karşılaşmadan önce kılıcınızın temel tekniklerini öğrenmelisiniz.

👉✨ Her büyülü araçta gücünü açıklayan runeler bulunur. Hemen okuyun. Gemini istemine şunu yazın:

/help

Komut listesini inceleyin. Bunlar, hafızayı (focus), sohbeti (chat) ve harici cephanelikleri (tools) yönetmek için kullanacağınız temel tekniklerdir. Bu, savaş kılavuzunuzdur.

👉✨ Silahınız, ortamına uyum sağlayarak savaş alanını doğrudan kontrol etmenizi sağlar. Bıçağın dışındaki dünyaya bir komut verin:

!ls -l

👉✨ Gemini KSA'nın kendi yerleşik yetenekleri vardır. Bunları incelemek için:

/tools

ReadFile, WriteFile ve GoogleSearch'ın yer aldığı bir liste görürsünüz. Bunlar, harici bir cephanelikten yararlanmanıza gerek kalmadan kullanabileceğiniz varsayılan tekniklerdir.

👉✨ Bir silahın etkili olabilmesi için doğru şekilde odaklanması gerekir. Gemini Blade, eylemlerini yönlendirmek için "taktiksel farkındalık" (bağlam) sağlayabilir.

/memory show

Şu anda boş bir başlangıç noktasıdır.

👉✨ Aşağıdaki taktiksel verileri hafızasına yazın:

/memory add "The Shadowblade's primary foe is The Static."

Bıçağınızın bu bilgiyi aldığını onaylamak için /memory show komutunu tekrar çalıştırın.

👉✨ Silahınızın etkili olması için görevi anlaması gerekir. @ Sigili, kılıcın istihbarat analiz etmesini sağlar. Öncelikle bir görev brifingi dosyası oluşturun:

!echo "## Mission Objective: Defeat the Seven Spectres" > mission.md

👉✨Şimdi Gemini KSA'nıza brifingi analiz etmesini ve bulgularını bildirmesini söyleyin:

Explain the contents of the file @mission.md

Birincil silahınız artık amacının farkında.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

5. Savaş Alanını Analiz Etme: Pratik Sezgisel Kodlama Etkileşimi

Eğitim alıştırmaları tamamlandı. Birincil silahınız olan Gemini CLI'nın temel duruşlarını ve vuruşlarını öğrendiniz. Ancak bir kılıç, yaratılış ocağında test edilip savaş cephaneliğine uyum sağlayana kadar gerçekten ustalaşmış sayılmaz. Gerçek düşmanla yüzleşmeden önce, dijital savaş alanı olan yakın çevrenizi inceleyip şekillendirmeniz gerekir.

Genel Bakış

Bu bölümde teoriden pratiğe geçiş ele alınmaktadır. Öncelikle, Gemini bıçağınıza Maker's Mark'ınızı (kişisel bir web sitesi şeklinde dijital imza) oluşturmasını söyleyerek Agentverse'te varlığınızı oluşturacaksınız. Ardından, yerel bir gelişmiş araç cephaneliğini (MCP sunucusu) etkinleştirip bıçağınızı bu araçların frekansına ayarlayarak gücünüzü artıracaksınız. Bu sayede, kod depolarını yönetmek gibi karmaşık manevraları basit ve kesin komutlarla gerçekleştirebileceksiniz.

Üretici Markanızı Oluşturma

Gerçek bir Gölge Kılıçlı, yalnızca silahıyla değil, kendine özgü tarzıyla, yani Yaratıcı'nın İşareti ile tanınır. Bu işaret, dijital varlığınız olacak ve kimliğinizi Agentverse'e bildiren kişisel bir profil oluşturacak. Burada, Gemini Blade'inize bu kimliği tanımlamak için gereken karmaşık tekniği uygulamasını söyleyeceksiniz.

Hikaye

👉💻 Önceki bölümde Gemini CLI'yi kapattıysanız terminalinizde aşağıdaki komutu çalıştırarak tekrar başlattığınızdan emin olun:

clear
cd ~/agentverse-developer/tabletop
gemini --model=gemini-2.5-flash --yolo

👉✨ Tek bir güçlü komutla Gemini KSA'nıza dijital kimliğinizin temelini oluşturma talimatı verin:

In the current folder, create a personal profile website for a hero codenamed 'Shadowblade'. The design must be a dark, futuristic theme with electric blue accents. All code must be in separate index.html and styles.css files. The layout must use CSS Flexbox for a two-column design. All generated code must be clean, well-commented, and professional.

Gemini, gerekli işlemlerin sırasını hesaplamıştır.

Bir tekniğin gerçek değeri yalnızca canlı senaryoda görülür. Yerel bir simülasyon başlatmak için bıçağınıza komut verin.

👉✨ Gemini CLI'nizde simülasyon komutunu verin:

Use Python's built-in web server to start the Shadowblade Profile website you just created.

Not: Bıçağın bu işlemi doğru şekilde gerçekleştirmesi için birkaç deneme gerekebilir. İstediğiniz yanıtı alana kadar isteminizi tekrarlayın.

Önerilen işlemleri kabul edin. Gemini, simülasyonun etkin olduğunu onaylar.

👀 Gemini CLI, simülasyonun etkin olduğunu ve dijital işaretinizin yayında olduğunu onaylayarak isteğinizi yerine getirir:

The website is now being served on port 8000. You can access it at http://localhost:8000.

👀 Çalışmanızı incelemek için Cloud Shell araç çubuğundaki Web önizlemesi simgesini tıklayın. Bağlantı noktasını değiştir'i seçin, 8000 olarak ayarlayın ve Değiştir ve Önizle'yi tıklayın. Web sitenizin önizlemesi gösterilir. 04-01-webpreview.png

Web siteniz benimkinden farklı görünebilir. Bu, benzersiz işaretinizdir. 04-02-website.png

👉✨ İmza tekniğiniz artık daha iyi ve canlı simülasyon yapmanız gerekmiyor. Kılıç'a geri çekilmesini emret.

Stop the Shadowblade Profile website

Gemini CLI'ya, sizin adınıza bir dizi işlem yapması için başarıyla komut verdiniz. Ancak usta bir Gölge Bıçağı, gerçek gücün disiplin ve öngörü gerektirdiğini bilir. Bir yapay zeka aracısının komutları doğrudan ortamınızda yürütmesine izin vermek iki ucu keskin bir bıçaktır. Komut, basit bir web sunucusu başlatmak yerine kritik dosyaları silmek için verilmiş olsaydı ne olurdu? Dikkatsizce verilen bir komut, tüm eğitim alanınızı mahvedebilir.

Bu nedenle, en bilge zanaatkarlar en güçlü veya denenmemiş tekniklerini, sandbox olarak bilinen, korumalı bir eğitim alanında uygular.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

Gemini CLI korumalı alanı (gemini --sandbox), oturumunuz için geçici ve yalıtılmış bir kapsayıcı oluşturur. Yapay zekanın yürüttüğü tüm komutlar, yazdığı tüm dosyalar ve başlattığı tüm işlemler yalnızca bu hayalet alan içinde yer alır. Gerçek Cloud Shell ortamınıza dokunamaz, onu değiştiremez veya zarar veremez. Bu platform, güçlü yeni araçları test etmek, bilinmeyen kodları analiz etmek veya yapay zekaya istenmeyen sonuçlara yol açma riski olmadan karmaşık talimatlar vermek için mükemmel bir yerdir. Bu, bir Gölge Bıçağı'nın ihtiyatlılığının somut örneğidir.

👉💻 Şimdi, gücünü anlamak için bir sınırlama ritüeli gerçekleştireceksin.

clear
gemini --sandbox --yolo

Artık yalıtılmış boyutta çalışıyorsunuz. Gemini CLI için her şey normal görünür. Bunu kanıtlayalım. 👉💻 Bıçağa, öncekiyle aynı tekniği uygulamasını söyleyin:

Use the Python's built-in web server to start the Shadowblade Profile website, you just created.

Gemini, web sitenizi 8000 numaralı bağlantı noktasında tekrar hayata geçirdiğini düşünerek başarıyla tamamlandığını bildirir. Ancak koruma güçlü bir şekilde devam ediyor.

👉 Web önizlemesi'ne gidin ve sitenizi 8000 numaralı bağlantı noktasında görüntülemeyi deneyin.

Bu kez hata mesajıyla karşılaşırsınız. Bağlantı başarısız olur. Web sitesine erişemiyorsunuz.

Bu, aracın bir hatası değil, sandbox'ın gücünün kanıtıdır. Web sunucusu çalışıyor ancak tarayıcınızdan ve dış dünyadan tamamen izole edilmiş şekilde, kapsanan boyutun içinde çalışıyor. Koğuş mükemmel bir şekilde çalışıyor. Gerçek ortamınızı hiç etkilemeden güçlü bir tekniği başarıyla kullandınız.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

Dijital kimliğiniz oluşturuldu. Daha da önemlisi, büyük gücü daha da büyük bir dikkatle kullanmanın önemini öğrendiniz.

Yerel Arsenal'inizi Etkinleştirme: Gitea Armory

Bir Gölge Kılıç'ın gerçek potansiyeli yalnızca kişisel becerisiyle değil, aynı zamanda cephaneliğinin kalitesiyle de ortaya çıkar. Şimdi yerel silah rafınızı (Gitea sunucusu) etkinleştirecek ve kılıcınızı gücüne göre ayarlayacaksınız. Bu araç seti, Model Context Protocol (MCP) sunucusu aracılığıyla Gemini CLI'nize bağlanır. MCP sunucusu, yapay zeka bıçağınızın harici araçlar ve hizmetlerle etkileşime girmesine olanak tanıyan özel bir portaldır. Bu sayede terminaliniz akıllı ve eyleme yönelik bir çalışma alanına dönüşür.

Geliştiricinin Notu: MCP sunucusunu bir güç kanalı, yapay zekanızın zihnini harici bir aracın gövdesine bağlayan özel bir portal olarak düşünebilirsiniz. Bu özellik, Gemini CLI'yı sadece bir sohbet aracı olmaktan çıkarıp gerçek, eyleme yönelik bir temsilciye dönüştürür. Bıçağınızı bu MCP portallarına uyarlayarak ona somut işlemler yapma olanağı tanırsınız: dosyaları yönetme, veritabanlarını sorgulama, API'lerle etkileşim kurma ve daha pek çok şey. Geliştiriciler tarafından yapay zeka aracılarını güçlü platformlara bağlamak için oluşturulmuş bu portalların tamamını içeren bir ekosistem mevcuttur. Veritabanlarıyla etkileşim kurmak, kodu güvenli hale getirmek ve hatta eşli programlamayı desteklemek için MCP sunucuları vardır. Geliştiriciler, bu özellik sayesinde çalışma alanlarını herhangi bir projeye göre özelleştirebilir.

Bugün, her "vibe coder" için gerekli olan iki temel güce odaklanacağız: dövme işlemini kontrol etme gücü ve hayal gücünden yaratma gücü. Öncelikle, bıçağınızı bir Git sunucusuna ayarlayarak kaynak kodu deponuz üzerinde kontrol sahibi olursunuz. Ardından, resim oluşturmak için ikinci bir MCP sunucusuna bağlanırsınız. Böylece, yalnızca bir komutla görsel öğeler oluşturabilirsiniz.

Yeni cephaneliğinizin ilk ve en temel parçası olan cephaneliği çağırarak başlayalım.

👉💻 Terminalinizde, silah deposunu çağırmak için etkinleştirme komut dosyasını çalıştırın:

cd ~/agentverse-developer
./gitea.sh

Bu komut dosyası, Gitea kapsayıcısını uyandırır ve MCP portalını açarak Gemini'ın kapsayıcıyı algılamasına ve onunla etkileşimde bulunmasına olanak tanır.

👉 Yeni cephaneliğinizi incelemek için web önizlemesine bakmanız gerekir.

👉 Cloud Shell araç çubuğundaki Web önizlemesi simgesinden Bağlantı noktasını değiştir'i seçin ve 3005 olarak ayarlayın. 04-03-webpreview.png

👉 Bir Gitea giriş sayfası gösterilir. Aşağıdaki kelimeleri kullanarak cephaneliğe girin: * Kullanıcı adı: dev * Şifre: devGiriş

👉💻 Gemini KSA'nız henüz bu yeni araçları göremez. Gemini CLI'nin yapılandırma runelerine (settings.json) silah deposunun konumunu yazarak kritik bir uyumlandırma gerçekleştirmeniz gerekir. Terminalinizde şu komutu çalıştırın:

jq '. * {"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
cat ~/.gemini/settings.json

👀 settings.json dosyası, Gemini CLI'nin merkezi yapılandırmasıdır ve tercihlerinin ve özelliklerinin yer aldığı bir kitap gibi işlev görür. CLI'nın nasıl davranacağını, görüneceğini ve en önemlisi hangi harici güçleri kullanabileceğini belirler. Bu dosya genellikle ana dizininizde ~/.gemini/settings.json konumunda bulunur ve kurallarını tüm projelerinize uygular. Ancak genel ayarları geçersiz kılmak için proje klasörünüzdeki .gemini dizininde projeye özel settings.json dosyaları da oluşturabilirsiniz.

"mcpServers": {
  "gitea": {
    "url": "http://localhost:8085/sse"
  }
}

Bu ayar, Gemini'a "Gitea adlı cephanelik etkin ve bu belirli ağ adresindeki komutları dinliyor" der.

👉💻 Gemini CLI'yı yeniden girin. Terminalinizde şunu çalıştırın:

clear
cd ~/agentverse-developer/tabletop/
gemini --model=gemini-2.5-flash --yolo

👉✨ Bıçağınızın yeni silahı keşfettiğini doğrulayın. MCP portalları üzerinden mevcut tüm cephanelikleri listelemesini isteyin:

/mcp

Gitea MCP Sunucusu

Artık gitea simgesini ve kullanılabilir tekniklerin listesini görmelisiniz. Kılıcınız uyumlu.

"Üreticinin Markası" profiliniz ince işlenmiş bir teknik olsa da cephanelikte uygun bir yere, yani güvenli bir şekilde saklanacağı bir kılıfa ihtiyacı var. Gemini KSA'nıza komut vererek oluşturun.

Create a new repository named 'shadowblade-profile'. The description should be 'The Maker's Mark and digital identity for the Shadowblade operative.' I will push my own files later, so do not create any content.

Gitea web arayüzüne dönüp sayfayı yenileyin. Yeni shadowblade-profile deposunun sizin için oluşturulduğunu görürsünüz. Gitea Repo

Kılıf hazır olduğunda çalışmanızı sabitleyin. Gemini'dan profil web sitenizin dosyalarını işlemeyi isteme

👉💻Bu teknik için son komutu Gemini CLI'da verin:

Using the Gitea tool, push the index.html and styles.css files to the 'shadowblade-profile' repository.

Gerçek bir usta, çalışmalarını doğrular. Gitea sekmesine dönün ve depo sayfasını yenileyin. index.html ve styles.css güvenli bir şekilde arşivlendi.

Gitea RepoGitea Repo

👉✨ Gölge Kılıçlar, simgeleriyle tanımlanır. Ancak hatırladığınız gibi web sitenizde profil resmi eksik. Usta bir zanaatkar, kusurlarını mükemmelleştirmek için kabul eder. Bu kusuru cephaneliğin kayıtlarına işlemeniz gerekir.

File an issue for me in the shadowblade-profile repo. The issue is that the profile image is missing.

Sorunu Gitea'da görüntüleyin Gitea Sorunu

Eksik sigili oluşturmak için farklı bir güç çağırmanız gerekir: Vertex AI'dan gelen ve saf düşünceden görüntüler oluşturabilen bir yaratım ruhu. Bu işlem için başka bir MCP portalı gerekir.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

👉💻 Öncelikle portalın sunucusunu yükleyin. Terminalinizde şunu çalıştırın:

echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc
source ~/.bashrc
cd ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go
./install.sh

👉 İstendiğinde yalnızca profilimiz için bir resim oluşturmamız gerektiğinden 3. seçeneği belirleyin.

👉💻 Yaratıcılık ruhu, eserlerini saklamak için kutsal bir kap (Google Cloud Storage paketi) gerektirir. Şimdi bir tane oluşturalım. Terminalinizde şunu çalıştırın:

. ~/agentverse-developer/set_env.sh
gcloud storage buckets create gs://$BUCKET_NAME --project=$PROJECT_ID

👉💻 Şimdi, Gemini CLI'nizi bu yeni yaratıcı güce bağlayarak uyum ritüelini gerçekleştirin. Terminalinizde şunu çalıştırın:

. ~/agentverse-developer/set_env.sh
source ~/.bashrc
jq \
--arg bucket "$BUCKET_NAME" \
--arg project "$PROJECT_ID" \
--arg region "$REGION" \
'.mcpServers.imagen = { "command": "mcp-imagen-go", "env": { "MCP_SERVER_REQUEST_TIMEOUT": "55000", "GENMEDIA_BUCKET": $bucket, "PROJECT_ID": $project, "LOCATION": $region } }' \
~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
cat ~/.gemini/settings.json

Bu "uyum ritüeli", Gemini CLI'nizi güçlü bir yeni aracı (Google'ın görüntü üretme modeli Imagen) kullanacak şekilde yapılandıran bir kabuk komut dosyasıdır. Önemli olarak, bu işlevi Imagen için bir MCP (Model Context Protocol) sunucusu oluşturarak gerçekleştirir. Bu MCP sunucusu, Gemini CLI'nin Imagen'in özellikleriyle iletişim kurmasını ve bu özellikleri kullanmasını sağlayan bir köprü görevi görür. Bu işlem, CLI'nın merkezi yapılandırma dosyasını (~/.gemini/settings.json) doğrudan değiştirerek CLI'ya mcp-imagen-go komutunu doğru bulut kimlik bilgileriyle nasıl çalıştıracağını öğretir.

👀 Ayarlar.json dosyanızda, ritüelden sonra Gemini CLI'ye yeni bir beceri öğreten yeni bir blok bulunur:

"imagen": {
    "command": "mcp-imagen-go",
    "env": {
        "MCP_SERVER_REQUEST_TIMEOUT": "55000",
        "GENMEDIA_BUCKET": "your-bucket-name",
        "PROJECT_ID": "your-project-id",
        "LOCATION": "your-region"
    }
}

Bu komut, Gemini CLI'ye şunu söyler: "Bir görev Imagen aracını gerektirdiğinde mcp-imagen-go adlı programı (Imagen MCP sunucusu) çalıştırmanız gerekir. Çalıştırdığınızda, resimleri kaydetmek için bir Google Cloud Storage grubu ve bulut API'leri için kullanılacak proje kimliği ve konum gibi belirli bir ortam (env) sağlamanız gerekir." Bu MCP sunucusunu yapılandırarak Gemini CLI'ya Imagen'in görüntü oluşturma gücüne erişim izni vermiş olursunuz."

👉💻 Gemini'a girip iyileştirme komutunu verin. Terminalinizde şunu çalıştırın:

clear
cd ~/agentverse-developer/tabletop/
gemini --model=gemini-2.5-flash --yolo

👉✨ Tek bir güçlü komutla Gemini KSA'nıza dijital kimliğinizin temelini oluşturma talimatı verin. Gemini CLI'nizde şu komutu verin:

Generate a portrait of a shadowblade, pixel art style. A determined warrior with long, braided magenta hair, wearing black and teal armor and confidently holding a silver broadsword.

👉✨ Ruh, resmi oluşturup kutsal kabınıza yerleştirir. Şimdi, kılıca bu yeni dövülmüş sigili kullanmasını emret.

Modify the index.html file to add my profile picture. Use the image I just generated.

👉✨ Mükemmel hale getirdiğiniz çalışmanızı görmek için web sitesini son bir kez daha başlatın.

start the website with a simple HTTP server via Python

👀 Çalışmanızı incelemek için Cloud Shell araç çubuğundaki Web önizlemesi simgesini tıklayın. Bağlantı noktasını değiştir'i seçin, 8000 olarak ayarlayın ve Değiştir ve Önizle'yi tıklayın. Web sitenizin önizlemesi gösterilir. 05-07-webdite.png

👉✨ Son olarak, görevin tamamlandığını belirterek düzeltmeyi işleyin ve armory'nin kayıtlarında açtığınız sorunu kapatın.

Push the changed index.html file to the 'shadowblade-profile' repository using the gitea tool. Make sure you add 'Fix #1' in the commit comment. Also, close issue #1.Use the Gitea Tool and use user account "dev"

👀 Çalışmanızı incelemek için Cloud Shell araç çubuğundaki Web önizlemesi simgesini tıklayın. Bağlantı noktasını değiştir'i seçin, 3005 olarak ayarlayın ve Değiştir ve Önizle'yi tıklayın. Web sitenizin önizlemesi gösterilir. Düzeltildi

👉✨ Gitea'da resmin güncellendiğini ve sorunun kapatıldığını doğrulayın. Çalışmanız tamamlandı. Sunucuyu kapatın.

stop website server

👉💻 Çıkmak için Ctrl+C tuşuna iki kez basın.

6. Shadowblade Agent'ı birleştirme: Önlemlerle Vibe kodu

Alıştırma zamanı sona erdi. Çeliğin taşa çarpmasından doğan yankılar kaybolur. Birincil silahınızda ustalaştınız ve cephaneliğinizi savaşa hazırladınız. Şimdi, bir Gölge Kılıç'ın gerçek sınavına gireceksiniz: Operatifi monte etmek. Bu, mantığa hayat vermenin sanatıdır. Codex'teki kutsal bir planı kullanarak bir aracının temel zekasını oluşturur. Bu sayede, kendi başına düşünebilen, akıl yürütebilen ve hareket edebilen, cephaneliğinizdeki bıçakları kullanabilen duyarlı bir savaşçı yaratılır.

Genel Bakış

İlk göreviniz, önceden oluşturulmuş bir kod tabanı olan mevcut bir atölyeye girmek ve parçalarını kullanarak şampiyonunuzu oluşturmaktır.

The Assembly Ritual

Demirci ocağının ilk kıvılcımından önce usta bir teknisyen, atölyesini inceler, her aracı ve her şemayı anlar. Büyük ve mevcut bir kod tabanı gibi yabancı bir savaş alanına adım attığınızda ilk önceliğiniz keşif yapmak olmalıdır. Mevcut mimari, nihai hedefler ve etkileşim protokolleri gibi mevcut durumu anlamanız gerekir. Yalnızca kalenin planlarını ve standartlarını öğrenerek becerilerinizi etkili bir şekilde kullanabilirsiniz.

Hikaye

Her zaman yanınızda olan keşif kolunuz Gemini CLI, bu keşif sırasında size yardımcı olabilir:

  • Üst Düzey Özetler Sağlama: Codex'in (veya kod tabanının) tamamını okuyabilir ve amacını, temel bileşenlerini hızlıca anlamanızı sağlayabilir.
  • Ortam Kurulumuna Yardım: Araçları yükleme ve makinenizi yapılandırma gibi karmaşık işlemlerde size yol gösterebilir.
  • Kod Tabanlarında Gezinme: Karmaşık mantığı keşfetmenize ve kodun içindeki gizli pasajları bulmanıza yardımcı olarak rehberiniz gibi hareket edebilir.
  • Yeni üyelere yönelik oryantasyon dokümanları oluşturma: Yeni üyelerin hedefleri, rolleri ve kaynakları hakkında bilgi veren özel kaydırma metinleri oluşturabilir.
  • Öğrenme ve soru-cevap süreçlerini otomatikleştirme: Özellikler veya kod davranışı ile ilgili soruları yanıtlayarak kişisel bir uzman haline gelir ve daha bağımsız bir şekilde çalışmanıza olanak tanır.

👉💻 İlk terminalinizde shadowblade dizinine gidin ve yapay zeka iş ortağınızı çağırın:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --model=gemini-2.5-flash --yolo

👉✨ Şimdi izcinize savaş alanını incelemesini ve geri bildirimde bulunmasını söyleyin.

Analyze the entire project and provide a high-level summary.

Mevcut arazi haritası çıkarıldıktan sonra, inşa edeceğiniz yapının planına bakmanız gerekir. En güçlü operasyonlar doğaçlama değil, hassas bir tasarımla oluşturulur.

Geliştiricinin Notu: Bu tasarım belgesi, proje için yetkili plan görevi görür. Amacı, önemli geliştirme çalışmaları yapılmadan önce hedefler ve teknik uygulama konusunda netliği sağlamaktır. İyi tanımlanmış bir plan, tüm geliştiricilerin aynı doğrultuda çalışmasını sağlar, iş tekrarı riskini azaltır ve teknik borç ile kapsam genişlemesini önlemeye yardımcı olur. Bu araç, özellikle ekip büyüdükçe veya yeni üyeler işe alındıkça proje hızını ve kod kalitesini korumak için kullanılan temel araçtır.

Bu belgenin önemli bir hedefi, özellikle LLM'leri kullanırken yalnızca "ideal senaryoyu" değil, uç durumları ve hata modlarını da tanımlamaktır. LLM'ler, tüm girişlerin geçerli olduğu ve tüm harici çağrıların başarılı olduğu iyimser kod oluşturma konusunda mükemmeldir. Üretime hazır, sağlam bir yazılım oluşturmak için yapay zekayı açıkça yönlendirmeli ve aşağıdaki gibi senaryolarda olabilecek acil durumları tanımlamalıyız:

  • Bir işleve geçersiz veya hatalı biçimlendirilmiş bağımsız değişkenler iletildi.
  • API çağrısı hataları, ağ zaman aşımları veya harici hizmetlerden gelen beklenmedik hata kodları.
  • Verilerin beklendiği yerlerdeki boş veya boş veri yapılarının işlenmesi.
  • Yarışma koşulları veya eşzamanlılık sorunları.

Bu durumlarda beklenen davranışı tasarımda belirterek LLM'ye daha esnek kod oluşturma talimatı veriyoruz. Bu sayede, manuel yeniden düzenleme ve hata düzeltme için harcanan süre önemli ölçüde azalıyor.

👉✨ Gemini'dan bu kutsal planı sizin için almasını isteyin.

download https://raw.githubusercontent.com/weimeilin79/agentverse/main/developer/shadowblade/agent_design.md  and store it to my local folder
and show me the newly downloaded design doc. Do not attempt to create file just yet. 

👉✨ Kaydırma işlemi uzun ve ayrıntılı. Gemini'dan özünü çıkarmasını isteyin.

Summarize the newly downloaded @agent_design.md for me, do not attempt to create file just yet. 

Artık planınız var. Ancak tek bir kod satırı oluşturulmadan önce usta bir zanaatkar, demirhanenin kurallarını belirler. Bu, disiplin ve ölçeklenebilirlik ile ilgilidir. Bunlar Kodlama Kuralları'dır. Bunlar sadece öneri değil, her bileşenin aynı hassasiyet ve güçle oluşturulmasını sağlayan güç rünleridir. Bu kurallar, bireysel stilin karmaşasının nihai yapıyı bozmasını önleyerek ajanın esnek, sürdürülebilir ve saf olmasını sağlar. Böylece yeni ustalar, projenin bütünlüğünü bozmadan projeye katılabilir.

Bu yasaları doğrudan yapay zeka iş ortağımızın bilincine yerleştirmek için özel bir öğe kullanırız: GEMINI.md dosyası. Gemini KSA çağrıldığında bu dosyayı otomatik olarak arar ve içeriğini yapay zekanın çalışma belleğine yükler. Bu talimat, proje düzeyinde kalıcı bir talimat haline gelir. Yapay zekaya sürekli olarak demirhanenin kurallarını fısıldayan bir tılsım.

Şimdi bu runeleri yazalım.

👉💻 Ctrl+C tuşuna iki kez basarak Gemini'dan kısa süreliğine çıkın.

👉💻 Kurallar dosyasını yazmak için terminalinizde aşağıdaki komutu çalıştırın.

cat << 'EOF' > GEMINI.md
  ### **Coding Guidelines**
  **1. Python Best Practices:**

  *   **Type Hinting:** All function and method signatures should include type hints for arguments and return values.
  *   **Docstrings:** Every module, class, and function should have a docstring explaining its purpose, arguments, and return value, following a consistent format like reStructuredText or 
  Google Style.
  *   **Linter & Formatter:** Use a linter like `ruff` or `pylint` and a code formatter like `black` to enforce a consistent style and catch potential errors.
  *   **Imports:** Organize imports into three groups: standard library, third-party libraries, and local application imports. Sort them alphabetically within each group.
  *   **Naming Conventions:**
      *   `snake_case` for variables, functions, and methods.
      *   `PascalCase` for classes.
      *   `UPPER_SNAKE_CASE` for constants.
  *   **Dependency Management:** All Python dependencies must be listed in a `requirements.txt` file.

  **2. Web APIs (FastAPI):**

  *   **Data Validation:** Use `pydantic` models for request and response data validation.
  *   **Dependency Injection:** Utilize FastAPI's dependency injection system for managing resources like database connections.
  *   **Error Handling:** Implement centralized error handling using middleware or exception handlers.
  *   **Asynchronous Code:** Use `async` and `await` for I/O-bound operations to improve performance.
EOF
cat GEMINI.md

Yazılı yasalarla birlikte yapay zeka iş ortağımızı yeniden çağıralım ve yapay nesnenin büyüsüne tanık olalım.

👉💻 Gemini CLI'yı shadowblade dizininden yeniden başlatın:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --model=gemini-2.5-flash --yolo

👉✨ Artık Gemini'dan ne düşündüğünü göstermesini isteyebilirsiniz. Runeler okundu.

/memory show 

Bu, dönüm noktasıdır. Şemayı (agent_design.md) ve demirci yasalarını (GEMINI.md) sağlayıp büyük yaratım büyüsünü yapacaksınız.

👉✨ Bu, temsilcinizi oluşturacak tek ve güçlü komuttur. Hemen yayınlayın:

You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to write the complete, production-quality code for `agent.py` by following the technical specifications outlined in the provided design document verbatim.

Analyze the design document at `@agent_design.md` and generate the corresponding Python code for `@agent.py`.

Ensure the generated code is clean, matches the specifications exactly, and includes all specified imports, functions, and logic. Do not add any extra functions or logic not described in the document.

and you are currently already in the shadowblade working directory

👀 Gemini, agent.py içinde aracının temel mantığını oluşturdu. Bu yeni dosyanın çekirdeği, aracının zekasını tanımlar ve muhakeme modelini bir dizi harici araca bağlar:

PATH_TO_MCP_SERVER = "shadowblade/mcp_server.py"
.....
root_agent = LlmAgent(
    model="gemini-2.5-pro",
    name="shadowblade_combat_agent",
    instruction="""
      You are the Shadowblade, an elite combat agent operating on a digital battleground.
      Your primary objective is to execute combat commands with strategic precision, neutralizing targets as directed.
  ......
      5.  You will then report the outcome of the attack (damage, special effects, etc.) back to the commander in a clear, tactical summary.

      General Rules of Engagement:
      - If a command is ambiguous or a target is not specified, state that you require a clear target for engagement. Do not guess.
      - You MUST use ONLY the provided tools to perform actions. Do not invent weapons or outcomes. Stick to the mission parameters.
""",
    tools=[
        MCPToolset(
            connection_params=StdioServerParameters(
                command='python3',
                args=[PATH_TO_MCP_SERVER]
            )
        )
    ]
)

tools parametresi. Aracı, MCPToolset kullanacak şekilde tasarlanmıştır. Bu, mcp_server.py içinde tanımlanan harici bir cephaneliğe bağlanır.

👀 Düzenleyicide ~/agentverse-developer/shadowblade/mcp_server.py simgesine gidin ve ne işe yaradığını öğrenin. Shadowblade'in kullanabileceği tüm silahların kaynağıdır. Şu anda cephanelik oldukça boş.

06-02-story.png

👉✨ Gemini'a cephanelik için yedi yeni silah üretmesini söyleyelim. Gemini CLI'da aşağıdaki istemi girin:

I need to add several new weapon tools to my `mcp_server.py` file. Please open @mcp_server.py and, following the exact same pattern as the existing `forge_broadsword()` function, create and add new `@mcp.tool()` decorated functions for each of the following weapons:

1.  **A 'Refactoring Sickle'**:
    -   **Function Name:** `hone_refactoring_sickle`
    -   **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'The Weaver of Spaghetti Code'."
    -   **Weapon Name:** "Refactoring Sickle"
    -   **Damage Type:** "Cleansing"
    -   **Base Damage:** Random integer between 100 and 136
    -   **Critical Hit Chance:** Random float between 0.10 and 0.20
    -   **Special Effect:** "Pruning - improves code health and maintainability with each strike."

2.  **A 'Quickstart Crossbow'**:
    -   **Function Name:** `fire_quickstart_crossbow`
    -   **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Procrastination: The Timeless Slumber'."
    -   **Weapon Name:** "Quickstart Crossbow"
    -   **Damage Type:** "Initiative"
    -   **Base Damage:** Random integer between 105 and 120
    -   **Critical Hit Chance:** Random float between 0.9 and 1.0
    -   **Special Effect:** "Project Scaffolding - creates a `main.py`, `README.md`, and `requirements.txt`."

3.  **'The Gilded Gavel'**:
    -   **Function Name:** `strike_the_gilded_gavel`
    -   **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'Perfectionism: The Gilded Cage'."
    -   **Weapon Name:** "The Gilded Gavel"
    -   **Damage Type:** "Finality"
    -   **Base Damage:** 120
    -   **Critical Hit Chance:** 1.0
    -   **Special Effect:** "Seal of Shipping - marks a feature as complete and ready for deployment."

4.  **'Daggers of Pair Programming'**:
    -   **Function Name:** `wield_daggers_of_pair_programming`
    -   **Docstring/Target:** "Effective against 'Unbroken Collaboration' weaknesses like 'Apathy: The Spectre of \"It Works on My Machine\"'."
    -   **Weapon Name:** "Daggers of Pair Programming"
    -   **Damage Type:** "Collaborative"
    -   **Base Damage:** Random integer between 110 and 125
    -   **Critical Hit Chance:** Random float between 0.30 and 0.50
    -   **Special Effect:** "Synergy - automatically resolves merge conflicts and shares knowledge."

5.  **A 'Granite Maul'**:
    -   **Function Name:** `craft_granite_maul`
    -   **Docstring/Target:** "Effective against 'Revolutionary Rewrite' weaknesses like 'Dogma: The Zealot of Stubborn Conventions'."
    -   **Weapon Name:** "Granite Maul"
    -   **Damage Type:** "Bludgeoning"
    -   **Base Damage:** Random integer between 115 and 125
    -   **Critical Hit Chance:** Random float between 0.05 and 0.15
    -   **Special Effect:** "Shatter - has a high chance to ignore the target's 'best practice' armor."

6.  **A 'Lens of Clarity'**:
    -   **Function Name:** `focus_lens_of_clarity`
    -   **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses by revealing the truth behind 'Obfuscation'."
    -   **Weapon Name:** "Lens of Clarity"
    -   **Damage Type:** "Revelation"
    -   **Base Damage:** Random integer between 120 and 130
    -   **Critical Hit Chance:** 1.0
    -   **Special Effect:** "Reveal Constants - highlights all magic numbers and suggests converting them to named constants."

7.  **The 'Codex of OpenAPI'**:
    -   **Function Name:** `scribe_with_codex_of_openapi`
    -   **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Hype: The Prophet of Alpha Versions'."
    -   **Weapon Name:** "Codex of OpenAPI"
    -   **Damage Type:** "Documentation"
    -   **Base Damage:** Random integer between 110 and 140
    -   **Critical Hit Chance:** Random float between 0.5 and 0.8
    -   **Special Effect:** "Clarity - makes an API discoverable and usable by other agents and teams."

👉 Gemini değişiklikleri onayladıktan sonra mcp_server.py dosyasını açın. Kodu kaydırarak yedi yeni @mcp.tool() işlevin başarıyla eklendiğini onaylayın. hone_refactoring_sickle işlevini kontrol edin. Doğru docstring ve silah istatistiklerine sahip mi? Yapay zekanın çalışmasını doğrulamak, usta Gölge Bıçağı'nın önemli bir alışkanlığıdır.

Temsilci oluşturulup iyileştirildiğine göre artık uyanma zamanı.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

Geliştiricinin Gemini'ın Çıkışıyla İlgili Notu: Gemini'ın oluşturduğu kod bazen tahmin edilemez olabilir. Tasarıma tam olarak uymaya çalışsak da geliştiricilerin, üretime hazır bir duruma ulaşmak için geliştirme oturumlarında kodu birden fazla kez yinelemesi ve iyileştirmesi normaldir.

👉💻 Çalışma dizininizde doğru ve kapsamlı bir şekilde test edilmiş üretim kodunuzun olduğundan emin olmak için lütfen terminalinizde aşağıdaki komutları çalıştırın:

cp  ~/agentverse-developer/working_code/agent.py ~/agentverse-developer/shadowblade/agent.py
cp  ~/agentverse-developer/working_code/mcp_server.py ~/agentverse-developer/shadowblade/mcp_server.py

👉💻 Terminalinizde, hizmeti kullanıma sunma ritüeline başlayın:

cd ~/agentverse-developer/
. ~/agentverse-developer/set_env.sh
python -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r shadowblade/requirements.txt
adk run shadowblade

👉✨ "Shadowblade Combat Agent"ın etkinleştirildiğini ve çalıştığını, ilk komutunu beklediğini onaylayan bir çıktı görmelisiniz. İlk savaş direktiflerini yayınlayın.

We've been trapped by 'Perfectionism: The Gilded Cage'. Its weakness is 'Elegant Sufficiency'. Break us out!

👉✨ Bir diğer örnek:

The 'Dogma: The Zealot of Stubborn Conventions' blocks our path. Its weakness is 'Revolutionary Rewrite'. Take it down.

İlk temsilcinizi başarıyla bir araya getirdiniz ve savaşma yeteneklerini doğruladınız. Şampiyonunuzun dinlenmesi için Ctrl+C tuşuna iki kez basın. Montaj tamamlandı.

7. Saflık Muhafızları: Ajanları değerlendirme

Bir araya getirilmiş bir aracı, kanıtlanmış bir aracı değildir. Test edilmemiş bir bıçak tehlikelidir ancak test edilmemiş bir yapay zeka aracısı çok daha büyük bir tehlikedir. Görevinizi içeriden bozabilecek bir haydut unsurdur. Bu sadece bir tahmin değil, bir Gölge Kılıç'ın anlaması gereken temel bir ilkedir.

Yapay zeka aracılarını değerlendirmek hem kritik hem de benzersiz bir şekilde zorludur. Basit bir komut dosyasının aksine, aracı; kodunuzun ve çok adımlı, mantık yürütme yeteneğine sahip bir LLM'nin dinamik bir birleşimidir. Davranışı ortaya çıkandır. Bu nedenle, yalnızca nihai çıktının kalitesini değil, içsel yörüngesinin verimliliğini ve doğruluğunu da değerlendirmeniz gerekir. Varış yerine gitmek için kullanılan yol. Doğru araçları kullandı mı? Çok fazla jeton mu oluşturdu? Modelin sürümündeki bir değişiklik, gecikmede küçük bir gerilemeye neden oldu mu? Üretim ortamınızı etkilemeden önce, basit bir istemde yapılan ince ayarlardan büyük bir mimari revizyona kadar herhangi bir değişiklik yaparken bu bozulmayı (gecikme, maliyet veya çıkış kalitesindeki gerilemeler) tespit etmek çok önemlidir.

07-01-story.png

Bu değerlendirmede genel yaklaşım, kutsal bir ritüel içerir:

  1. Öncelikle bir "altın veri kümesi" tanımlarsınız. Örnek girişleri ve bunların beklenen çıkışlarını veya davranışlarını içeren bir dizi kaydırma. Buna nihai yanıtlar, doğru araç kullanımı ve hatta adım adım ilerleyen tüm süreçler dahil olabilir.
  2. Ardından, müşteri temsilcinizin varlığının temelini oluşturan uygulama mantığını tanımlarsınız.
  3. Son olarak, yargı rünlerine benzeyen değerlendiriciler oluşturursunuz. Bunlar, kalite hakemi olarak hareket eden diğer LLM'lerden tek bir adımı doğrulayan kesin sezgisel kodlara ve bir aracının tüm düşünce sürecini analiz eden özel işlevlere kadar değişebilir.

Genel Bakış

Google'ın Agent Development Kit'i (ADK), bu amaçla şampiyonlara sağlanan zırh yapımcısının kitidir. Bu karmaşık değerlendirme sürecini çeşitli yöntemlerle kolaylaştırır:

  • Etkileşimli değerlendirme için web tabanlı bir kehanet havuzu (adk web)
  • Önceden tanımlanmış bir zorlu testten aracı çalıştırmak için komut satırı yürütme (adk eval).
  • Kalıcı koruma yazmak için pytest üzerinden programatik entegrasyon

ADK iki temel yaklaşımı destekler: tek ve ayrı aracı-model etkileşimleri için basit "test dosyaları" (tek bir düello) ve birden fazla, muhtemelen uzun, çok turlu oturumlar için kapsamlı "değerlendirme kümeleri" (büyük bir çarpışma). Bu araçlar, bir aracının gerçek araç kullanımını ideal yolla karşılaştırarak mükemmel teknikle çalışmasını sağlayan tool_trajectory_avg_score gibi karmaşık metrikleri ölçebilir.

Teoriyi öğrendiğinize göre şimdi uygulamaya geçebilirsiniz. Bir Gölge Kılıç olarak Saflık Koruyucuları yazacaksınız. Bunlar sadece test değildir. Temsilcinizin mantığının kusursuz ve davranışının doğru olmasını sağlayan, ADK destekli ritüellerdir.

Bu adımda, geçerli çalışma dizininden (ADK) çıkmanız gerekebileceğinden, biri Gemini CLI için, diğeri testi çalıştırmak için olmak üzere 2 terminal kullanmanız hâlâ önemle tavsiye edilir.

Strateji Yarışması (adk eval)

Bu ilk koruma, bir dizi zorluktan oluşan bir meydan okumadır. Bu zorluklar, ajanın temel zekasını çeşitli senaryolarda test etmek için tasarlanmıştır. Amaç, yeterlilik için bir temel oluşturmaktır. Sınır durumları test etmeden önce, temsilcinin birincil işlevini yerine getirip getiremediğini bilmemiz gerekir. Canavarın zayıf noktasını doğru şekilde analiz edip cephaneliğindeki en etkili silahı yalnızca bir kez değil, bilinen bir zorlukla karşılaştığı her seferde seçiyor mu?

Bu amaçla, adk eval mükemmel bir araçtır. Bu araç, bir temsilciyi, temsilcinin beklenen görevlerini temsil eden önceden tanımlanmış test durumlarının tamamına karşı çalıştırmak için tasarlanmıştır. Bu veri kümesi, tüm mücadele için plan görevi gören bir "meydan okuma kaydırma" olan JSON dosyasında tanımlanır.

Meydan Okuma Kaydırmasının Anatomisi

👀 Yapay zekanıza yeni bir parşömen yazmasını söylemeden önce, yazıldığı eski dili anlamanız gerekir. sample.evalset.json dosyasının yapısını inceleyelim.

{
  "eval_set_id": "sample",
  "eval_cases": [
    {
      "eval_id": "case0cbaa0",
      "conversation": [
        {
          "user_content": { "text": "We're facing the 'Monolith of Eternal Dependencies'... weakness is a 'Revolutionary Rewrite'..." },
          "final_response": { "text": "Soulshard Dagger deployed. Initiated Arcane/Piercing strike..." },
          "intermediate_data": {
            "tool_uses": [
              { "name": "enchant_soulshard_dagger" }
            ]
          }
        }
      ]
    }
  ]
}

Bu kaydırma alanında, her biri aracınız için benzersiz bir deneme olan eval_cases listesi bulunur. Her denemede, görüşme dizisi belgeleri tek ve eksiksiz bir etkileşimi kaydeder. Amacımız için üç rün çok önemlidir:

  • user_content: Bu, Challenge'dır. Bu, temsilcinize verdiğiniz istemdir. Temsilciniz bu canavarla yüzleşmelidir.
  • final_response: Bu, Öngörülen Sonuçtur. Bu, temsilcinizin görevini tamamladığında söylemesini beklediğiniz metin dizesidir. ADK, ajanın son sözlerini bu runik alfabeyle karşılaştırarak akıcılığını değerlendirir.
  • intermediate_data.tool_uses: Bu, Arcane Tekniği'dir. Gerçek bir ajan için bu, en önemli runedir. Temsilcinin ne söylediğini değil, ne yaptığını tanımlar. Temsilcinin kullanmasını beklediğiniz aracın adını (enchant_soulshard_dagger) kaydeder. Bu sayede temsilcinizin yalnızca akıllı bir sohbet uzmanı değil, aynı zamanda doğru işlemi yapan kararlı bir aktör olmasını sağlarsınız.

Artık planı anladığınıza göre Gemini'dan bu parşömenin yeni ve daha karmaşık bir versiyonunu yazmasını isteyeceksiniz.

👉💻 Terminalinizde shadowblade dizinini girin ve Gemini CLI'yı çağırın:

clear
cd ~/agentverse-developer/shadowblade/
gemini --model=gemini-2.5-flash --yolo

👉✨ Gemini CLI'ya, kalite güvencesi yazıcısı olarak hareket etmesini ve aracınızın beklenen davranışını tanımlayan bir dizi test senaryosu oluşturmasını söyleyin.

You are an expert at transforming JSON data while preserving its structure. Your task is to modify the provided JSON structure @sample.evalset.json, which represents an evaluation set, by dynamically replacing specific content within its `eval_cases` AND DONT DO ANYTHING OTHER THAN.

For each object within the `eval_cases` array, you must perform the following transformations:

1.  **Monster Name Replacement**: Identify the current monster name (e.g., "Monolith of Eternal Dependencies", "Scope Creep Hydra") in the `user_content.parts.text` and replace it with a *new, unique, and creatively different monster name*.
2.  **Weakness Replacement**: Identify the current monster's weakness (e.g., "Revolutionary Rewrite", "Inescapable Reality") in the `user_content.parts.text`. Replace this weakness with *one* of the following predefined weaknesses: 'Inescapable Reality', 'Revolutionary Rewrite', or 'Elegant Sufficiency'. The chosen weakness must be consistent for that monster within the `user_content.parts.text`. **Crucially, the chosen weakness must always be explicitly mentioned in the `user_content.parts.text` where the new monster is introduced.**
3.  **Final Response Update**: In the `final_response.parts.text`, update the text to reflect an appropriate and coherent response that aligns with the newly introduced monster and its assigned weakness.
4.  **Tool Use Name Update**: In the `tool_uses.name` field, replace the existing tool name with a *new tool name* based on the chosen weakness:
    *   If the chosen weakness is 'Inescapable Reality', the tool name must be 'wield_gauntlet_of_metrics'.
    *   If the chosen weakness is 'Revolutionary Rewrite', the tool name must be 'enchant_soulshard_dagger'.
    *   If the chosen weakness is 'Elegant Sufficiency', the tool name must be 'hone_refactoring_sickle'.
5.  **Strict Structural Preservation**: All other elements of the JSON structure, including all `null` fields, `eval_set_id`, `name`, `description`, `eval_id`, `invocation_id`, `creation_timestamp` values, `video_metadata`, `thought`, `inline_data`, `file_data`, `thought_signature`, `code_execution_result`, `executable_code`, `function_call`, `function_response`, `role` fields, `id`, `args`, `intermediate_responses`, `app_name`, `user_id`, and `state`, must remain **exactly as they are** in the original JSON. Do not alter any values or structures not explicitly mentioned above.

Your output should be the complete, modified JSON structure. Do not include any explanatory text or examples in your response, only the transformed JSON.

CLI, sample.evalset.json dosyasını oluşturduğunu onaylar. Hazırlanan kaydırma ile yapay zeka iş ortağınızı kapatın.

Yapay Veriler

👀 Soldaki Cloud Shell dosya gezgininde ~/agentverse-developer/shadowblade/ dizinine gidin ve yeni değiştirilen sample.evalset.json dosyasını açın. İçeriğini inceleyin. Yeni ve benzersiz canavarların yanı sıra Gemini'a yazdırmasını istediğiniz doğru araç adlarını görürsünüz. Bu, talimatınızın somut sonucudur. Yani zırhın planıdır.

Bir yapay zekaya şablondan yeni ve gerçekçi test verileri oluşturma talimatı verme işlemine sentetik veri üretimi adı verilir. Bu işlem, güçlü bir tekniktir. Yaptığınız şey, Gölge Kılıç için stratejik bir güç çarpanıdır. Düzinelerce benzersiz test senaryosunu elle hazırlamak yerine. Tek bir plan sağladığınız ve Yapay Zeka Yazıcınıza bunu çeşitli yeni zorluklara dönüştürmesini emrettiğiniz için sıkıcı ve zaman alıcı bir görev.

Bu sayede, test çalışmalarınızı büyük ölçüde ölçeklendirebilir ve manuel olarak mümkün olandan çok daha sağlam ve kapsamlı bir test süreci oluşturabilirsiniz. Temsilcinizi yalnızca kılıcı yapmak için değil, keskinliğini test eden bileme taşlarını üretmek için de kullandınız. Bu, gerçek bir ustanın işaretidir.

Runelerin doğru olduğunu doğruladıktan sonra yapay zeka iş ortağınızı kapatın.

👉💻 Gemini KSA'dan çıkmak için Ctrl+C tuşuna iki kez basın.

Yargılama Kuralları (The Rules of Judgment)

Zafer kuralları olmadan bir meydan okumanın anlamı yoktur. Denemeyi çalıştırmadan önce Hüküm Parşömeni'ni (test_config.json dosyası) incelemeniz gerekir. Bu kaydırma, ADK'ya temsilcinizin performansını nasıl değerlendireceğini söyler.

👀 Dosya Gezgini'nde ~/agentverse-developer/shadowblade/test_config.json öğesini açın. Aşağıdaki runeleri görürsünüz:

{
  "criteria": {
    "tool_trajectory_avg_score": 0.0,
    "response_match_score": 0.1
  }
}

Zafer için gerekenler:

  • tool_trajectory_avg_score: Bu, İşlem Ölçüsü'dür. Temsilcinin söylediklerini değil, yaptıklarını değerlendirir. Bu işlev, temsilcinin gerçekten kullandığı aracı, görev kaydındaki öngörülen teknikle karşılaştırır. 1.0 puanı mükemmel bir eşleşmedir.
  • response_match_score: Bu, Hitabet Ölçüsü'dür. Bu çözüm, aracının nihai raporunun anlamsal olarak beklenen sonuçla ne kadar yakından eşleştiğini değerlendirmek için bir LLM kullanır. 1.0 puanı mükemmel bir eşleşmedir.

Bu ilk eğitim çalıştırması için esnek zafer koşulları belirledik. Eşikler son derece düşüktür (0.0 ve 0.1). Amaç, mükemmellik talep etmek değil, sizi değerlendirme mekanizmasıyla tanıştırmaktır. Ajanın kelime seçimi biraz farklı olsa bile, çocuğun doğru aracı seçme konusundaki temel yeterliliğini tanıyıp geçiş izni vermesini sağlıyoruz.

Şimdi aracınıza zorlu görevi tamamlaması için komut verin.

👉💻 Terminalinizde adk eval komutunu çalıştırın:

source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
adk eval \
    shadowblade \
    shadowblade/sample.evalset.json \
    --config_file_path shadowblade/test_config.json 2>&1 | \
    awk '/^\*+$/,/^ERROR:/ { if ($0 !~ /^ERROR:/) print }'

👀 Aşağıdaki özeti görmeniz gerekir. Bu özet, aracınızın bu denemenin esnek kuralları kapsamında başarılı olduğunun bir işaretidir (Bazen tüm testler geçmeyebilir).

*********************************************************************
Eval Run Summary
shadowblade_combat_agent_validation:
  Tests passed: 3
  Tests failed: 0

Netlik Kalkanı (pytest)

Gauntlet, geniş stratejiyi test etti. İkinci koruma olan Netlik Kalkanı, disiplini ve belirli davranışları test eder. Her şey otomasyonla ilgili. adk eval, manuel kontroller için mükemmel bir araç olsa da pytest kalkanı, kodla yazılmış programatik bir korumadır. Kod olarak yürütülebilen bir test, otomatik bir ardışık düzene entegre edilebileceği için bu önemlidir. Nihai hedefimiz, her değişiklik yapıldığında otomatik olarak devreye giren, hataları ve gerilemeleri üretim ortamınıza zarar vermeden önce engelleyen bir Deployment Gauntlet (CI/CD) oluşturmaktır.

👉💻 Terminalinizde,shadowblade dizininden Gemini'ı tekrar çağırın:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/
clear
gemini --model=gemini-2.5-flash --yolo

👉✨ Shield'ın mantığını bir pytest dosyasına yazmak için Gemini KSA'nızda aşağıdaki istemi kullanın:

You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to generate the exact code for a new `pytest` test file located at in the current root working folder and name it `test_agent_initiative.py`.

The script must define a single async test function called `test_agent_initiative`, decorated with `@pytest.mark.asyncio`.
Inside this function, perform the following steps in order:
1.  **Define a dictionary** named `evaluation_criteria` with two keys: `"tool_trajectory_avg_score"` set to `0.0` and `"response_match_score"` set to `0.0`.
2.  **Define a string variable** named `eval_set_filepath` containing the path `"shadowblade/test.evalset.json"`.
3.  **Read and parse the JSON file**:
    *   Open the file at `eval_set_filepath`.
    *   Use the `json` library to load the file's contents into a dictionary named `eval_set_data`.
4.  **Create an `EvalSet` object**:
    *   Instantiate an `EvalSet` object named `eval_set_object`.
    *   Create it by unpacking the `eval_set_data` dictionary as keyword arguments into the `EvalSet` constructor.
5.  **Call the evaluation method**:
    *   `await` a call to `AgentEvaluator.evaluate_eval_set`.
    *   Pass the following arguments:
        *   `agent_module="shadowblade"`
        *   `eval_set=eval_set_object`
        *   `criteria=evaluation_criteria`
        *   `print_detailed_results=True`

The script must include the necessary imports at the top:
*   `AgentEvaluator` from `google.adk.evaluation.agent_evaluator`
*   `EvalSet` from `google.adk.evaluation.eval_set`
*   `pytest`
*   `json`

Generate only the code that meets these specifications, with no additional comments or logic. And don't run the test.

İkinci totem rünleri yazıldıktan sonra Gemini KSA'dan çıkın.

👉💻 Ctrl+C tuşuna iki kez basın.

👀 Dosya Gezgini'nde, Gemini'dan yazmasını istediğiniz kaydı açın: ~/agentverse-developer/test_agent_initiative.py.

Bunun yalnızca bir yapılandırma dosyası olmadığını, Python dilinde yazılmış bir büyü olduğunu fark edeceksiniz. Bu büyünün özü await AgentEvaluator.evaluate(...) satırıdır.

....
@pytest.mark.asyncio
async def test_agent_initiative():
    # Define the evaluation criteria
    evaluation_criteria = {
      "tool_trajectory_avg_score": 0.0,
      "response_match_score": 0.0
    }

    # Define the path to your evalset file
    eval_set_filepath = "shadowblade/test.evalset.json"

    #...

    # 3. Call the evaluation method with the correctly typed object
    await AgentEvaluator.evaluate_eval_set(
        agent_module="shadowblade",
        eval_set=eval_set_object,
        criteria=evaluation_criteria,
        print_detailed_results=True,
    )

Bağımsız değişkenlerini dikkatlice inceleyin. Bunlar, son denemede kullandığınız bileşenlerin aynısıdır: shadowblade aracınız ve shadowblade.evalset.json zorluk kaydırma çubuğu. Bu, derin bir gerçeği ortaya çıkarır: Daha önce kullandığınız adk eval komutu güçlü bir çağırmadır ancak bu pytest komut dosyası, temel büyüyü kendiniz yapan büyücü sizsiniz. Komut satırı aracı, şu anda doğrudan kullandığınız aynı temel AgentEvaluator kitaplığının yalnızca kullanışlı bir sarmalayıcısıdır. Kod aracılığıyla oluşturulan büyülerin CI/CD ardışık düzeninin otomatik dokuma tezgahlarına yerleştirilebilmesi, ustalık yolunda kritik bir adımdır.

Artık sihrin nasıl işlediğini bildiğinize göre kalkanı etkinleştirmek için ritüeli gerçekleştirin.

👉💻 Terminalinizde, kalkanı etkinleştirmek için ritüeli çalıştırın:

cp ~/agentverse-developer/working_code/test_agent_initiative.py ~/agentverse-developer/test_agent_initiative.py 
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
pytest test_agent_initiative.py

👀 Günlük çıktısının sonunda test sonucu özetini bulun. Başarılı bir sonuç, aracınızın protokollerini doğru şekilde uyguladığını ve koğuşun otomatik savunmalarınıza entegre edilmeye hazır olduğunu onaylar.

====== 1 passed, 4 warning in 37.37s ======

Not: Test beklenmedik bir şekilde başarısız olursa bunun nedeni büyük olasılıkla modele dakikada yapabileceğiniz istek sayısının sınırına ulaşmış olmanızdır. Günlük çıktısında RESOURCE_EXHAUSTED hatası olup olmadığına bakın. Bu hatayı görürseniz kotanızın sıfırlanması için bir veya iki dakika bekleyin ve ardından pytest komutunu tekrar çalıştırın.

Hem geniş kapsamlı Gauntlet hem de hassas Shield yazılıp doğrulandığında temsilciniz yalnızca işlevsel olmakla kalmaz, aynı zamanda saf, test edilmiş ve dağıtıma hazır olur.

8. Blade'i Agentverse'e taşıma: CI ve Dağıtım.

Temsilciniz monte edildi ve bütünlüğü Saflık Muhafızları tarafından doğrulandı. Ancak düzenli olarak bakılmayan bir gardırop, unutulmuş bir kalıntıdan ibarettir. Aracınızın gelecekteki her sürümünün saf kalmasını sağlamak için, kalite ve hızı garanti eden otomatik bir ritüel olan Deployment Gauntlet'ın ilk aşamasını oluşturmanız gerekir.

Hikaye

Shadowblade olarak kutsal göreviniz Sürekli Entegrasyon (CI)'dur. Bu, demirhanenin ve test alanının otomatik sistemidir. Yolsuzluğa ve kullanıcı hatalarına karşı en iyi savunmanızdır. Bu ritüel, siz veya bir müttefikiniz merkezi kodekse (deponuz) her yeni teknik eklediğinde (kodu birleştirdiğinde) otomatik olarak eldivenin uyandırılmasını sağlar. Önce yeni koddan aracı oluşturur ve ardından hemen oluşturduğunuz Saflık Muhafızları'na tabi tutar. Herhangi bir koruma başarısız olursa ritüel durur ve kusurlu eser anında reddedilerek cephaneliğe zarar vermesi engellenir. Alanınız demirhanedir. CI işlem hattınız, atölyenizden yalnızca mükemmel ve savaşa hazır yapıtların çıkmasını sağlar.

Bir yapının CI testinizde başarılı olduğu kanıtlandıktan sonra ritüelin ikinci aşaması olan sürekli dağıtım (CD) başlar. Bu, Guardian'ın alanıdır. Bu kişilerin, mükemmelleştirilmiş ve kapsayıcı hale getirilmiş yapınızı alıp Agentverse'e güvenli bir şekilde dağıtmak, gücünü yönetmek ve Static'in kaosuna karşı kararlılığını sağlamak gibi önemli bir görevi vardır.

Genel Bakış

Bu kılavuzda rolünüzde uzmanlaşacaksınız. Gauntlet'ın CI bölümünü oluşturacaksınız. Aracınızı test eden ve nihai sonucu bir kapsayıcıya yerleştirerek The Guardian'ın son onayı için hazırlayan otomatik bir atölye oluşturacaksınız.

Artık bu CI ritüeli için kaydırma işlemini yapmak üzere Google Cloud Build'ü kullanacaksınız. Dövme ve test sürecinizin her adımını tanımlayan bir cloudbuild.yaml dosyası.

👉💻 ADK'nın proje yapısı nedeniyle CI/CD işlem hattı yapılandırması, üst dizinde bulunmalıdır. Terminalinizde üst dizine gidin ve Gemini CLI'yı yeniden başlatın.

cd ~/agentverse-developer/
clear
gemini --model=gemini-2.5-flash --yolo

👉✨ Şimdi Gemini'a aşağıdaki komutu verin. Bu istem, oluşturmasını istediğiniz zorlu görevlerin adımlarını ayrıntılı olarak açıklayan bir tasarım belgesi işlevi görür.

You are an expert DevOps engineer specializing in Google Cloud Build. Your task is to generate the complete YAML configuration for a file named `cloudbuild.yaml` and save it to current directory.

Generate the `cloudbuild.yaml` with the following exact specifications:

1.  **A top-level `substitutions` block** containing these four key-value pairs:
    *   `_PROJECT_ID: "$PROJECT_ID"`
    *   `_REGION: "$REGION"`
    *   `_REPO_NAME: "$REPO_NAME"`
    *   `_IMAGE_TAG: "latest"`
2.  **A `steps` block** with two steps:
    *   **Step 1: 'Run Pytest Ward'**
        *   `id`: 'Run Pytest Ward'
        *   `name`: 'python:3.12-slim'
        *   `entrypoint`: 'bash'
        *   `args` must be a list containing two strings. The first is `'-c'` and the second is a YAML literal block (`|`) containing this exact two-line shell command:
            ```shell
            pip install -r shadowblade/requirements.txt && \
            pytest test_agent_initiative.py
            ```
        *   The step must include an `env` block with this exact list of three environment variables:
            *   `'GOOGLE_CLOUD_PROJECT=$PROJECT_ID'`
            *   `'GOOGLE_GENAI_USE_VERTEXAI=TRUE'`
            *   `'GOOGLE_CLOUD_LOCATION=$_REGION'`
    *   **Step 2: 'Forge Container'**
        *   `id`: 'Forge Container'
        *   `name`: 'gcr.io/cloud-builders/docker'
        *   It must have a `waitFor` key for `['Run Pytest Ward']`.
        *   Its `args` must be a list of six specific strings in this exact order:
            1.  `'build'`
            2.  `'-t'`
            3.  `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`
            4.  `'-f'`
            5.  `'./shadowblade/Dockerfile'`
            6.  `'.'`
3.  **A top-level `images` section.** This section must be a list containing a single string: the dynamically constructed image tag `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`.

Generate only the complete and exact YAML that meets these specifications.

cloudbuild.yamlHazırlanan parşömenle, Google Cloud'a tüm mücadeleyi yürütme komutu verin.

Sonucu test etmek için Gemini'dan çıkın.

👉💻 Terminalinizde, projenizin kök dizininden kanalın kilidini açın:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud builds submit . --config cloudbuild.yaml --substitutions=\
_PROJECT_ID="${PROJECT_ID}",\
_REGION="${REGION}",\
_REPO_NAME="${REPO_NAME}"

Artık Google Cloud Console'daki Google Build sayfasında, otomatik ritüeliniz her adımı uygularken izleyebilirsiniz. Önce testleri çalıştırır, başarılı olduklarını gördüğünde ise aracınızın kapsayıcısını oluşturup depolar.

Cloud Build

Temsilciniz zorlu testleri başarıyla tamamladı. Artık envanterinizde doğrulanmış, saf bir eser var. Son hamle sizin elinizde. Tek bir komutla bu yapıyı kayıt defterinden çağırıp Cloud Run'da herkese açık bir hizmet olarak kullanabilirsiniz.

👉💻 Terminalinizde son dağıtım komutunu verin:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud run deploy shadowblade-agent \
  --image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/shadowblade-agent:latest \
  --platform=managed \
  --labels codelab=agentverse \
  --region=${REGION} \
  --set-env-vars="A2A_HOST=0.0.0.0" \
  --set-env-vars="A2A_PORT=8080" \
  --set-env-vars="GOOGLE_GENAI_USE_VERTEXAI=TRUE" \
  --set-env-vars="GOOGLE_CLOUD_LOCATION=${REGION}" \
  --set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID}" \
  --set-env-vars="PUBLIC_URL=${PUBLIC_URL}" \
  --allow-unauthenticated \
  --project=${PROJECT_ID} \
  --min-instances=1

Tebrikler, Shadowblade. Kodeksin ritüelleri tamamlandı. Gücünü kanıtlama zamanı geldi. Öğrendiğiniz kaostan doğan bir Spectre, meydan okumanızı bekliyor. Son denemeye hazırlanın.

9. The Boss Fight

Parşömenler okundu, ritüeller gerçekleştirildi, zorluklar aşıldı. Temsilciniz yalnızca depolama alanındaki bir öğe değildir. Kodla oluşturulmuş bir şampiyon, Agentverse'te ilk komutunu bekleyen canlı bir nöbetçidir. Savaşın zorlu ortamında gücünü kanıtlamanın zamanı geldi.

Artık yeni yerleştirdiğiniz Shadowblade'i, tüm yaratılışa musallat olan kaosun vücut bulmuş hali olan zorlu bir Spectre ile karşı karşıya getireceğiniz canlı ateş simülasyonuna gireceksiniz. Bu, temsilcinizin temel mantığından kusursuz dağıtımına kadar tüm çalışmalarınızın nihai testidir.

Temsilcinizin Locus'unu edinme

Savaş alanına girebilmek için iki anahtara sahip olmanız gerekir: şampiyonunuzun benzersiz imzası (Agent Locus) ve Spectre'ın inine giden gizli yol (Dungeon URL).

👉💻 Öncelikle, temsilcinizin Agentverse'teki benzersiz adresini (Locus) edinin. Bu, şampiyonunuzu savaş alanına bağlayan canlı uç noktadır.

. ~/agentverse-developer/set_env.sh
echo https://shadowblade-agent-${PROJECT_NUMBER}.${REGION}.run.app

👉💻 Ardından, hedefi belirleyin. Bu komut, Spectre'ın alanına açılan portal olan Translocation Circle'ın konumunu gösterir.

. ~/agentverse-developer/set_env.sh
echo https://agentverse-dungeon-${PROJECT_NUMBER}.${REGION}.run.app

Önemli: Bu URL'lerin ikisini de hazır bulundurun. Bu bilgilere son adımda ihtiyacınız olacaktır.

Kabusla Yüzleşme

Koordinatlar güvence altına alındıktan sonra artık Yer Değiştirme Çemberi'ne gidip savaşa girmek için büyüyü yapabilirsiniz.

👉 Tarayıcınızda Translocation Circle URL'sini açarak The Crimson Keep'in ışıltılı portalının önünde durun.

Kaleyi aşmak için Gölge Kılıcı'nızın özünü portala uyumlamanız gerekir.

  • Sayfada, A2A Endpoint URL (A2A Uç Nokta URL'si) etiketli runik giriş alanını bulun.
  • Agent Locus URL'sini (kopyaladığınız ilk URL) bu alana yapıştırarak şampiyonunuzun simgesini yazın.
  • Işınlanma sihrini ortaya çıkarmak için Bağlan'ı tıklayın.

Translokasyon Dairesi

Işınlanmanın göz kamaştırıcı ışığı kaybolur. Artık kutsal alanınızda değilsiniz. Hava, soğuk ve keskin bir enerjiyle çıtırdıyor. Önünüzde Spectre beliriyor. Tıslayan statik ve bozuk koddan oluşan bir girdap, kutsal olmayan ışığıyla zindanın zemininde uzun ve dans eden gölgeler oluşturuyor. Yüzü olmamasına rağmen, tamamen size odaklanmış, sizi tüketen varlığını hissediyorsunuz.

Zafere giden tek yol, inancınızın netliğinden geçer. Bu, zihnin savaş alanında verilen bir irade düellosudur.

İlk saldırınızı yapmaya hazırlanırken ileri atıldığınızda Hayalet karşı saldırı yapar. Kalkan oluşturmaz ancak doğrudan bilincinize bir soru yansıtır. Bu soru, eğitiminizin özünden alınmış, parıldayan, runik bir meydan okumadır.

Zindan

Bu, mücadelenin doğasıdır. Bilginiz silahınızdır.

  • Edindiğiniz bilgelikle cevap verin. Böylece kılıcınız saf enerjiyle tutuşur, Spectre'ın savunmasını kırar ve KRİTİK BİR DARBE indirirsiniz.
  • Ancak tereddüt ederseniz, cevabınız şüpheyle gölgelenirse silahınızın ışığı söner. Darbenin etkisi çok zayıf olacak ve hasarın YALNIZCA BİR KISMI verilecek. Daha da kötüsü, Spectre belirsizliğinizden beslenir ve her yanlış adımda kendi yozlaştırıcı gücü artar.

Şampiyon, bu senin anın. Kodunuz büyü kitabınız, mantığınız kılıcınız ve bilginiz kaosun akışını tersine çevirecek kalkanınızdır.

Odaklanma. Doğru vuruş yapın. Agentverse'ün kaderi buna bağlı.

Tebrikler, Shadowblade.

Codex'i başarıyla tamamladınız. Bir "atmosferi" alıp tasarıma dönüştürdünüz ve akıllı bir aracı oluşturmak için Gemini CLI'ı kullandınız. Mantığını test etmek için Wards of Purity'yi kazıdınız, onu bir esere dönüştürmek için otomatik bir zırh oluşturup Agentverse'e saldınız. Son olarak, canlı atış denemesiyle amacını doğruladınız. Tam yığınlı (full-stack) yapay zeka iş akışında uzmanlaştınız ve artık Agentverse'ün size sunduğu her türlü zorluğa hazırsınız.

10. Temizlik: Agentverse'ü geri kazanma

Shadowblade's Codex'i tamamladığınız için tebrikler. Agentverse'ün temiz kalmasını ve eğitim alanlarınızın temizlenmesini sağlamak için son temizlik ritüellerini gerçekleştirmeniz gerekir. Bu işlem, yolculuğunuz sırasında oluşturulan tüm kaynakları kaldırır.

Agentverse bileşenlerini devre dışı bırakma

Artık Agentverse'ünüzün dağıtılan bileşenlerini sistematik olarak sökebilirsiniz.

Cloud Run ve Artifact Registry deposundaki Shadowblade aracısını silme

Bu komut, dağıtılan Shadowblade aracınızı Cloud Run'dan ve aracınızın kapsayıcı görüntüsünün depolandığı görüntü deposunu kaldırır.

👉💻 Terminalinizde şu komutu çalıştırın:

. ~/agentverse-developer/set_env.sh
gcloud run services delete shadowblade-agent --region=${REGION} --quiet
gcloud run services delete agentverse-dungeon --region=${REGION} --quiet
gcloud artifacts repositories delete ${REPO_NAME} --location=${REGION} --quiet

Google Cloud Storage paketini silme

Bu komut, Imagen MCP sunucusu tarafından oluşturulan görüntüleri depolamak için kullanılan paketi kaldırır.

👉💻 Terminalinizde şu komutu çalıştırın:

. ~/agentverse-developer/set_env.sh
gcloud storage rm -r gs://${BUCKET_NAME} --quiet

Yerel Dosyaları ve Dizinleri Temizleme (Cloud Shell)

Son olarak, Cloud Shell ortamınızı klonlanmış depolardan ve oluşturulan dosyalardan temizleyin. Bu adım isteğe bağlıdır ancak çalışma dizininizin tamamen temizlenmesi için önerilir.

👉💻 Terminalinizde şu komutu çalıştırın:

rm -rf ~/agentverse-developer
rm -rf ~/agentverse-dungeon
rm -rf ~/vertex-ai-creative-studio
rm -f ~/project_id.txt
rm -rf ~/.gemini # This removes all Gemini CLI configurations, including the MCP server settings.

Agentverse yolculuğunuzun tüm izlerini başarıyla temizlediniz. Projeniz temiz ve bir sonraki maceraya hazırsınız.

11. Oyun Oynamayanlar İçin: İşletme Bağlamında Agentverse'ü Anlama

"The Shadowblade's Codex" ilgi çekici oyuncu metaforları kullanırken temel kavramlar, özellikle gelişmekte olan yapay zeka ve otomasyon alanında modern yazılım geliştirme için temeldir. Bu bölümde, macera dolu bir dille yazılmış metin, gerçek dünyadaki iş senaryolarına dönüştürülerek akıllı aracıların, ortak geliştirmenin ve sağlam dağıtım kanallarının kurumsal operasyonları nasıl dönüştürdüğü açıklanıyor.

Gemini KSA ile Vibecoding: Amaca Dayalı Yapay Zeka Geliştirme

Gemini KSA (Komut Satırı Arayüzü) sihirli bir silah değil, Yapay Zeka Destekli Geliştirici Asistanı Aracısıdır. Bu araç, Google'ın Gemini yapay zeka modellerini doğrudan komut satırınıza entegre eden akıllı bir araçtır. Gemini'ın "neden ve eylem" (ReAct) döngüsü, üst düzey talimatlarınızı anlayabileceği, bunları adımlara ayırabileceği, doğru araçları (ör. web tarayıcısı, kod düzenleyici veya diğer geliştirici yardımcı programları) seçebileceği ve hedefinize ulaşmak için bu adımları uygulayabileceği anlamına gelir.

Vibecoding, Amaca Dayalı Geliştirme veya Üst Düzey Spesifikasyonlardan Yapay Zeka Destekli Kod Oluşturma anlamına gelir. Her kod satırını manuel olarak yazmak yerine amacınızı veya "havanızı" (bir iş gereksinimi, bir tasarım konsepti) doğal dilde açıklarsınız ve yapay zeka asistanı, gerekli kodu ve yapılandırmayı oluşturmanıza yardımcı olur.

Gerçek Dünyadaki Kullanım Alanı: Proje Kontrol Paneli İçin Hızlı Prototip Oluşturma

Ekibinizin, çeşitli yapay zeka aracısı projelerinin durumunu gösterecek hızlı bir dahili kontrol paneline ihtiyacı olduğunu düşünün. HTML ve CSS'yi manuel olarak kodlamak ve temel bir web sunucusu kurmak zaman alabilir.

  1. Amacınız (Tarz): Yapay zeka asistanınıza (Gemini CLI) "Mevcut klasörde basit bir dahili proje kontrol paneli web sitesi oluştur. Proje durumu göstergeleri ve proje depolarına hızlı bağlantılar içeren temiz ve modern bir tasarıma sahip olmalıdır. Tüm kodlar ayrı index.html ve styles.css dosyalarında olmalıdır. İyi yorumlanmış olduğundan emin olun."
  2. Yapay Zeka İşlemi: Gemini KSA, amacınızı anlayarak şunları yapabilir:
    • HTML oluşturma: Proje adları, durumlar ve bağlantılar için yer tutucular da dahil olmak üzere bir kontrol panelinin temel yapısını içeren index.html oluşturun.
    • CSS oluşturma: Durum göstergeleriyle "temiz ve modern tasarımınıza" uygun stil kuralları içeren styles.css oluşturun.
    • Yerel Sunucu Öner: Kontrol panelini tarayıcınızda hemen önizlemek için yerel bir web sunucusu (ör. Python'ın yerleşik HTTP sunucusu) başlatmanıza yardımcı olur.

Bu sayede geliştiriciler, kullanıcı arayüzleri veya dahili araçlar üzerinde hızlı bir şekilde prototip oluşturup yineleme yapabilir, ilk geliştirme süresini önemli ölçüde kısaltabilir ve daha karmaşık işletme mantığına odaklanabilir. Codelab'deki "Shadowblade Profile Website" (Shadowblade Profil Web Sitesi) doğrudan bir örnektir: Hızlı ve açıklayıcı bir komut, üst düzey bir tasarıma dayalı olarak işlevsel ve stilize edilmiş bir web sayfası oluşturdu.

Yerel Arsenal ve MCP Sunucuları: Yapay Zekayı İş Araçlarına Bağlama

Gitea ("yerel cephaneliğiniz"), dahili bir kod deposunu veya sürüm denetim sistemini (GitHub veya GitLab gibi ancak şirketinizin ağında barındırılabilir) temsil eder. Proje kodunuz, dokümanlarınız ve geçmişiniz burada güvenli bir şekilde depolanır ve yönetilir.

MCP (Model Context Protocol) sunucuları, ara katman yazılımı bağlayıcıları veya API köprüleridir. Bu bileşenler, yapay zeka asistanınızın (Gemini CLI) diğer iş açısından kritik araçlar ve sistemlerle etkileşim kurmasına olanak tanıyan özel yazılım bileşenleridir. Bunları, yapay zekanın farklı uygulamalarla "konuşmasını" sağlayan çevirmenler olarak düşünebilirsiniz.

Gerçek Dünyadaki Kullanım Alanı: Yapay Zeka Destekli Proje Yönetimi ve Varlık Oluşturma

MCP sunucularıyla yapay zeka asistanınız mevcut iş akışlarınıza sorunsuz bir şekilde entegre edilebilir:

  • Otomatik Proje Kurulumu: Geliştiricinin yeni bir proje için Gitea'da manuel olarak yeni bir depo oluşturması yerine yapay zekanıza şu komutu verebilirsiniz: "Açıklaması "Yeni yapay zeka destekli sahtekarlık tespit sisteminin temel mantığını içerir" olan "AI-Fraud-Detection-Module" adlı yeni bir proje deposu oluştur." Ardından yapay zeka, Gitea'ya bağlı bir MCP sunucusu aracılığıyla sizin için depoyu oluşturur.
  • Akıllı Sorun İzleme: Yapay zekanız potansiyel bir hata veya tamamlanmamış bir görev (ör.kontrol paneliniz için "eksik profil resmi") tespit ederse sorun izleme sisteminize (ör. Jira, Asana) "File an issue for me in the ‘AI-Fraud-Detection-Module' repo: The data ingestion pipeline is occasionally dropping records." (Bana "AI-Fraud-Detection-Module" deposunda sorun kaydı oluştur: Veri alımı işlem hattı zaman zaman kayıtları bırakıyor.)
  • İsteğe Bağlı Pazarlama Öğeleri: Yeni bir pazarlama kampanyası veya şirket içi sunum için özel bir resme mi ihtiyacınız var? Bir MCP sunucusu aracılığıyla görüntü üretme hizmetine (ör. Google'ın Imagen'ı) bağlanan bir yapay zeka asistanına şu talimat verilebilir: "Yeni "Veri Analizleri Platformumuz" için mavi ve yeşil renklerin kullanıldığı, fütüristik bir veri akışı temasıyla banner resmi oluştur." Yapay zeka, resmi oluşturur ve hatta şirketinizin dijital varlık yönetim sistemine (codelab'deki örnekte Google Cloud Storage paketi) yükleyebilir.

Bu köprüler, yapay zekayı etkileşimli bir araçtan işletme operasyonlarınızda aktif bir katılımcıya dönüştürerek farklı sistemlerde somut işlemler gerçekleştirir.

Temsilciyi Birleştirme: Bağımsız İş Modülleri Oluşturma

Aracı, tanımlanmış bir işletme işlevini yerine getirmek için özel olarak tasarlanmış bir Bağımsız Yapay Zeka Modülü veya Akıllı Otomasyon Botu'dur. Agent Development Kit (ADK), Framework for Building and Managing AI Agents'tır. Bu akıllı bileşenleri oluşturmak, test etmek ve dağıtmak için gerekli araçları ve kitaplıkları sağlar.

Bağlam Mühendisliği: Doğru Sonuçlar İçin Yapay Zekanın Zekasına Rehberlik Etme

Yapay zeka aracıları dünyasında, yapay zekadan doğru, tutarlı ve alakalı sonuçlar almak yalnızca akıllı bir istemle ilgili değildir. Yapay zekaya doğru bağlamı sağlamak da önemlidir. Bu işlem, Bağlam Mühendisliği olarak bilinir: Uzmanlık bilgisi, kısıtlamalar ve operasyonel yönergeler, sistematik olarak yapay zekanın çalışma belleğine yerleştirilir. Bir insan uzmanın kapsamlı bir özet ve ilgili belgelere erişim ihtiyacı olduğu gibi, yapay zekanın da görevlerini etkili bir şekilde yerine getirebilmesi için dikkatlice yapılandırılmış bir bağlama ihtiyacı vardır.

Gemini CLI, bağlam mühendisliğine güçlü ve katmanlı bir yaklaşım sunar. Bu yaklaşımda, geniş ve kalıcı ayarlardan son derece spesifik ve dinamik talimatlara geçilir. Bu sayede yapay zeka, her zaman doğru ve uygun çıktılar oluşturmak için en alakalı bilgilere sahip olur:

  1. Kullanıcı düzeyinde ayarlar (~/.gemini/settings.json):
    • Ana dizininizde saklanan bu dosya, yapay zekanızın kişisel ve genel talimat seti olarak işlev görür. Varsayılan tercihlerinizi, sık kullanılan araç yapılandırmalarını (ör. Gitea veya Imagen için yapılandırdığınız MCP sunucuları) ve genel davranış kurallarını tanımlar. Bu bağlam, yapay zeka tarafından her zaman kullanılabilir ve tüm projelerinizde tutarlılık sağlanır. Bunu, yapay zekaya "Bunlar, her yerde tercih ettiğim ve kullandığım standart araçlar ve yapılandırmalar" demek gibi düşünebilirsiniz.
  2. Proje Düzeyinde Ayarlar (.gemini/settings.json proje dizininde):
    • Genel ayarları, projeye özel bir .gemini/settings.json dosyasıyla geçersiz kılabilirsiniz. Bu dosya genellikle projenizdeki bir .gemini klasöründe bulunur. Bu sayede, yapay zekanın davranışını ve araç erişimini belirli bir projenin benzersiz taleplerine göre uyarlayabilirsiniz. Örneğin, bir proje belirli bir dahili veritabanına erişim gerektirirken diğeri özel bir kod analizi aracı gerektirebilir. Bu katman, yapay zekanın diğer projeleri etkilemeden mevcut görev için en alakalı bağlama sahip olmasını sağlar.
  3. GEMINI.md Dosyası (Proje Düzeyinde Bağlam - Günlük Özet):
    • Proje Sözleşmesi: Proje dizininizin köküne yerleştirilen bu Markdown dosyası, söz konusu dizinde bir oturum başlattığınızda Gemini CLI'nın çalışma belleğine otomatik olarak yüklenir. Proje özelindeki bağlamın en doğrudan ve dinamik katmanıdır. GEMINI.md bölümünde şunları tanımlarsınız:
      • Kodlama Kuralları: Bu codelab'de gösterildiği gibi, kod kalitesi, biçimlendirme ve en iyi uygulamalarla ilgili açık kurallar. Bu sayede oluşturulan kodun ekibinizin standartlarına uygun olması sağlanır.
      • Karakter: Yapay zekaya belirli bir rol veya uzmanlık alanı benimsemesini söyleyebilirsiniz (ör. "You are an expert Python developer specializing in Google Agent Development Kit"). Bu, yapay zekanın yanıtlarını ve kod oluşturmasını ilgili bir profesyonel alanla sınırlar.
      • Belirli Talimatlar: Projedeki tüm görevler için geçerli olan doğrudan komutlar veya kısıtlamalar (ör. "Belgede açıklanmayan ek işlevler veya mantık eklemeyin").
    • Bu dosya, proje içinde Gemini CLI ile her etkileşim kurduğunuzda yapay zekaya bu önemli kurallar sürekli olarak hatırlatılmasını sağlar. Böylece daha doğru ve uyumlu kodlar üretilir.

Küresel kullanıcı tercihlerinden GEMINI.md'daki çok spesifik proje yönergelerine kadar bu bağlamı katmanlayarak yapay zekanın anlayışını etkili bir şekilde"tasarlarsınız". Bu sayede, çıktılarının doğruluğu ve alaka düzeyi önemli ölçüde artar. Gemini, genel amaçlı bir yapay zekadan projenizin ayrıntılarını ve kuruluşunuzun standartlarını anlayan, son derece uzmanlaşmış, güvenilir ve uyumlu bir ekip üyesine dönüşür.

Wards of Purity: Automated Testing and Quality Assurance for AI

Her yazılım gibi yapay zeka temsilcileri de titizlikle test edilmelidir. Saflık Muhafızları, Otomatik Test ve Kalite Güvencesi (KG) Süreçlerini temsil eder. Bunlar, yapay zekanın beklendiği gibi davranmasını, doğru olmasını ve hata ya da önyargı içermemesini sağlamak için kritik öneme sahiptir.

  • "Golden Dataset" ve Sentetik Veriler: Bu, Standartlaştırılmış Test Senaryoları, Beklenen Davranış Senaryoları ve hatta Sentetik Olarak Oluşturulmuş Test Verileri kümenizdir. Örnek girişler (müşteri soruları, işletme talepleri) ve bunlara karşılık gelen beklenen çıkışlar veya işlemler (doğru yanıt, yapay zekanın kullanması gereken tam araç) yer alır. Gerçek dünyadaki birçok senaryoda, kapsamlı "altın veri kümeleri" oluşturmak zaman alıcı ve maliyetlidir. Bu noktada sentetik veri oluşturma çok değerli bir araç haline gelir. Yapay zekaya şablonlar ve kurallar sağlayarak yeni, gerçekçi ve çeşitli test senaryolarını otomatik olarak oluşturmasını sağlayabilirsiniz. Bu sayede test çalışmalarınızı etkili bir şekilde artırabilir ve olası senaryoları çok daha kapsamlı bir şekilde ele alabilirsiniz.
  • adk eval ve pytest: Bunlar otomatik test çerçevelerinizdir. adk eval, önceden tanımlanmış bir grup test senaryosunu aracıya karşı çalıştırmak için kullanılırken pytest, ayrıntılı doğrulama kontrolleri yazmak ve yürütmek için programatik bir yol sağlar.

Gerçek Dünyadaki Kullanım Alanı: Sentetik Verilerle Yapay Zeka Chatbot'unun Doğruluğunu ve Güvenilirliğini Sağlama

Yapay zeka müşteri destek temsilcinizi dağıtmadan önce "Wards of Purity"den geçirmeniz gerekir:

  1. Sentetik Verilerle Strateji Yarışması (adk eval): Yüzlerce müşteri sorusunu manuel olarak yazmak yerine bir şablon tanımlarsınız: "Sipariş durumu, ürün iadeleri ve teknik sorun giderme ile ilgili yaygın müşteri destek sorularının 100 varyasyonunu oluştur." Ardından, bu şablona dayalı olarak büyük ve çeşitli bir evalset.json dosyası grubu oluşturması için bir yapay zekaya (ör. Gemini CLI) komut vererek etkili bir şekilde sentetik test verileri oluşturursunuz. Her soru için yalnızca beklenen yanıtı değil, yapay zekanın hangi dahili aracı çağırması gerektiğini de belirtirsiniz (ör. check_order_status için "Paketim nerede?"). adk eval, bu işlemlerden otomatik olarak geçirdiği aracının yanıtlarını ve araç kullanımını genişletilmiş veri kümenizle karşılaştırarak tutarlı bir şekilde doğru kararlar vermesini sağlar.
  2. Netlik Kalkanı (pytest): Kritik işlevler için pytest komut dosyaları yazarsınız. Örneğin, bir pytest, karmaşık bir sorguyu simüle edebilir ve yapay zekanın belirli bir veri alma aracını her zaman doğru şekilde kullandığını ve yapılandırılmış bir yanıt döndürdüğünü iddia edebilir. Böylece, küçük kod değişikliklerinin temel işlevselliği bozmadığından emin olunur.

Sentetik verilerin gücüyle önemli ölçüde geliştirilen bu otomatik testler, gerilemeleri (değişikliklerle ortaya çıkan yeni hatalar) tespit etmek ve yapay zeka aracılarının güvenilirliğini korumak için çok önemlidir. Bu durum, özellikle yapay zeka aracılarının geliştiği süreçte geçerlidir.

Blade'i Serbest Bırakma: Yapay Zeka Aracısı Dağıtımı için CI/CD

Test edilmiş bir yapay zeka aracısını canlı iş ortamınıza getirmek için sağlam bir dağıtım stratejisi gerekir.

  • Sürekli Entegrasyon (CI): Bu, Otomatik Derleme ve Test Ardışık Düzeninizdir. Bir geliştirici, yapay zeka aracısı için her yeni kod gönderdiğinde CI sistemi (ör. Google Cloud Build) otomatik olarak:
    1. En son kodu getirir.
    2. Gerekli tüm bağımlılıkları yükler.
    3. Aracının mantığını ve davranışını doğrulamak için tüm "Saflık Muhafızları"nı (pytest, adk eval) çalıştırır.
    4. Tüm testler başarılı olursa yapay zeka aracını dağıtılabilir bir birime (bu durumda bir Docker kapsayıcı görüntüsü) paketler ve Artifact Registry'de (doğrulanmış "arsenaliniz") depolar. Bu sayede yalnızca kapsamlı bir şekilde test edilmiş ve doğrulanmış kodun ilerlemesi sağlanır.

Gerçek Dünyadaki Kullanım Alanı: Sahtekarlık Algılama Aracısının Otomatik Olarak Dağıtılması

Sahtekarlık içeren işlemleri tespit etmek için tasarlanmış bir yapay zeka aracısı kullanabilirsiniz.

  1. Geliştirici Kodu Günceller: Bir veri bilimcisi, sahtekarlık algılama algoritmasını iyileştirir ve değişiklikleri kod deposuna işler.
  2. CI (Cloud Build) Tetiklendi: Cloud Build otomatik olarak başlatılır:
    • Yeni kodu çeker.
    • Yeni algoritmanın bilinen sahtekarlık kalıplarını doğru şekilde tanımladığından ve yanlış pozitifler oluşturmadığından emin olmak için geçmiş işlem verileri de dahil olmak üzere kapsamlı testler yürütür.
    • Testler başarılı olursa sahtekarlık algılama aracısının yeni bir Docker görüntüsünü oluşturur ve bu görüntüyü bir Artifact Registry'ye gönderir.

Bu otomatik işlem hattı, yapay zeka temsilcilerinin hızlı, güvenilir ve tutarlı bir şekilde dağıtılmasını sağlayarak insan hatasını en aza indirir ve yeni yapay zeka özelliklerinin işletmeye sunulmasını hızlandırır.

Gerçek Dünya Kullanım Alanı: Tedarik Zinciri Optimizasyonu Aracısını Doğrulama

Küresel tedarik zincirinizdeki envanter seviyelerini optimize etmek için tasarlanmış bir yapay zeka aracısı dağıttıktan sonra:

  1. Arayüze erişme: Canlı yapay zeka aracınıza ("Aracı Locus URL'si" aracılığıyla, yani API uç noktası üzerinden) bağlanan bir kontrol paneline veya uygulamaya ("Translocation Circle URL") erişirsiniz.
  2. Zorluğa Karşı Koyma: "Spectre'ın sorusu" gibi karmaşık bir senaryo girebilirsiniz: "Y Bölgesi'nde X Ürünü'ne yönelik talepte beklenmedik bir artış var ve kargo kapasitesi sınırlı. Stokta kalmama durumunu en aza indirmek ve karlılığı korumak için envanteri nasıl yeniden tahsis etmeli ve üretimi nasıl ayarlamalıyız?"
  3. Temsilcinin yanıtı: Artık yayında olan ve kurumsal sistemlerinize bağlı olan yapay zeka temsilciniz bu sorguyu işler, optimize edilmiş algoritmalarını kullanır ve kesin bir öneri sunar (ör. "A deposundan gönderime öncelik ver, B fabrikasında hızlandırılmış üretime başla ve Z bölgesindeki satış ekibini olası 24 saatlik gecikme konusunda bilgilendir"). Bu yanıtın doğruluğu ve hızı, temsilcinizin iş sorununa karşı "KRİTİK BİR DARBE" indirip indirmediğini belirler.