1. Giriş
Bu codelab'de, ajan tabanlı uygulamanızda RAG'yi etkinleştirmek için Gemini Dosya Arama'yı nasıl kullanacağınız gösterilmektedir. Parçalama, yerleştirme veya vektör veritabanı ayrıntılarıyla ilgili endişelenmenize gerek kalmadan dokümanlarınızı almak ve dizine eklemek için Gemini Dosya Arama'yı kullanırsınız.
Öğrenecekleriniz
- RAG'nin temelleri ve neden gerekli olduğu.
- Gemini Dosya Arama nedir ve avantajları nelerdir?
- Dosya Arama Mağazası oluşturma
- Kendi özel dosyalarınızı Dosya Arama Mağazası'na yükleme
- RAG için Gemini Dosya Arama Aracı'nı kullanma
- Google Agent Development Kit (ADK) kullanmanın avantajları.
- ADK kullanılarak oluşturulan bir ajan tabanlı çözümde Gemini dosya arama aracını kullanma
- Gemini Dosya Arama Aracı'nı Google Arama gibi Google'ın "yerel" araçlarıyla birlikte kullanma
Yapacaklarınız
- Google Cloud projesi oluşturun ve geliştirme ortamınızı ayarlayın.
- Google Gen AI SDK'yı (ancak ADK olmadan) kullanarak Google Arama'yı kullanabilen ancak RAG özelliği olmayan basit bir Gemini tabanlı ajan oluşturun.
- Kişiye özel bilgiler için doğru ve yüksek kaliteli bilgiler sağlayamadığını gösterin.
- Gemini Dosya Arama Deposu oluşturmak ve yönetmek için Jupyter not defteri oluşturun (yerel olarak veya örneğin Google Colab'de çalıştırabilirsiniz).
- Dosya Arama Mağazası'na özel içerik yüklemek için not defterini kullanın.
- Dosya Arama Mağazası'nın bağlı olduğu bir temsilci oluşturun ve daha iyi yanıtlar üretebildiğini kanıtlayın.
- İlk "temel" temsilcimizi Google Arama aracıyla birlikte ADK temsilcisine dönüştürün.
- ADK web kullanıcı arayüzünü kullanarak aracıyı test edin.
- Dosya Arama Aracı'nı Google Arama Aracı ile birlikte kullanmamıza olanak tanımak için "araç olarak ajan" kalıbını kullanarak Dosya Arama Aracı'nı ADK aracına dahil edin.
2. RAG nedir ve neden gereklidir?
Yani... Veriyle Artırılmış Üretim.
Bu sayfaya geldiyseniz muhtemelen ne olduğunu biliyorsunuzdur ancak yine de kısa bir özet geçelim. LLM'ler (ör. Gemini) mükemmeldir ancak birkaç sorundan muzdariptir:
- Her zaman güncel değildirler: Yalnızca eğitim sırasında öğrendiklerini bilirler.
- Her şeyi bilmiyorlar: Modeller çok büyük olsa da her şeyi bilmiyorlar.
- Tescilli bilgilerinizi bilmezler: Geniş bir bilgi birikimine sahip olsalar da şirket içi belgelerinizi, bloglarınızı veya Jira biletlerinizi okumamışlardır.
Bu nedenle, bir modele cevabını bilmediği bir soru sorduğunuzda genellikle yanlış, hatta uydurulmuş bir yanıt alırsınız. Model, bu yanlış cevabı genellikle kendinden emin bir şekilde verir. Buna halüsinasyon denir.
Bir çözüm, tescilli bilgilerimizi doğrudan görüşme bağlamımıza dökmektir. Bu yöntem, az miktarda bilgi için uygundur ancak çok fazla bilgi olduğunda hızla sorunlu hale gelir. Bu durum özellikle şu sorunlara yol açar:
- Gecikme: Modelden gelen yanıtlar giderek yavaşlıyor.
- Sinyal bozulması (diğer adıyla "arada kaybolma"): Modelin, alakalı verileri gereksiz verilerden ayıramadığı durum. Bağlamın büyük bir kısmı model tarafından yoksayılıyor.
- Maliyet: Jetonların maliyeti vardır.
- Bağlam penceresinin tükenmesi: Bu noktada Gemini, isteklerinizi işleme almaz.
Bu durumu düzeltmenin çok daha etkili bir yolu RAG kullanmaktır. Bu işlem, veri kaynaklarınızdaki alakalı bilgileri (anlamsal eşleşme kullanarak) arama ve bu verilerin alakalı parçalarını sorunuzla birlikte modele aktarma sürecidir. Modeli gerçekliğinize göre şekillendirir.
Bu teknoloji, harici verileri içe aktararak, verileri parçalara ayırarak, verileri vektör yerleştirmelere dönüştürerek ve ardından bu yerleştirmeleri uygun bir vektör veritabanında depolayıp dizine ekleyerek çalışır.

Bu nedenle, RAG'yi uygulamak için genellikle şunlarla ilgili endişelenmemiz gerekir:
- Vektör veritabanı oluşturma (Pinecone, Weaviate, pgvector ile Postgres vb.).
- Dokümanlarınızı (ör. PDF'ler, Markdown dosyaları vb.) bölmek için bir parçalama komut dosyası yazma
- Bir yerleştirme modeli kullanarak bu parçalar için yerleştirmeler (vektörler) oluşturma
- Vektörleri Vector Database'de depolama.
Ancak arkadaşlar, arkadaşlarının işleri gereğinden fazla karmaşıklaştırmasına izin vermez. Daha kolay bir yol olduğunu söylesem ne dersin?
3. Ön koşullar
Google Cloud projesi oluşturma
Bu codelab'i çalıştırmak için Google Cloud projeniz olmalıdır. Mevcut bir projeyi kullanabilir veya yeni bir proje oluşturabilirsiniz.
Projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projelerinizin faturalandırma durumunu nasıl kontrol edeceğinizi öğrenmek için bu kılavuza bakın.
Bu codelab'i tamamlamanın size herhangi bir maliyeti olmayacağını unutmayın. En fazla birkaç kuruş.
Projenizi hazırlamaya başlayabilirsiniz. Bekliyorum.
Demo deposunu klonlama
Bu codelab için rehberli içerik içeren bir depo oluşturdum. Buna ihtiyacınız olacak.
Terminalinizden veya Google Cloud Shell Düzenleyici'ye entegre edilmiş terminalden aşağıdaki komutları çalıştırın. Cloud Shell ve düzenleyicisi çok kullanışlıdır. İhtiyacınız olan tüm komutlar önceden yüklenmiştir ve her şey "kullanıma hazır" şekilde çalışır.
git clone https://github.com/derailed-dash/gemini-file-search-demo cd gemini-file-search-demo
Bu ağaçta, depodaki önemli klasörler ve dosyalar gösterilir:
gemini-file-search-demo/ ├── app/ │ ├── basic_agent_adk/ # Agent with Google Search, using ADK framework │ │ └── agent.py │ ├── rag_agent_adk/ # Agent with Google Search and File Search, using ADK framework │ │ ├── agent.py │ │ └── tools_custom.py │ ├── sdk_agent.py # Agent using GenAI SDK (no ADK) with Google Search tool │ └── sdk_rag_agent.py # Agent using GenAI SDK (no ADK) with Gemini File Search tool ├── data/ │ └── story.md # Sample story with "bespoke content" to use with Gemini File Search Store ├── notebooks/ │ └── file_search_store.ipynb # Jupyter notebook for creating and managing Gemini File Search Store │ ├── .env.template # Template for environment variables - make a copy as .env ├── Makefile # Makefile for `make` commands ├── pyproject.toml # Project configuration and dependencies └── README.md # This file
Bu klasörü Cloud Shell Düzenleyici'de veya tercih ettiğiniz düzenleyicide açın. (Antigravity'yi henüz kullanmadınız mı? Henüz denemediyseniz denemenin tam zamanı.)
Depoda, data/story.md dosyasında "The Wormhole Incursion" adlı örnek bir hikaye olduğunu unutmayın. Bu şarkıyı Gemini ile birlikte yazdım. Komutan Dazbo ve onun duyarlı yıldız gemilerinden oluşan filosu hakkında. (Elite Dangerous oyunundan ilham aldım.) Bu hikaye, Gemini'ın bilmediği ve Google Arama'yı kullanarak arayamadığı belirli bilgileri içeren "özel bilgi tabanımız" olarak işlev görür.
Geliştirme Ortamınızı Kurma
Çalıştırmanız gereken komutların çoğunu basitleştirmek için Makefile sağladık. Belirli komutları hatırlamak yerine make <target> gibi bir komut çalıştırabilirsiniz. Ancak make yalnızca Linux / macOS / WSL ortamlarında kullanılabilir. Windows'u (WSL olmadan) kullanıyorsanız make hedeflerinin içerdiği komutların tamamını çalıştırmanız gerekir.
# Install dependencies with make make install # If you don't have make... uv sync --extra jupyter
Cloud Shell Düzenleyici'de make install komutunu çalıştırdığınızda aşağıdaki gibi bir çıktı görürsünüz:

Gemini API anahtarı oluşturma
Gemini Dosya Arama Aracı'nı kullanmak için gerekli olan Gemini Developer API'yi kullanmak üzere Gemini API anahtarına ihtiyacınız vardır. API anahtarı almanın en kolay yolu, Google Cloud projeleriniz için API anahtarları edinmek üzere kullanışlı bir arayüz sağlayan Google AI Studio'yu kullanmaktır. Belirli adımlar için bu kılavuza bakın.
API anahtarınız oluşturulduktan sonra kopyalayın ve güvenli bir şekilde saklayın.
Şimdi bu API anahtarını ortam değişkeni olarak ayarlamanız gerekiyor. Bu işlemi .env dosyası kullanarak yapabiliriz. Dahil edilen .env.example dosyasını .env adlı yeni bir dosya olarak kopyalayın. Dosya şu şekilde görünmelidir:
export GEMINI_API_KEY="your-api-key" export MODEL="gemini-2.5-flash" export STORE_NAME="demo-file-store"
your-api-key kısmını gerçek API anahtarınızla değiştirin. Şimdi şöyle görünmelidir:

Şimdi ortam değişkenlerinin yüklendiğinden emin olun. Bunu yapmak için şu komutu çalıştırın:
source .env
4. The Basic Agent
Öncelikle bir temel oluşturun. Basit bir aracı çalıştırmak için ham google-genai SDK'sını kullanacağız.
Kod
app/sdk_agent.py göz atın. Bu, aşağıdakileri yapan minimum düzeyde bir uygulamadır:
genai.Clientöğesini oluşturur.google_searcharacını etkinleştirir.- Bu kadar basit. RAG yok.
Kodu inceleyip ne işe yaradığını anladığınızdan emin olun.
Çalıştırma
# With make make sdk-agent # Without make uv run python app/sdk_agent.py
Ona genel bir soru soralım:
> What is the stock price of Google?
Mevcut fiyatı bulmak için Google Arama'yı kullanarak doğru yanıt vermelidir:

Şimdi de yanıtlayamayacağı bir soru soralım. Bu, temsilcinin hikayemizi okumasını gerektirir.
> Who pilots the 'Too Many Pies' ship?
Başarısız olmalı veya hatta halüsinasyon görmelidir. Şimdi de şunlara bakalım:

Model, soruyu yanıtlayamıyor. Ne hakkında konuştuğumuzu anlamıyor.
Şimdi quit yazarak aracıdan çıkın.
5. Gemini Dosya Arama: Açıklamalı

Gemini Dosya Arama, temelde iki şeyin birleşimidir:
- Tümüyle yönetilen bir RAG sistemi: Bir grup dosya sağlarsınız ve Gemini Dosya Arama, sizin için parçalama, yerleştirme, depolama ve vektör dizine ekleme işlemlerini gerçekleştirir.
- Ajan tabanlı anlamda "araç": Gemini dosya arama aracını, ajan tanımınıza araç olarak ekleyip aracı bir dosya arama deposuna yönlendirebilirsiniz.
Ancak en önemlisi, Gemini API'ye entegre edilmiş olmasıdır. Bu nedenle, kullanmak için ek API'ler etkinleştirmeniz veya ayrı ürünler dağıtmanız gerekmez. Yani gerçekten out-of-the-box bir çözümdür.
Gemini Dosya Arama Özellikleri
Sunulan özelliklerden bazıları şunlardır:
- Parçalama, yerleştirme, depolama ve indeksleme ayrıntıları geliştiriciden soyutlanır. Bu nedenle, yerleştirme modelini (bu arada Gemini Embeddings) veya ortaya çıkan vektörlerin nerede depolandığını bilmeniz (ya da önemsemeniz) gerekmez. Herhangi bir vektör veritabanı kararı vermeniz gerekmez.
- Kullanıma hazır olarak çok sayıda belge türünü destekler. PDF, DOCX, Excel, SQL, JSON, Jupyter not defterleri, HTML, Markdown, CSV ve hatta zip dosyaları dahil ancak bunlarla sınırlı olmamak üzere. Tam listeyi burada görebilirsiniz. Örneğin, aracınızı metin, resim ve tablo içeren PDF dosyalarıyla temellendirmek istiyorsanız bu PDF dosyalarında herhangi bir ön işleme yapmanız gerekmez. Yalnızca ham PDF'leri yükleyin ve gerisini Gemini'a bırakın.
- Yüklenen tüm dosyalara özel meta veriler ekleyebiliriz. Bu, aracın çalışma zamanında hangi dosyaları kullanmasını istediğimizi daha sonra filtrelemek için gerçekten faydalı olabilir.
Veriler Nerede Tutulur?
Bazı dosyaları yüklersiniz. Gemini Dosya Arama Aracı bu dosyaları alıp parçalar ve yerleştirmeler oluşturduktan sonra bunları bir yere koyar. Peki nerede?
Yanıt: Dosya Arama Mağazası. Bu, yerleştirmeleriniz için tümüyle yönetilen bir container'dır. Bunun nasıl yapıldığını bilmeniz (veya önemsemeniz) gerekmez. Tek yapmanız gereken bir tane oluşturmak (programatik olarak) ve ardından dosyalarınızı bu pakete yüklemek.
Uygun fiyatlıdır.
Yerleştirilmiş öğelerinizin depolanması ve sorgulanması ücretsizdir. Bu sayede, istediğiniz süre boyunca yerleştirmeleri saklayabilir ve bu depolama alanı için ödeme yapmazsınız.
Aslında, yalnızca yükleme/dizin oluşturma sırasında yerleştirmelerin oluşturulması için ödeme yaparsınız. Bu yazının yazıldığı sırada, 1 milyon jeton başına maliyet 0,15 ABD dolarıdır. Bu oldukça ucuz.
6. Gemini Dosya Arama'yı nasıl kullanırız?
İki aşama vardır:
- Yerleştirmeleri bir Dosya Arama Deposu'nda oluşturun ve saklayın.
- Temsilcinizden Dosya Arama Mağazası'nı sorgulayın.
1. Aşama: Gemini Dosya Arama Mağazası Oluşturmak ve Yönetmek İçin Jupyter Not Defteri
Bu aşamayı ilk başta ve mağazayı güncellemek istediğiniz her seferde yaparsınız. Örneğin, eklenecek yeni dokümanlarınız olduğunda veya kaynak dokümanlar değiştiğinde.
Bu aşama, dağıtılan yapay zeka aracılı uygulamanıza paketlemeniz gereken bir şey değildir. Elbette, isterseniz yapabilirsiniz. Örneğin, agent tabanlı uygulamanızın yönetici kullanıcıları için bir tür kullanıcı arayüzü oluşturmak istiyorsanız. Ancak genellikle isteğe bağlı olarak çalıştırabileceğiniz bir kod parçası yeterli olur. Bu kodu isteğe bağlı olarak çalıştırmanın harika bir yolu var mı? Jupyter not defteri
The Notebook
Dosyayı notebooks/file_search_store.ipynb düzenleyicinizde açın. Jupyter VS Code uzantılarını yüklemeniz istenirse lütfen yükleyin.
Bu dosyayı Cloud Shell Düzenleyici'de açtığımızda şu şekilde görünür:

Hücre hücre uygulayalım. Gerekli içe aktarma işlemlerini içeren Setup hücresini yürüterek başlayın. Daha önce not defteri çalıştırmadıysanız gerekli uzantıları yüklemeniz istenir. Devam edip bu işlemi gerçekleştirin. Ardından bir çekirdek seçmeniz istenir. "Python environments..."yı ve ardından daha önce make install komutunu çalıştırdığımızda yüklediğimiz yerel .venv'ı seçin:

Ardından:
- Ortam değişkenlerini çekmek için "Local Only" hücresini çalıştırın.
- Gemini üretken yapay zeka istemcisini başlatmak için "Client Initialisation" (İstemciyi Başlatma) hücresini çalıştırın.
- "Retrieve the Store" (Mağazayı Al) hücresini, Gemini Dosya Arama Mağazası'nı ada göre almak için yardımcı işlevle birlikte çalıştırın.
Artık mağazayı oluşturmaya hazırız.
- Mağazayı oluşturmak için "Create the Store (One Time)" (Mağazayı Oluştur (Tek Seferlik)) hücresini çalıştırın. Bu işlemi yalnızca bir kez yapmamız gerekir. Kod başarılı bir şekilde çalışırsa
"Created store: fileSearchStores/<someid>"mesajını görmeniz gerekir. - İçinde neler olduğunu görmek için "View the Store" (Mağazayı Görüntüle) hücresini çalıştırın. Bu noktada, koleksiyonda 0 doküman olduğunu görmelisiniz.
Mükemmel! Artık kullanıma hazır bir Gemini Dosya Arama mağazamız var.
Verileri Yükleme
data/story.md öğesini mağazaya yüklemek istiyoruz. Aşağıdakileri yapın:
- Yükleme yolunu ayarlayan hücreyi çalıştırın. Bu,
data/klasörümüzü gösterir. - Dosyaları mağazaya yüklemek için yardımcı işlevler oluşturan bir sonraki hücreyi çalıştırın. Bu hücredeki kodun, yüklenen her dosyadan meta verileri ayıklamak için Gemini'ı da kullandığını unutmayın. Bu ayıklanan değerleri alıp mağazada özel meta veri olarak saklarız. (Bunu yapmanız gerekmez ancak faydalı bir işlemdir.)
- Dosyayı yüklemek için hücreyi çalıştırın. Daha önce aynı ada sahip bir dosya yüklediysek not defterinin, yeni dosyayı yüklemeden önce mevcut sürümü sileceğini unutmayın. Dosyanın yüklendiğini belirten bir mesaj görürsünüz.

2. Aşama: Gemini Dosya Arama RAG'yi aracımıza uygulama
Gemini Dosya Arama Mağazası oluşturup hikayemizi buraya yükledik. Şimdi temsilcimizde Dosya Arama Mağazası'nı kullanma zamanı. Google Arama yerine Dosya Arama Deposu'nu kullanan yeni bir aracı oluşturalım. app/sdk_rag_agent.py göz atın.
Öncelikle, mağaza adını ileterek mağazamızı alacak bir işlev uyguladığımızı belirtmek isteriz:
def get_store(client: genai.Client, store_name: str) -> types.FileSearchStore | None:
"""Retrieve a store by display name"""
try:
for a_store in client.file_search_stores.list():
if a_store.display_name == store_name:
return a_store
except Exception as e:
logger.error(f"Error listing stores: {e}")
return None
Mağazamızı oluşturduktan sonra, aşağıdaki örnekte gösterildiği gibi, mağazayı temsilcimize araç olarak ekleyerek kullanabiliriz:
file_search_tool = types.Tool(file_search=types.FileSearch(file_search_store_names=[store.name]))
RAG aracını çalıştırma
Bu özelliği şu şekilde kullanıma sunuyoruz:
make sdk-rag-agent # Or, without make: uv run python app/sdk_rag_agent.py
Önceki temsilcinin yanıtlayamadığı soruyu soralım:
> Who pilots the 'Too Many Pies' ship?
Peki yanıt?

Başarılı! Yanıtı incelediğimizde şunları görüyoruz:
- Soru yanıtlanırken dosya depomuz kullanıldı.
- 5 alakalı parça bulundu.
- Yanıt çok doğru!
Temsilciyi kapatmak için quit yazın.
7. Ajanlarımızı ADK kullanacak şekilde dönüştürme
Google Agent Development Kit (ADK), geliştiricilerin ajanlar ve ajan sistemleri oluşturması için açık kaynaklı bir modüler çerçeve ve SDK'dır. Bu sayede, çok ajanlı sistemleri kolayca oluşturup yönetebiliriz. ADK, Gemini ve Google ekosistemi için optimize edilmiş olsa da modelden ve dağıtımdan bağımsızdır ve diğer çerçevelerle uyumlu olacak şekilde geliştirilmiştir. Henüz ADK'yı kullanmadıysanız daha fazla bilgi edinmek için ADK Dokümanları'na gidin.
Google Arama ile Temel ADK Temsilcisi
app/basic_agent_adk/agent.py göz atın. Bu örnek kodda, aslında iki aracı uyguladığımızı görebilirsiniz:
- Kullanıcıyla etkileşimi yöneten ve ana sistem talimatını sağladığımız
root_agent. google.adk.tools.google_search'yi araç olarak kullanan ayrı birSearchAgent.
root_agent, aslında SearchAgent öğesini bir araç olarak kullanır. Bu araç, şu satır kullanılarak uygulanır:
tools=[AgentTool(agent=search_agent)],
Kök aracının sistem istemi şu şekilde görünür:
You are a helpful AI assistant designed to provide accurate and useful information.
If you don't know the answer, use the SearchAgent to perform a Google search.
Do not attempt to search more than ONCE.
If the search yields no relevant results or returns unrelated content, you MUST immediately respond with: "I could not find any information about that."
Do NOT retry the search with different terms. Do NOT ask for clarification. FAIL FAST.
Temsilciyi deneme
ADK, geliştiricilerin ADK aracılarını test etmelerine olanak tanıyan çeşitli kullanıma hazır arayüzler sunar. Bu arayüzlerden biri de web kullanıcı arayüzüdür. Bu sayede, kullanıcı arayüzü kodu yazmamıza gerek kalmadan aracıları tarayıcıda test edebiliriz.
Bu arayüzü şu komutu çalıştırarak başlatabiliriz:
make adk-playground # Or, without make: uv run adk web app --port 8501 --reload_agents
Komutun, adk web aracını app klasörüne yönlendirdiğini ve bu klasörde root_agent uygulayan tüm ADK aracılarını otomatik olarak keşfedeceğini unutmayın. Şimdi deneyelim:

Birkaç saniye sonra uygulama hazır olur. Kodu yerel olarak çalıştırıyorsanız tarayıcınızı http://127.0.0.1:8501 adresine yönlendirmeniz yeterlidir. Cloud Shell Düzenleyici'de çalışıyorsanız "Web önizlemesi"ni tıklayın ve bağlantı noktasını 8501 olarak değiştirin:

Kullanıcı arayüzü göründüğünde açılır listeden basic_agent_adk simgesini seçin. Ardından, bu arayüze soru sorabilirsiniz:

Şu ana kadar her şey yolunda! Web kullanıcı arayüzü, kök temsilcinin SearchAgent temsilcisine yetki devrettiği zamanı bile gösterir. Bu özellik çok kullanışlıdır.
Şimdi de hikayemizin bilinmesini gerektiren sorumuzu soralım:

Kendiniz deneyin. Yönergeye uygun olarak hızlı bir şekilde başarısız olduğunu göreceksiniz.
File Search Store'u ADK aracına dahil etme
Şimdi tüm bunları bir araya getireceğiz. Hem Dosya Arama Deposu'nu hem de Google Arama'yı kullanabilen bir ADK aracısı çalıştıracağız. app/rag_agent_adk/agent.py bölümündeki koda göz atın.
Kod, önceki örneğe benzer ancak birkaç temel fark vardır:
- İki uzman ajanı yöneten bir kök ajanımız var:
- RagAgent: Gemini Dosya Arama Mağazamızı kullanan, özel bilgi uzmanı
- SearchAgent: Google Arama'yı kullanan genel bilgi uzmanı
- ADK'da henüz
FileSearchiçin yerleşik bir sarmalayıcı bulunmadığından, FileSearch aracını sarmalamak için özel bir sarmalayıcı sınıfıFileSearchToolkullanırız. Bu sınıf,file_search_store_namesyapılandırmasını düşük düzeyli model isteğine yerleştirir. Bu işlev, ayrı bir komut dosyasınaapp/rag_agent_adk/tools_custom.pyuygulanmıştır.
Ayrıca dikkat etmeniz gereken bir "püf nokta" var. Bu makalenin yazıldığı sırada, aynı isteği aynı aracıya gönderirken yerel GoogleSearch aracını ve FileSearch aracını birlikte kullanamıyordunuz. Bunu yapmaya çalışırsanız şu hatayı alırsınız:
HATA: Bir hata oluştu: 400 INVALID_ARGUMENT. {"error": {"code": 400, "message": "Search as a tool and file search tool are not supported together", "status": "INVALID_ARGUMENT"}}
Hata: 400 INVALID_ARGUMENT. {"error": {"code": 400, "message": "Search as a tool and file search tool are not supported together", "status": "INVALID_ARGUMENT"}}
Çözüm olarak, iki uzman ajanı ayrı alt ajanlar olarak uygulayın ve bunları Agent-as-a-Tool (Araç Olarak Ajan) kalıbını kullanarak kök ajana iletin. En önemlisi, kök aracının sistem talimatı, RagAgent öğesinin önce kullanılması konusunda çok net bir kılavuz sunar:
Doğru ve faydalı bilgiler sağlamak için tasarlanmış faydalı bir yapay zeka asistanısın.
İki uzman temsilciye erişebilirsiniz:
- RagAgent: Dahili bilgi tabanından özel bilgiler için.
- SearchAgent: Google Arama'daki genel bilgiler için.
Her zaman önce RagAgent'ı deneyin. Bu yöntemle faydalı bir yanıt alamazsanız SearchAgent'ı deneyin.
Son Test
ADK web kullanıcı arayüzünü daha önce olduğu gibi çalıştırın:
make adk-playground # Or, without make: uv run adk web app --port 8501 --reload_agents
Bu kez kullanıcı arayüzünde rag_agent_adk simgesini seçin. İşleyiş şeklini görelim: 
Soruyu temel alarak uygun alt ajanı seçtiğini görüyoruz.
8. Sonuç
Bu codelab'i tamamladığınız için tebrik ederiz.
Basit bir komut dosyasından çok agent'lı RAG özellikli bir sisteme geçtiniz. Üstelik, tek bir satır yerleştirme kodu yazmadan ve vektör veritabanı uygulamadan!
Öğrendiklerimiz:
- Gemini Dosya Arama, zamandan ve akıl sağlığından tasarruf etmenizi sağlayan yönetilen bir RAG çözümüdür.
- ADK, karmaşık çok aracılı uygulamalar için ihtiyacımız olan yapıyı sunar ve web kullanıcı arayüzü gibi arayüzler aracılığıyla geliştiricilere kolaylık sağlar.
- "Agent-as-a-Tool" kalıbı, araç uyumluluğu sorunlarını çözer.
Bu laboratuvarı faydalı bulduğunuzu umuyoruz. Tekrar görüşmek üzere.