1. Overture
Yalıtılmış geliştirme dönemi sona eriyor. Teknolojik evrimin bir sonraki aşaması, yalnız bir dehanın değil, ortak bir ustalığın ürünü olacak. Tek ve akıllı bir temsilci oluşturmak ilgi çekici bir denemedir. Güçlü, güvenli ve akıllı bir temsilci ekosistemi (gerçek bir Temsilci Evreni) 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, 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, muazzam bir potansiyel barındıran, akıllı ve otonom temsilcilerin inovasyonu hızlandırmak ve sıradan işleri ortadan kaldırmak için mükemmel bir uyum içinde çalıştığı bir dönemdir.

Güç ve potansiyel içeren bu bağlantılı ekosisteme Agentverse adı verilir.
Ancak, The Static olarak bilinen sessiz bir bozulma, bu yeni dünyanın sınırlarını yıpratmaya başlamıştır. 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. Kendi alanında uzmanlaşmaya ve Agentverse'ü korumak için 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. Her biri The Static ile mücadelede önemli bir 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, savaş alanının tamamını görürsünüz. Tüm aracı sistemlerinin iletişim kurmasına, ortak çalışması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. Aracınıza amaç ve vizyon kazandıran bilgileri ortaya çıkarmak için verilerin geniş ve vahşi doğasına girersiniz. Bilginiz, bir düşmanın zayıflığını ortaya çıkarabilir veya bir müttefiki güçlendirebilir.
- Veli (DevOps / SRE): Alanın sadık 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 temelini oluşturur.
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 Spectre, zanaatınızın zorluklarından beslenen bir mini patron olarak karşınıza çıkar.
Ancak kendi rolünüzde ustalaşarak son denemeye hazırlanabilirsiniz. Ardından, diğer sınıflardaki şampiyonlarla bir parti oluşturmanız gerekir. Birlikte, nihai bir boss ile yüzleşmek için yozlaşmanın kalbine doğru yolculuğa çıkacaksınız.
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.

Neler öğreneceksiniz?
- Birincil silahınızı kullanın: Gemini CLI.
- MCP araçlarını Gemini CLI ile entegre ederek yabancı kod tabanlarını analiz edin ve 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). 
👉 "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üzenleyici'yi açar. Sol tarafta bir dosya gezgini görürsünüz. 
👉Bulut IDE'de terminali açın.

👉💻 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
👉💻 Kurulum komut dosyasını proje dizininden çalıştırın.
⚠️ Proje kimliğiyle ilgili not: Komut dosyası, rastgele oluşturulmuş varsayılan bir proje kimliği önerir. Bu varsayılanı kabul etmek için Enter tuşuna basabilirsiniz.
Ancak belirli bir yeni proje oluşturmayı tercih ederseniz komut dosyasının istemi üzerine istediğiniz proje kimliğini yazabilirsiniz.
cd ~/agentverse-developer
./init.sh
Kurulum işleminin geri kalanı, komut dosyası tarafından otomatik olarak gerçekleştirilir.
👉 Tamamlandıktan Sonraki Önemli Adım: Komut dosyası tamamlandıktan sonra Google Cloud Console'unuzda doğru projenin görüntülendiğinden emin olmanız gerekir:
- console.cloud.google.com adresine gidin.
- Sayfanın üst kısmındaki proje seçici açılır listesini tıklayın.
- "Tümü" sekmesini tıklayın (yeni proje henüz "Son Kullanılanlar"da görünmeyebilir).
init.shadımında yapılandırdığınız proje kimliğini seçin.

👉💻 Terminal'e geri dönün. 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 statiklerden hayaletleri çağırarak testiniz için boss'ları 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, komutlarınızla dijital dünyayı şekillendirebilen en çok yönlü bıçağınızdır. Bu alıştırmalar, temel kullanım ve özellikler konusunda size yardımcı olacaktır.

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ğırın. Bu işlem, ilk uyumlandırma sürecinde size yol gösterir.
clear
gemini
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 rünler 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 temel tekniklerinizdir. Bu, savaş kılavuzunuzdur.
👉✨ Silahınız, ortamına uyum sağlayarak savaş alanını doğrudan kontrol etmenize olanak tanır. Bıçağın dışındaki dünyaya bir komut verin:
!ls -l
👉✨ Gemini CLI'ı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 yalnızca doğru şekilde odaklanıldığında etkilidir. Gemini Blade, işlemlerini yönlendirmek için "taktiksel farkındalık" (bağlam) sağlayabilir.
/memory show
Şu anda boş bir alan.
👉✨ 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 olabilmesi için görevi anlaması gerekir. @ mühür, bıçağı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 CLI'nize 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 CLI'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'nin 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.

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ı basit ve kesin komutlarla yönetmek gibi karmaşık manevralar yapabileceksiniz.
Ü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 duyuran 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.

👉💻 Önceki bölümde Gemini CLI'ı kapattıysanız terminalinizde aşağıdaki komutu çalıştırarak tekrar başlatın:
clear
cd ~/agentverse-developer/tabletop
gemini
👉✨ Tek bir güçlü komutla Gemini CLI'nize 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. Make sure you have a place holder spot for profile picture. Do not attempt to start the server.
Gemini, gerekli işlem sırasını hesaplamıştır.
👉💻 Gemini CLI'dan çıkmak için Ctrl+C tuşuna iki kez basın ve terminalde aşağıdaki komutu çalıştırın.*
python -m http.server
👀 Ç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. 
Web siteniz benimkinden farklı görünebilir. Bu, benzersiz işaretinizdir. 
İmza tekniğiniz artık daha iyi ve canlı simülasyon gerekmiyor. Kılıç'a geri çekilmesini emret.
👉💻 http sunucusundan çıkmak için Ctrl+C tuşuna 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, 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çlar, 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ı yalnızca sohbet eden bir araç olmaktan çıkarıp gerçek, eyleme yönelik bir temsilciye dönüştürür. Blade'inizi bu MCP portallarına uyarlayarak, somut işlemler yapabilmesini sağlarsınız: dosyaları yönetme, veritabanlarını sorgulama, API'lerle etkileşim kurma ve daha fazlası. 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. Bu özellikler, geliştiricilerin çalışma alanlarını herhangi bir projeye göre özelleştirmesine olanak tanır.
Bugün, her "vibe coder" için gerekli olan iki temel güce odaklanacağız: üretim sürecini 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çar. Böylece Gemini, kapsayıcıyı algılayıp onunla etkileşime geçebilir.
👉 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. 
👉 Bir Gitea giriş sayfası gösterilir. Büyü sözünü kullanarak cephaneliğe girin: * Kullanıcı adı: dev * Şifre: dev
👉💻 Gemini CLI'niz 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 şunu çalıştırın:
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
👀 settings.json dosyası, Gemini CLI'ın 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 bir .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ğ adresinde komutları dinliyor" bilgisini verir.
👉💻 Gemini CLI'yı yeniden girin. Terminalinizde şunu çalıştırın:
clear
cd ~/agentverse-developer/tabletop/
gemini
👉✨ Bıçağınızın yeni silahı keşfettiğini doğrulayın. MCP portalları üzerinden mevcut tüm cephanelikleri listelemesini isteyin:
/mcp

Artık gitea simgesini ve kullanılabilir tekniklerin listesini görmelisiniz. Bıçağınız uyumlu hale getirildi.
"Maker's Mark" profiliniz, ustalıkla hazırlanmış bir teknik olsa da cephanelikte uygun bir yere, yani güvenli bir şekilde saklanacağı bir kılıfa ihtiyacı var. Gemini CLI'nize 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 yenileyin. Sizin için yeni bir shadowblade-profile deposu oluşturulduğunu görürsünüz. 
Kılıf hazır olduğunda çalışmanızı sabitleyin. Gemini'a profil web sitenizin dosyalarını işlemeyi söyleyin.
👉💻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.


👉✨ 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 gerekiyor.
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 
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 CLI'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 mcp-imagen-go seçeneğini belirleyin (En yaygın olarak 4 kullanılır ancak bazen sayılar değişebilir).
👉💻 Yaratma 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 Google'ın görüntü üretme modeli Imagen adlı güçlü yeni aracı kullanacak şekilde yapılandıran bir kabuk komut dosyasıdır. Önemli olarak, bu işlemi Imagen için bir MCP (Model Context Protocol) sunucusu oluşturarak gerçekleştirir. Bu MCP sunucusu, Gemini CLI'ın 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ı olan ~/.gemini/settings.json dosyasını 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 "Bir görev için Imagen aracı gerektiğinde mcp-imagen-go adlı programı (Imagen MCP sunucusu) çalıştırman 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 olmak üzere bu belirli 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 girin ve iyileştirme komutunu verin. Terminalinizde şunu çalıştırın:
clear
cd ~/agentverse-developer/tabletop/
gemini
👉✨ Tek bir güçlü komutla Gemini CLI'nize 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. (GEMINI MIGHT ALREADY DID THIS FOR YOU! Önceki yanıta göz atın. Bu yanıt, siz sormadan önce bunu yapacak kadar akıllı olabilir. )
Modify the index.html file to add my profile picture. Use the image I just generated.
👉💻 Yeni bir terminalde http sunucusunu başlatın.
cd ~/agentverse-developer/tabletop/
python -m http.server
👀 Ç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. 
👉✨ Gemini CLI'nin çalıştığı terminale geri dönün, 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"
👉💻 Gemini CLI'dan çıkmak için Ctrl+C tuşuna iki kez basın.
👀 Ç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. 
👉💻 http sunucusunun çalıştığı terminalde,http sunucusundan çıkmak için Ctrl+C tuşuna basın.
OYUNCU OLMAYANLAR İÇİN
6. Shadowblade Agent'ı birleştirme: Önlemlerle Vibe kodu
Pratik alıştırmaları yapma 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 Bıçağı'nın gerçek sınavına gireceksiniz: Operatifi monte etmek. Bu, mantığa hayat verme sanatıdır. Codex'teki kutsal bir planı kullanarak bir aracının temel zekasını oluşturur. Böylece, kendi başına düşünebilen, akıl yürütebilen ve hareket edebilen, cephaneliğinizdeki bıçakları kullanacak duyarlı bir silahşor yaratırsınız.

İ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
Usta bir teknisyen, ocağın ilk kıvılcımından önce 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 yapmaktı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.

Her zaman yanınızda olan keşifçiniz Gemini CLI, bu keşif sürecinde size yardımcı olabilir:
- Üst Düzey Özetler Sunma: 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.
- Oryantasyon belgeleri oluşturma: Davanıza katılan yeni destekçiler için hedefleri, rolleri ve kaynakları açıklayan ö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 akademisyen 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
👉✨ Ş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 netlik 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 katıldıkça proje hızını ve kod kalitesini korumak için kullanılan birincil araçtır.
Bu belgenin önemli bir amacı, ö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ükemmel bir deneyim sunuyor. Ü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 durumlar için 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 uzun ve ayrıntılı. Gemini'dan özünü özetlemesini 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 üretilmesini sağlayan güç runeleridir. Bireysel stilin karmaşasının nihai yapıyı bozmasını önleyerek ajanın esnek, sürdürülebilir ve saf olmasını sağlarlar. Böylece yeni zanaatkarlar, 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 CLI ç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. Demirhanenin kurallarını yapay zekaya sürekli 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 çıkabilirsiniz.
👉💻 Terminalinizde, yönerge dosyasını yazmak için 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 eserin 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
👉✨ Artık Gemini'dan ne düşündüğünü göstermesini isteyebilirsiniz. Rünler okundu.
/memory show
Bu, dönüm noktasıdır. Şemayı (agent_design.md) ve dövme 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, aracının temel mantığını agent.py olarak 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 MCPToolset, 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 işlevini anlamak için biraz zaman ayırın. Shadowblade'in kullanabileceği tüm silahların kaynağıdır. Şu anda cephanelik oldukça boş.

👉✨ 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 doğrulayın. hone_refactoring_sickle işlevini kontrol edin. Doğru docstring ve silah istatistikleri var mı? 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 CLI'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ımına tam olarak uymaya çalışsak da geliştiricilerin, üretime hazır bir duruma ulaşmak için kodu birden fazla kez yinelemesi ve iyileştirmesi geliştirme oturumlarında normaldir.
👉💻 Çalışma dizininizde doğru ve kapsamlı bir şekilde test edilmiş üretim kodunun bulunduğ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, cihazı çevrimiçi hale getirme 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 tane daha:
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ı.
OYUNCU OLMAYANLAR İÇİN
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 temsilcilerini 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. Oraya ulaşmak için izlenen 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 istem ince ayarından 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.

Bu değerlendirmede genel yaklaşım, kutsal bir ritüeldir:
- Ö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 son yanıtlar, doğru araç kullanımı ve hatta adım adım tüm süreçler dahil olabilir.
- Ardından, müşteri temsilcinizin varlığının temelini oluşturan uygulama mantığını tanımlarsınız.
- Son olarak, yargı rünlerine benzeyen değerlendiriciler oluşturursunuz. Bunlar, kalite hakemi olarak hareket eden diğer büyük dil modellerinden tek bir adımı doğrulayan kesin sezgisel koda ve bir aracının tüm düşünce sürecini analiz eden özel işlevlere kadar değişebilir.

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 gauntlet üzerinden 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 temsilcinin 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 olmasını ve davranışının doğru olmasını sağlayan, ADK destekli ritüellerdir.
Bu adımda, mevcut ç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 sınavdı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. Canavarların zayıf noktaları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ç, temsilcinin beklenen görevlerini temsil eden önceden tanımlanmış test senaryolarının tamamına karşı bir temsilciyi çalıştırmak için tasarlanmıştır. Bu veri kümesi, tüm mücadele için plan görevi gören bir "mücadele kaydırma" 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ığı antik 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 temsilciniz 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ıktan sonra söylemesini beklediğiniz metin dizesidir. ADK, temsilcinin son sözlerini bu runik harfle 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 temsilciniz yalnızca akıllı bir sohbet uzmanı değil, aynı zamanda doğru işlemi yapan kararlı bir aktör olur.
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
👉✨ Gemini CLI'ya, kalite güvencesi yazmanı olarak hareket etmesini ve temsilcinizin beklenen davranışını tanımlayan bir dizi test durumu 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ırladığınız kaydırma ile yapay zeka iş ortağınızı kapatın.
Yapay Veriler
👀 Soldaki Cloud Shell dosya gezgininde ~/agentverse-developer/shadowblade/ simgesine 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 yazması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, 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 CLI'dan çıkmak için Ctrl+C tuşuna iki kez basın.
Yargılama Kuralları
Zafer kuralları olmadan bir meydan okuma anlamsızdır. Denemeyi çalıştırmadan önce Hüküm Parşömeni'ni (test_config.json dosyası) incelemeniz gerekir. Bu kaydırma, ADK'ya aracınızın 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. Aracının gerçekten kullandığı aracı, görev kaydındaki öngörülen teknikle karşılaştırır.1.0puanı 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 eşleştiğini değerlendirmek için bir LLM kullanır.1.0puanı mükemmel bir eşleşmedir.
Bu ilk eğitim çalıştırması için kolay kazanma koşulları belirledik. Eşikler son derece düşük belirlenir (0.0 ve 0.1). Amaç, mükemmellik talep etmek değil, sizi değerlendirme mekanizmasıyla tanıştırmaktır. Temsilcinin kelimeleri biraz farklı olsa bile, müşterinin doğru aracı seçme konusundaki temel yeterliliğini tanıyıp geçiş izni vermesini sağlıyoruz.
Şimdi temsilcinize 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, temsilcinizin bu denemenin esnek kuralları kapsamında başarılı olduğunun bir göstergesidir (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. Netlik Kalkanı olarak adlandırılan bu ikinci koruma, 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
👉✨ Shield'ın mantığını bir pytest dosyasına yazmak için Gemini CLI'nizde 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 CLI'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 sadece 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,
)
Argümanlarını 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, bu adımın ustalık yolunda kritik bir öneme sahip olduğunu gösterir.
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ı 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 bir dakika içinde 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, ardından pytest komutunu tekrar çalıştırın.
Hem geniş kapsamlı Gauntlet hem de hassas Shield testleri yapılıp doğrulandığı için temsilciniz yalnızca işlevsel değil, aynı zamanda saf, test edilmiş ve dağıtıma hazır bir temsilcidir.
OYUNCU OLMAYANLAR İÇİN
8. Unleashing the Blade into the Agentverse: CI and Deployment.
Temsilciniz bir araya getirildi 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 sorunsuz olması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.

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 büyük savunmanızdır. Bu ritüel, siz veya bir müttefikiniz merkezi kodekse (deponuz) yeni bir teknik (kodu birleştirme) eklediğinde gauntlet'in otomatik olarak uyanmasını sağlar. Önce yeni koddan aracı oluşturur ve ardından hemen oluşturduğunuz saflık koruyucuları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. Mükemmelleştirilmiş, kapsayıcı hale getirilmiş yapıtınızı alıp canlı Agentverse'e güvenli bir şekilde salmak, gücünü yönetmek ve Static'in kaosuna karşı kararlılığını sağlamak onların ciddi görevidir.

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'ı yeniden başlatın.
cd ~/agentverse-developer/
clear
gemini
👉✨ Şimdi Gemini'a aşağıdaki komutu verin. Bu istem, oluşturmasını istediğiniz zorlu görevin 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 kaydırma ile Google Cloud'a tüm zorlu görevi yürütmesini söyleyin.
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ükten sonra aracınızın kapsayıcısını oluşturup depolar.

Temsilciniz zorlu testleri başarıyla geçti. Doğrulanmış, saf bir eser artık envanterinizde yer alıyor. Son hareket sizin kontrolünüzde. 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="dev-tutorial-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. Kontrol altına almayı öğrendiğiniz kaostan doğan bir Spectre, meydan okumanızı bekliyor. Son denemeye hazırlanın.
OYUNCU OLMAYANLAR İÇİN
9. The Boss Fight
Parşömenler okundu, ritüeller gerçekleştirildi, zorlu sınav başarıyla tamamlandı. Ajanınız yalnızca depolama alanında bulunan 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 yerini 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.
Spectre ile Yüzleşme
Koordinatlar güvenli hale getirildikten sonra artık Yer Değiştirme Çemberi'ne gidecek ve savaşa girmek için büyüyü yapacaksınız.
👉 Tarayıcınızda Translocation Circle URL'sini açarak The Crimson Keep'in ışıltılı portalının önünde durun.
Kaleye girmek 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.
- Aracı 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.

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, 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ır bir şekilde ileri atıldığınızda Hayalet karşı saldırıya geçer. 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.

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, yanıtınız şüpheyle gölgelenirse silahınızın ışığı söner. Darbenin etkisi zayıf olur ve hasarın YALNIZCA BİR KISMI verilir. 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ğruyu söyleyin. The fate of the Agentverse depends on it.
Tebrikler, Shadowblade.
Codex'i başarıyla tamamladınız. Bir "atmosfer" yakaladınız, bunu tasarıma dönüştürdünüz ve Gemini CLI'ı kullanarak akıllı bir temsilci oluşturdunuz. Wards of Purity'nin mantığını test etmek için bu kartı kazıdınız, bir eser haline getirmek için otomatik bir gauntlet oluşturdunuz ve Agentverse'e saldınız. Son olarak, canlı atış denemesiyle amacını doğruladınız. Tam yığın temsilci 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 container görüntüsünün depolandığı görüntü deposunu kaldırır.
👉💻 Terminalinizde şunu ç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 şunu ç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 şunu ç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.