1. Giriş
Bu codelab'de, temsilci uygulamanızda RAG'yi etkinleştirmek için Gemini Dosya Arama'yı nasıl kullanacağınız gösterilmektedir. Gemini Dosya Arama'yı kullanarak dokümanlarınızı parçalama, yerleştirme veya vektör veritabanı gibi ayrıntılarla uğraşmanıza gerek kalmadan alıp indeksleyebilirsiniz.
Öğ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'i (ADK) kullanmanın avantajları.
- ADK kullanılarak oluşturulan bir aracı çözümünde 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ı aracı oluşturun.
- Kişiye özel bilgiler için doğru ve yüksek kaliteli bilgiler sağlayamadığını gösterme
- Gemini Dosya Arama Deposu oluşturmak ve yönetmek için yerel olarak veya örneğin Google Colab'de çalıştırabileceğiniz bir Jupyter not defteri oluşturun.
- Dosya Arama Mağazası'na özel içerik yüklemek için not defterini kullanın.
- Dosya Arama Deposu'nun 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ı test edin.
- Dosya Arama Aracı'nı Google Arama Aracı ile birlikte kullanabilmemiz için Agent-As-A-Tool (Aracı Araç Olarak Kullanma) kalıbını kullanarak Dosya Arama Mağazası'nı ADK aracısına dahil edin.
2. RAG nedir ve neden gereklidir?
Yani... Çok Formatlı 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ükemmel olsa da birkaç sorundan muzdariptir:
- Her zaman güncel değildirler: Yalnızca eğitim sırasında öğrendiklerini bilirler.
- Her şeyi bilmiyorlar: Modeller büyük olsa da her şeyi bilemezler.
- Size ait bilgileri 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ış veya uydurma bir yanıt alırsınız. Model, genellikle bu yanlış yanıtı 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 alınan yanıtların giderek yavaşlaması.
- Sinyal bozulması (diğer adıyla "arada kaybolma"): Modelin, alakasız veriler arasından alakalı olanları ayıramadığı durum. Bağlamın büyük bir kısmı model tarafından yoksayılır.
- Maliyet: Jetonlar ücretlidir.
- 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ızdan alakalı bilgileri (anlamsal eşleşme kullanarak) arama ve bu verilerin alakalı parçalarını sorunuzla birlikte modele aktarma işlemidir. Modeli kendi gerçekliğinizle temellendirir.
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ölümlere ayırmak 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 Vektör Veritabanı'nda 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çeriklerin yer aldığı 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 hemen deneyebilirsiniz.)
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 bilinçli uzay gemilerinden oluşan filosu hakkında. (Elite Dangerous oyunundan biraz 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ım. 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 sonuç görürsünüz:

Gemini API anahtarı oluşturma
Gemini Developer API'yi (Gemini Dosya Arama Aracı'nı kullanmak için gereklidir) kullanmak için 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 sunan 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
Şimdi de genel bir soru soralım:
> What is the stock price of Google?
Google Arama'yı kullanarak güncel fiyatı bulup doğru yanıt vermelidir:

Şimdi de yanıtlayamayacağı bir soru soralım. Temsilcinin hikayemizi okumuş olması gerekir.
> 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 bilmiyor.
Şimdi quit yazarak aracıdan çıkın.
5. Gemini Dosya Arama: Açıklamalı

Gemini Dosya Arama, temelde iki şeyin birleşimidir:
- Tamamen 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 anlamında bir "araç": Gemini Dosya Arama Aracı'nı ajan tanımınıza araç olarak ekleyip aracı bir Dosya Arama Mağazası'na yönlendirebilirsiniz.
Ancak en önemlisi, Gemini API'nin kendisinde yerleşik olarak bulunur. 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üm.
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ı gibi çeşitli dosya türleri desteklenir. 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, gerisini Gemini halleder.
- Yüklenen tüm dosyalara özel meta veriler ekleyebiliriz. Bu, aracın çalışma zamanında kullanmasını istediğimiz dosyaları daha sonra filtrelemek için gerçekten yararlı 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?
Cevap: 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 umursamanız) 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 iç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 dahil etmeniz gereken bir şey değildir. Elbette, isterseniz yapabilirsiniz. Örneğin, agentic 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ırdığınız 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 çalıştıralım. Gerekli içe aktarma işlemlerini içeren Setup hücresini çalıştırarak 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'ı çalıştırdığımızda yüklediğimiz yerel .venv'ı seçin:

Ardından:
- Ortam değişkenlerini çekmek için "Local Only" (Yalnızca Yerel) 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 yapmanız gerekir. Kod başarıyla çalıştırılırsa
"Created store: fileSearchStores/<someid>"mesajını görmeniz gerekir. - İçinde ne 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örmeniz gerekir.
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österilir.

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.
İlk olarak, mağaza adını ileterek mağazamızı almak için 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 aracıma bir araç olarak ekleyerek kullanabilirim:
file_search_tool = types.Tool(file_search=types.FileSearch(file_search_store_names=[store.name]))
RAG temsilcisini ç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 iyi!
Temsilciyi kapatmak için quit yazın.
7. Aracılarımızı ADK kullanacak şekilde dönüştürme
Google Agent Development Kit (ADK), geliştiricilerin aracı ve aracı sistemleri oluşturması için açık kaynaklı bir modüler çerçeve ve SDK'dır. Bu sayede, çoklu aracı sistemlerini kolayca oluşturup yönetebiliyoruz. 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 tasarlanmıştır. 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'yi 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.
Aşağıdaki komutu çalıştırarak bu arayüzü 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 menüden 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.
Dosya Arama Mağazası'nı ADK aracısına dahil etme
Şimdi tüm bunları bir araya getireceğiz. Hem Dosya Arama Mağazası'nı hem de Google Arama'yı kullanabilen bir ADK aracısı çalıştıracağız. app/rag_agent_adk/agent.py içindeki koda göz atın.
Kod, önceki örneğe benzer ancak birkaç temel fark vardır:
- İki uzman aracıyı yöneten bir kök aracımız var:
- RagAgent: Özel bilgi uzmanı - Gemini Dosya Arama Mağazamızı kullanır.
- 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, ayrı bir komut dosyasıapp/rag_agent_adk/tools_custom.pyolarak uygulanmıştır.
Ayrıca dikkat etmeniz gereken bir "tuzak" var. Bu makalenin yazıldığı sırada, aynı isteği aynı aracıya gönderirken yerel GoogleSearch aracını ve FileSearch aracını birlikte kullanamazsınız. Bunu yapmaya çalışırsanız şu gibi bir hata mesajı 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, iki uzman temsilciyi ayrı alt temsilciler olarak uygulamak ve bunları Agent-as-a-Tool (Araç Olarak Temsilci) kalıbını kullanarak kök temsilciye iletmektir. 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ız.
İki uzman temsilciye erişebilirsiniz:
- RagAgent: Dahili bilgi bankası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: 
Soruya göre uygun alt aracı seçtiğini görüyoruz.
8. Sonuç
Tebrikler! Bu codelab'i tamamladınız.
Basit bir komut dosyasından çok aracılı RAG özellikli bir sisteme geçtiniz. Üstelik, tek bir satır yerleştirme kodu yazmadan ve vektör veritabanı uygulamadan!
Şunları öğrendik:
- 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ı 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.