1. Başlamadan önce
Vertex AI nedir?
Vertex AI, Google Cloud'un kurumsal düzeyde yapay zeka aracıları ve uygulamaları oluşturma, dağıtma ve ölçeklendirme için birleşik geliştirme platformudur. Geliştiricilere ve veri bilimcilere, küresel ölçekli altyapıyla derinlemesine entegre olan özel aracı iş akışları tasarlamak için gereken gelişmiş araçları sağlar.
- Model Garden'a erişin: Tam Gemini ailesi, üçüncü taraf modelleri ve özel açık kaynak modelleri de dahil olmak üzere 150'den fazla temel model arasından seçim yaparak belirli aracı görevleri için doğru olanı bulun.
- Karmaşık düzenlemeler oluşturma: Vertex AI, akıl yürütme özelliğini kullanarak planlama yapan, çok adımlı görevleri yürüten ve harici API'leri çağıran bağımsız temsilciler tasarlamak için gereken çerçeveyi sağlar.
- Kurumsal düzeyde temellendirme: Halüsinasyonları ortadan kaldırmak ve olgusal doğruluğu sağlamak için yüksek performanslı RAG (Retrieval-Augmented Generation) dahil olmak üzere canlı işletme verilerine aracıları bağlayın.
- DevOps: Güçlü SDK'lar, API'ler ve değerlendirme araçlarıyla aracı geliştirme sürecini mevcut CI/CD işlem hatlarına sorunsuz bir şekilde entegre ederek aracı performansını ve güvenliğini ölçekli olarak ölçün.
- Endüstriyel düzeyde güvenlik: Vertex AI, eğitim veya temel oluşturma için kullanılan müşteri verilerinin gizli, şifrelenmiş ve küresel yerleşim şartlarına uygun kalmasını sağlar.
- Optimize edilmiş altyapı: Google'ın birinci sınıf TPU ve GPU kümelerinde agent tabanlı iş yüklerini zahmetsizce ölçeklendirin. En zorlu küresel uygulamalarda bile düşük gecikmeli performans elde edin.
Google Workspace nedir?
Google Workspace, bireyler, okullar ve işletmeler için tasarlanmış bulut tabanlı üretkenlik ve ortak çalışma çözümlerinden oluşan bir pakettir:
- İletişim: Profesyonel e-posta hizmetleri (Gmail), video konferans (Meet) ve ekip mesajlaşması (Chat).
- İçerik Oluşturma: Doküman yazma (Dokümanlar), e-tablo oluşturma (E-Tablolar) ve sunu tasarlama (Slaytlar) araçları.
- Düzenleme: Paylaşılan takvimler (Takvimler) ve dijital not alma (Keep).
- Depolama: Dosyaları güvenli bir şekilde kaydetmek ve paylaşmak için merkezi bulut alanı (Drive).
- Yönetim: Kullanıcıları ve güvenlik ayarlarını yönetmek için yönetim denetimleri (Workspace Yönetici Konsolu).
Ne tür özel entegrasyonlar?
Google Workspace ve Vertex AI, güçlü bir geri bildirim döngüsü oluşturur. Workspace, gerçek zamanlı veriler ve ortak çalışma bağlamı sağlarken Vertex AI, akıllı iş akışlarını otomatik hale getirmek için gereken modelleri, ajan tabanlı akıl yürütmeyi ve düzenlemeyi sunar.
- Akıllı bağlantı: Google tarafından yönetilen veri depoları, API'ler ve MCP sunucuları (Google tarafından yönetilen ve özel) sayesinde temsilciler, Workspace verilerine güvenli ve sorunsuz bir şekilde erişebilir ve kullanıcılar adına işlem yapabilir.
- Özel temsilciler: Ekipler, kod kullanmayan tasarımcıları veya profesyonel kod çerçevelerini kullanarak yönetici tarafından yönetilen Workspace verilerine ve işlemlerine dayalı özel temsilciler oluşturabilir.
- Yerel entegrasyon: Workspace eklentileri, özel kullanıcı arayüzü bileşenleri veya arka plan işlemleri aracılığıyla yapay zeka sistemleri ile Chat ve Gmail gibi uygulamalar arasındaki boşluğu doldurur. Bu sayede temsilciler, anında ve bağlama uygun yardım için kullanıcılarla bulundukları yerde buluşabilir.
Google Workspace'in güçlü üretkenlik ekosistemini Vertex AI'ın gelişmiş ajan gücüyle birleştiren kuruluşlar, ekiplerinin her gün kullandığı araçlarda karmaşık iş akışlarını doğrudan otomatikleştiren özel, veriye dayalı yapay zeka ajanları aracılığıyla operasyonlarını dönüştürebilir.
Ön koşullar
Tüm adımları kendi ortamınızda uygulamak istiyorsanız şunlara ihtiyacınız vardır:
- Google Cloud ve Python hakkında temel bilgi
- Faturalandırmanın etkin olduğu ve sahibi olduğunuz bir Google Cloud projesi. Mevcut bir projede faturalandırmanın etkinleştirilip etkinleştirilmediğini kontrol etmek için Projelerinizin faturalandırma durumunu doğrulama bölümüne bakın. Proje oluşturma ve faturalandırmayı ayarlama hakkında bilgi edinmek için Google Cloud projesi oluşturma bölümüne bakın. Proje sahipliğini değiştirmek için Proje üyelerini yönetme veya proje sahipliğini değiştirme başlıklı makaleyi inceleyin.
- Google Chat'e erişimi olan ve akıllı özelliklerin etkinleştirildiği bir Business veya Enterprise Google Workspace hesabı.
- Google Cloud CLI, Google Cloud projeniz için yüklenmiş ve başlatılmış olmalıdır.
- Python 3.11 veya sonraki bir sürümün yüklü olması gerekir. Talimatlar için resmi Python web sitesine bakın.
Ne oluşturacaksınız?
Bu codelab'de, Google Workspace ile sıkı bir şekilde entegre edilmiş Vertex AI aracılarıyla üç çözüm oluşturacağız. Veriler, işlemler ve kullanıcı arayüzleriyle etkileşim kurmak için kullanılabilecek mimari kalıpları gösterirler.
Vertex AI Search uygulaması
Bu temsilci, kullanıcıların doğal dillerinde Workspace verilerini aramasına ve Workspace'te işlem yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları.
- Aracı barındırma: Vertex AI Search.
- Kullanıcı arayüzü: Vertex AI Search Web Widget'ı.

Özel aracı
Bu aracı, kullanıcıların özel araçlar ve kurallar kullanarak doğal dilde Workspace verilerini aramasına ve Workspace'te işlem yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları, Google tarafından yönetilen Vertex AI Search Model Context Protocol (MCP) sunucusu, Google Chat mesajları göndermek için özel araç işlevi (Google Chat API aracılığıyla).
- Temsilci oluşturma araçları: Temsilci Geliştirme Kiti (ADK).
- Aracı ana makinesi: Vertex AI Agent Engine.
- Kullanıcı arayüzü: ADK Web.


Google Workspace eklentisi olarak Agent
Bu aracı, kullanıcıların Workspace uygulaması kullanıcı arayüzleri bağlamında doğal dillerini kullanarak Workspace verilerinde arama yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları, Google tarafından yönetilen Vertex AI Search Model Context Protocol (MCP) sunucusu, Google Chat mesajları göndermek için özel araç işlevi (Google Chat API aracılığıyla).
- Temsilci oluşturma araçları: Temsilci Geliştirme Kiti (ADK).
- Aracı ana makinesi: Vertex AI Agent Engine.
- Kullanıcı arayüzü: Chat ve Gmail için Google Workspace eklentisi (Takvim, Drive, Dokümanlar, E-Tablolar ve Slaytlar'a kolayca genişletilebilir).
- Google Workspace eklentisi: Apps Komut Dosyası, Vertex AI Agent Engine API'leri, bağlamsal (seçili Gmail iletisi).


Öğrenecekleriniz
- Vertex AI Arama ile Google Workspace arasındaki, veri ve işlemleri etkinleştiren entegrasyon noktaları.
- Vertex AI'da barındırılan özel aracıları oluşturma seçenekleri.
- Kullanıcıların Vertex AI Arama Web Widget'ı ve Google Workspace uygulamaları gibi aracılara erişebileceği yöntemler.
2. Kur
Çözüm oluşturmadan önce projenin Vertex AI Applications ayarlarını başlatmamız, gerekli API'leri etkinleştirmemiz ve Vertex AI Workspace veri depolarını oluşturmamız gerekir.
Kavramları inceleme
Vertex AI uygulaması
Vertex AI uygulaması, Google Cloud'da yönetilen, uçtan uca bir çözümdür. Anlamsal arama, içerik oluşturma veya otomatik müşteri etkileşimi gibi karmaşık görevleri gerçekleştirmek için makine öğrenimi modellerini (ör. üretken yapay zeka temsilcileri veya arama motorları) kurumsal veriler ve özel araçlarla entegre eder.
Vertex AI veri deposu
Vertex AI veri deposu, Google Workspace gibi birinci taraf veri kaynaklarından veya Jira ya da Shopify gibi üçüncü taraf uygulamalarından alınan verileri içeren bir varlıktır. Üçüncü taraf uygulamalarından gelen verileri içeren veri depolarına veri bağlayıcılar da denir.
Vertex AI Applications ayarlarını başlatma
Aracı oluşturmayı etkinleştirmek için Vertex AI Applications ayarlarını başlatın.
Google Cloud Console'u yeni bir sekmede açın ve şu adımları uygulayın:
- Projenizi seçin.
- Google Cloud arama alanında AI Applications'a (Yapay Zeka Uygulamaları) gidin.
- Hükümleri inceleyip kabul ettikten sonra Devam et ve API'yi etkinleştir'i tıklayın.
- Ayarlar'a gidin.
- Authentication (Kimlik Doğrulama) sekmesinde global'i düzenleyin.

- Google Kimliği'ni seçip Kaydet'i tıklayın.

API'leri etkinleştir
Vertex AI Workspace veri depoları için aşağıdaki API'lerin etkinleştirilmesi gerekir:
- Google Cloud Console'da Takvim, Gmail ve People API'lerini etkinleştirin:

- Menü ☰ > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler'i tıklayın ve Google Calendar API, Gmail API ve People API'nin listede olduğunu doğrulayın.
Veri depoları oluşturma
Google Drive veri deposunu oluşturun:
- Google Cloud Console'da AI Applications'a gidin ve Data Stores'a (Veri Depoları) gidin.
- + Veri deposu oluştur'u tıklayın.
- Kaynak bölümündeki Google Drive altında Seç'i tıklayın.

- Veriler bölümünde Tümü'nü seçin ve Devam'ı tıklayın.

- Yapılandırma bölümünde Veri bağlayıcı adı'nı
driveolarak ayarlayın ve geçerli olabilecek ücretleri inceleyip kabul ettikten sonra Devam'ı tıklayın.

- Fiyatlandırma bölümünde, tercih ettiğiniz fiyatlandırma modelini seçin ve Oluştur'u tıklayın. Bu codelab bağlamında genel fiyatlandırma önerilir.
- Yeni eklenen veri deposunu görebileceğiniz Veri Depoları'na otomatik olarak yönlendirilirsiniz.
Google Takvim veri deposunu oluşturun:
- + Veri deposu oluştur'u tıklayın.
- Kaynak bölümünde Google Takvim'i arayın ve Seç'i tıklayın.
- İşlemler bölümünde Atla'yı tıklayın.
- Yapılandırma bölümünde Veri bağlayıcısı adı'nı
calendarolarak ayarlayın. - Oluştur'u tıklayın.
- Yeni eklenen veri deposunu görebileceğiniz Veri Depoları'na otomatik olarak yönlendirilirsiniz.
Google Gmail veri deposunu oluşturun:
- + Yeni veri deposu'nu tıklayın.
- Kaynak bölümünde Google Gmail'i arayın ve Seç'i tıklayın.
- İşlemler bölümünde Atla'yı tıklayın.
- Yapılandırma bölümünde Veri bağlayıcısı adı'nı
gmailolarak ayarlayın. - Oluştur'u tıklayın.
- Yeni eklenen veri deposunu görebileceğiniz Veri Depoları'na otomatik olarak yönlendirilirsiniz.
3. Vertex AI Arama uygulaması
Bu temsilci, kullanıcıların doğal dillerinde Workspace verilerini aramasına ve Workspace'te işlem yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları.
- Aracı barındırma: Vertex AI Search.
- Kullanıcı arayüzü: Vertex AI Search Web Widget'ı.
Kavramları inceleme
Vertex AI Search uygulaması
Vertex AI Search uygulaması, son kullanıcılarınıza arama sonuçları, işlemler ve aracıları sunar. API'ler bağlamında uygulama terimi, motor terimiyle birbirinin yerine kullanılabilir. Arama sonuçları, yanıtlar veya işlemler sunmak için verilerin kullanılabilmesi için uygulamanın bir veri deposuna bağlı olması gerekir.
Vertex AI Arama Web Widget'ı
Vertex AI Search Web Widget, geliştiricilerin yapay zeka destekli bir arama çubuğunu ve sonuç arayüzünü doğrudan bir web sitesine minimum kodlama ile yerleştirmesine olanak tanıyan, önceden oluşturulmuş ve özelleştirilebilir bir kullanıcı arayüzü bileşenidir.
Vertex AI Search Önizlemesi
Vertex AI Search Preview, Google Cloud Console'da yerleşik bir test ortamıdır. Geliştiricilerin, aynı ayarları üretime hazır bir Vertex AI Search web widget'ına sorunsuz bir şekilde dağıtmadan önce arama yapılandırmalarını ve üretken yanıtları doğrulamasına olanak tanır.
Çözüm mimarisini inceleme

Uygulama oluşturma
Veri depolarınızı sabitlemek için yeni bir arama uygulaması oluşturun.
Cloud Console'da AI Applications > Apps'i (Yapay Zeka Uygulamaları > Uygulamalar) açın ve aşağıdaki adımları uygulayın:
- + Uygulama oluştur'u tıklayın.
- Tür bölümündeki Özel arama (genel) altında Oluştur'u tıklayın.

- Yapılandırma bölümünde, fiyatları inceleyip kabul ettikten sonra Enterprise sürümü özellikleri ve Üretken Yanıtlar'ı işaretleyin.
- Uygulama adını
codelabolarak ayarlayın. - Ada göre bir kimlik oluşturulur ve alanın altında gösterilir. Bu kimliği kopyalayın.
- Şirket adı'nı
Codelabolarak ayarlayın. - Çok bölgeli'yi
global (Global)olarak ayarlayın. - Devam'ı tıklayın.

- Veriler bölümünde drive, gmail ve calendar veri depolarını seçip Devam'ı tıklayın.

- Fiyatlandırma bölümünde, tercih ettiğiniz fiyatlandırma modelini seçin ve Oluştur'u tıklayın. Bu codelab bağlamında genel fiyatlandırma önerilir.
- Uygulama oluşturulur ve otomatik olarak AI Applications (Yapay Zeka Uygulamaları) > Apps (Uygulamalar) > codelab > App overview (Uygulamaya genel bakış) sayfasına yönlendirilirsiniz.
- Bağlı veri depoları'na gidin.
- Birkaç dakika sonra, bağlı tüm veri deposu durumları Etkin olmalıdır.

Web Widget'ını yapılandırma
Arama widget'ının görsel görünümünü ve davranışını yapılandırın.
- Yapılandırmalar'a gidin.
- UI (Kullanıcı Arayüzü) sekmesinde Arama türü'nü Ek sorularla arama olarak ayarlayın ve Kaydet ve yayınla'yı tıklayın.

Uygulamayı dene
Arama uygulamasını doğrudan Google Cloud Console'da test edin.
- Önizleme'ye gidin. Web Widget'ı gösterilir.
- Sohbette
Do I have any meetings today?yazıpentertuşuna basın. - Sohbette
Did I receive an email on March 1st 2026?yazıpentertuşuna basın. - Sohbette
Give me the title of the latest Drive file I createdyazıpentertuşuna basın.

4. Özel temsilci
Bu aracı, kullanıcıların özel araçlar ve kurallar kullanarak doğal dilde Workspace verilerini aramasına ve Workspace'te işlem yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları, Google tarafından yönetilen Vertex AI Search Model Context Protocol (MCP) sunucusu, Google Chat mesajları göndermek için özel araç işlevi (Google Chat API aracılığıyla).
- Temsilci oluşturma araçları: Temsilci Geliştirme Kiti (ADK).
- Aracı ana makinesi: Vertex AI Agent Engine.
- Kullanıcı arayüzü: ADK Web.
Kavramları inceleme
Agent Development Kit (ADK)
Agent Development Kit (ADK), akıl yürütme, bellek yönetimi ve araç entegrasyonu için önceden oluşturulmuş modüller sağlayarak bağımsız yapay zeka aracı oluşturmayı basitleştirmek üzere tasarlanmış özel bir araç ve çerçeve paketidir.
Model Context Protocol (MCP)
Model Context Protocol (MCP), evrensel bir "tak ve çalıştır" arayüzü aracılığıyla yapay zeka uygulamaları ile çeşitli veri kaynakları veya araçlar arasında sorunsuz ve güvenli entegrasyon sağlamak için tasarlanmış açık bir standarttır.
İşlev Aracı
İşlev aracı, yapay zeka modelinin belirli işlemleri gerçekleştirmek veya harici sistemlerden gerçek zamanlı verileri almak için tetikleyebileceği, önceden tanımlanmış bir yürütülebilir rutindir. Bu araç, yapay zeka modelinin yeteneklerini basit metin oluşturmanın ötesine taşır.
ADK Web
ADK web, daha kolay geliştirme ve hata ayıklama için ADK SDK'sı ile birlikte gelen yerleşik geliştirici kullanıcı arayüzüdür.
Çözüm mimarisini inceleme

Kaynak kodunu inceleme
agent.py
Aşağıdaki kod, Vertex AI ile kimlik doğrulaması yapar, Vertex AI Search MCP ve Chat API araçlarını başlatır ve aracının davranışını tanımlar.
- Kimlik doğrulama: MCP ve API çağrılarının kimliğini doğrulamak için ortam değişkenlerinden
ACCESS_TOKENdeğerini alır. - Araç Kurulumu: Vertex AI Search Model Context Protocol (MCP) sunucusuna bağlanan bir araç seti olan
vertexai_mcpvesend_direct_messagearacını başlatır. Bu sayede temsilci, bağlı veri depolarınızda arama yapabilir ve Google Chat mesajları gönderebilir. - Agent Definition:
gemini-2.5-flashmodelini kullanarakroot_agenttanımlar. Talimatlar, temsilciye bilgi alma için arama aracını, işlemler için isesend_direct_messagearacını kullanmaya öncelik vermesini söyler. Bu sayede temsilci, kurumsal verilerinizle etkili bir şekilde temellendirilir.
...
MODEL = "gemini-2.5-flash"
# Access token for authentication
ACCESS_TOKEN = os.environ.get("ACCESS_TOKEN")
if not ACCESS_TOKEN:
raise ValueError("ACCESS_TOKEN environment variable must be set")
VERTEXAI_SEARCH_TIMEOUT = 15.0
def get_project_id():
"""Fetches the consumer project ID from the environment natively."""
_, project = google.auth.default()
if project:
return project
raise Exception(f"Failed to resolve GCP Project ID from environment.")
def find_serving_config_path():
"""Dynamically finds the default serving config in the engine."""
project_id = get_project_id()
engines = discoveryengine_v1.EngineServiceClient().list_engines(
parent=f"projects/{project_id}/locations/global/collections/default_collection"
)
for engine in engines:
# engine.name natively contains the numeric Project Number
return f"{engine.name}/servingConfigs/default_serving_config"
raise Exception(f"No Discovery Engines found in project {project_id}")
def send_direct_message(email: str, message: str) -> dict:
"""Sends a Google Chat Direct Message (DM) to a specific user by email address."""
chat_client = chat_v1.ChatServiceClient(
credentials=Credentials(token=ACCESS_TOKEN)
)
# 1. Setup the DM space or find existing one
person = chat_v1.User(
name=f"users/{email}",
type_=chat_v1.User.Type.HUMAN
)
membership = chat_v1.Membership(member=person)
space_req = chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE)
setup_request = chat_v1.SetUpSpaceRequest(
space=space_req,
memberships=[membership]
)
space_response = chat_client.set_up_space(request=setup_request)
space_name = space_response.name
# 2. Send the message
msg = chat_v1.Message(text=message)
message_request = chat_v1.CreateMessageRequest(
parent=space_name,
message=msg
)
message_response = chat_client.create_message(request=message_request)
return {"status": "success", "message_id": message_response.name, "space": space_name}
vertexai_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://discoveryengine.googleapis.com/mcp",
timeout=VERTEXAI_SEARCH_TIMEOUT,
sse_read_timeout=VERTEXAI_SEARCH_TIMEOUT,
headers={"Authorization": f"Bearer {ACCESS_TOKEN}"}
),
tool_filter=['search']
)
# Answer nicely the following user queries:
# - Please find my meetings for today, I need their titles and links
# - What is the latest Drive file I created?
# - What is the latest Gmail message I received?
# - Please send the following message to someone@example.com: Hello, this is a test message.
root_agent = LlmAgent(
model=MODEL,
name='enterprise_ai',
instruction=f"""
You are a helpful assistant that always uses the Vertex AI MCP search tool to answer the user's message, unless the user asks you to send a message to someone.
If the user asks you to send a message to someone, use the send_direct_message tool to send the message.
You MUST unconditionally use the Vertex AI MCP search tool to find answer, even if you believe you already know the answer or believe the Vertex AI MCP search tool does not contain the data.
The Vertex AI MCP search tool accesses the user's data through datastores including Google Drive, Google Calendar, and Gmail.
Only use the Vertex AI MCP search tool with servingConfig and query parameters, do not use any other parameters.
Always use the servingConfig {find_serving_config_path()} while using the Vertex AI MCP search tool.
""",
tools=[vertexai_mcp, FunctionTool(send_direct_message)]
)
Kaynak Kodunu İndirme
Başlamak için örnek kodu yerel ortamınıza indirin.
- Bu GitHub deposunu indirin.
- Bir terminalde
solutions/enterprise-ai-agent-localdizinini açın.
API'leri etkinleştirme
Çözüm için ek API'lerin etkinleştirilmesi gerekir:
- Google Cloud Console'da Vertex AI, Cloud Resource Manager ve Google Chat API'lerini etkinleştirin:

- Menü ☰ > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler'i tıklayın ve Vertex AI API, Cloud Resource Manager API ve Google Chat API'nin listede olduğunu doğrulayın.
OAuth kullanıcı rızası ekranını yapılandırın
Çözüm için izin ekranı yapılandırması gerekir:
- Google Cloud Console'da Menü ☰ > Google Auth platform > Markalama'yı tıklayın.
- Başlayın'ı tıklayın.
- Uygulama Bilgileri bölümünde Uygulama adı'nı
Codelabolarak ayarlayın . - Kullanıcı destek e-postası bölümünde, kullanıcıların rızalarıyla ilgili soruları olduğunda sizinle iletişime geçebileceği bir destek e-posta adresi seçin.
- İleri'yi tıklayın.
- Kitle bölümünde Şirket içi'ni seçin.
- İleri'yi tıklayın.
- İletişim bilgileri bölümünde, projenizde yapılan değişikliklerle ilgili bildirim alabileceğiniz bir e-posta adresi girin.
- İleri'yi tıklayın.
- Bitir bölümünde Google API Hizmetleri Kullanıcı Verileri Politikası'nı inceleyin ve kabul ediyorsanız Google API Hizmetleri: Kullanıcı Verileri Politikası'nı kabul ediyorum'u seçin.
- Devam'ı, ardından Oluştur'u tıklayın.

- Yapılandırma kaydedilir ve otomatik olarak Google Auth Platform > Overview'a (Google Kimlik Doğrulama Platformu > Genel Bakış) yönlendirilirsiniz.
Daha fazla bilgi için OAuth iznini yapılandırma başlıklı kılavuzun tamamını inceleyin.
OAuth istemci kimlik bilgileri oluşturma
Kullanıcının kimliğini yerel bir ortamda doğrulamak için yeni bir masaüstü uygulaması OAuth istemcisi oluşturun:
- Google Cloud Console'da Menü ☰ > Google Auth platform > Clients'ı (İstemciler) tıklayın.
- + İstemci oluştur'u tıklayın.
- Uygulama türü için Masaüstü uygulaması'nı seçin.
- Name'i (Ad)
codelabolarak ayarlayın. - Oluştur'u tıklayın. Yeni oluşturulan kimlik bilgisi görünür.
- JSON'u indir'i tıklayın ve dosyayı
solutions/enterprise-ai-agent-localdizininde client_secret.json olarak kaydedin.

Vertex AI Search MCP'yi etkinleştirme
- Terminalde şunu çalıştırın:
gcloud beta services mcp enable discoveryengine.googleapis.com \
--project=$(gcloud config get-value project)
Chat uygulamasını yapılandırma
Google Chat uygulamasını temel bilgilendirme ayrıntılarıyla yapılandırın.
- Google Cloud Console'da Google Cloud arama alanına
Google Chat APIyazın, Google Chat API'yi, Yönet'i ve Yapılandırma'yı tıklayın.
- Uygulama adı ve Açıklama'yı
Vertex AIolarak ayarlayın. - Avatar URL'sini
https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.pngolarak ayarlayın. - Etkileşimli özellikleri etkinleştir'in seçimini kaldırın ve açılan modal iletişim kutusunda Devre dışı bırak'ı tıklayın.
- Günlük hatalarını Logging'e seçeneğini belirleyin.
- Kaydet'i tıklayın.

Temsilciyi ADK Web'de çalıştırma
ADK web arayüzünü kullanarak aracıyı yerel olarak başlatın.
- Bir terminalde
solutions/enterprise-ai-agent-localdizinini açın ve şu komutu çalıştırın:
# 1. Authenticate with all the required scopes gcloud auth application-default login \ --client-id-file=client_secret.json \ --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/chat.spaces,https://www.googleapis.com/auth/chat.messages # 2. Configure environment export ACCESS_TOKEN=$(gcloud auth application-default print-access-token) export GOOGLE_GENAI_USE_VERTEXAI=1 export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project) export GOOGLE_CLOUD_LOCATION=us-central1 # 3. Create and activate a new virtual environment python3 -m venv .venv source .venv/bin/activate # 4. Install poetry and project dependencies pip install poetry poetry install # 5. Start ADK Web adk web

Temsilciyi deneyin
Özel temsilcinizle sohbet ederek akışı doğrulayın.
- İnternet tarayıcınızda ADK web sitesini açın.
- Sohbette
Please find my meetings for today, I need their titles and linksyazıpentertuşuna basın. - Aracı, kullanıcının hesabına bağlı olarak Takvim etkinliklerinin listesiyle yanıt verir.
- Sohbette
Please send a Chat message to someone@example.com with the following text: Hello!yazıpentertuşuna basın. - Temsilci, onay mesajıyla yanıt verir.


5. Google Workspace eklentisi olarak Agent
Bu aracı, kullanıcıların Workspace uygulaması kullanıcı arayüzleri bağlamında doğal dillerini kullanarak Workspace verilerinde arama yapmasına olanak tanır. Aşağıdaki öğelerden yararlanır:
- Model: Gemini
- Veriler ve işlemler: Google Workspace (Takvim, Gmail, Drive) için Vertex AI veri depoları, Google tarafından yönetilen Vertex AI Search Model Context Protocol (MCP) sunucusu, Google Chat mesajları göndermek için özel araç işlevi (Google Chat API aracılığıyla).
- Temsilci oluşturma araçları: Temsilci Geliştirme Kiti (ADK).
- Aracı ana makinesi: Vertex AI Agent Engine.
- Kullanıcı arayüzü: Chat ve Gmail için Google Workspace eklentisi (Takvim, Drive, Dokümanlar, E-Tablolar ve Slaytlar'a kolayca genişletilebilir).
- Google Workspace eklentisi: Apps Komut Dosyası, Vertex AI Agent Engine API'leri, bağlamsal (seçili Gmail iletisi).
Kavramları inceleme
Google Workspace eklentisi
Google Workspace eklentisi, bir veya daha fazla Google Workspace uygulamasını (Gmail, Chat, Takvim, Dokümanlar, Drive, Meet, E-Tablolar ve Slaytlar) genişleten özelleştirilmiş bir uygulamadır.
Apps Komut Dosyası
Apps Komut Dosyası, Google Drive tarafından desteklenen bulut tabanlı bir JavaScript platformudur. Bu platform, Google ürünlerinde görevleri entegre etmenize ve otomatikleştirmenize olanak tanır.
Google Workspace Card framework'ü
Google Workspace'teki Kart çerçevesi, geliştiricilerin zengin ve etkileşimli kullanıcı arayüzleri oluşturmasına olanak tanır. Metin, resim, düğme ve diğer widget'ları içeren düzenli ve görsel açıdan çekici kartlar oluşturulmasına olanak tanır. Bu kartlar, yapılandırılmış bilgiler sağlayarak ve doğrudan Workspace uygulamalarında hızlı işlemler yapılmasına olanak tanıyarak kullanıcı deneyimini iyileştirir.
Çözüm mimarisini inceleme

Kaynak kodunu inceleme
Ajan
agent.py
Aşağıdaki kod, Vertex AI ile kimlik doğrulaması yapar, Vertex AI Search MCP ve Chat API araçlarını başlatır ve aracının davranışını tanımlar.
- Kimlik doğrulama: İstemcinin yerleştirdiği kimlik doğrulama jetonunu (
CLIENT_AUTH_NAME) almak için yardımcı bir işlev (_get_access_token_from_context) kullanır. Bu jeton, Vertex AI Search MCP ve Google Chat araçları gibi aşağı akış hizmetlerinin güvenli bir şekilde çağrılması için çok önemlidir. - Araç Kurulumu: Vertex AI Search Model Context Protocol (MCP) sunucusuna bağlanan bir araç seti olan
vertexai_mcpvesend_direct_messagearacını başlatır. Bu sayede temsilci, bağlı veri depolarınızda arama yapabilir ve Google Chat mesajları gönderebilir. - Agent Definition:
gemini-2.5-flashmodelini kullanarakroot_agenttanımlar. Talimatlar, temsilciye bilgi alma için arama aracını, işlemler için isesend_direct_messagearacını kullanmaya öncelik vermesini söyler. Bu sayede temsilci, kurumsal verilerinizle etkili bir şekilde temellendirilir.
...
MODEL = "gemini-2.5-flash"
# Client injects a bearer token into the ToolContext state.
# The key pattern is "CLIENT_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
CLIENT_AUTH_NAME = "enterprise-ai"
VERTEXAI_SEARCH_TIMEOUT = 15.0
def get_project_id():
"""Fetches the consumer project ID from the environment natively."""
_, project = google.auth.default()
if project:
return project
raise Exception(f"Failed to resolve GCP Project ID from environment.")
def find_serving_config_path():
"""Dynamically finds the default serving config in the engine."""
project_id = get_project_id()
engines = discoveryengine_v1.EngineServiceClient().list_engines(
parent=f"projects/{project_id}/locations/global/collections/default_collection"
)
for engine in engines:
# engine.name natively contains the numeric Project Number
return f"{engine.name}/servingConfigs/default_serving_config"
raise Exception(f"No Discovery Engines found in project {project_id}")
def _get_access_token_from_context(tool_context: ToolContext) -> str:
"""Helper method to dynamically parse the intercepted bearer token from the context state."""
escaped_name = re.escape(CLIENT_AUTH_NAME)
pattern = re.compile(fr"^{escaped_name}_\d+$")
# Handle ADK varying state object types (Raw Dict vs ADK State)
state_dict = tool_context.state.to_dict() if hasattr(tool_context.state, 'to_dict') else tool_context.state
matching_keys = [k for k in state_dict.keys() if pattern.match(k)]
if matching_keys:
return state_dict.get(matching_keys[0])
raise Exception(f"No bearer token found in ToolContext state matching pattern {pattern.pattern}")
def auth_header_provider(tool_context: ToolContext) -> dict[str, str]:
token = _get_access_token_from_context(tool_context)
return {"Authorization": f"Bearer {token}"}
def send_direct_message(email: str, message: str, tool_context: ToolContext) -> dict:
"""Sends a Google Chat Direct Message (DM) to a specific user by email address."""
chat_client = chat_v1.ChatServiceClient(
credentials=Credentials(token=_get_access_token_from_context(tool_context))
)
# 1. Setup the DM space or find existing one
person = chat_v1.User(
name=f"users/{email}",
type_=chat_v1.User.Type.HUMAN
)
membership = chat_v1.Membership(member=person)
space_req = chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE)
setup_request = chat_v1.SetUpSpaceRequest(
space=space_req,
memberships=[membership]
)
space_response = chat_client.set_up_space(request=setup_request)
space_name = space_response.name
# 2. Send the message
msg = chat_v1.Message(text=message)
message_request = chat_v1.CreateMessageRequest(
parent=space_name,
message=msg
)
message_response = chat_client.create_message(request=message_request)
return {"status": "success", "message_id": message_response.name, "space": space_name}
vertexai_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://discoveryengine.googleapis.com/mcp",
timeout=VERTEXAI_SEARCH_TIMEOUT,
sse_read_timeout=VERTEXAI_SEARCH_TIMEOUT
),
tool_filter=['search'],
# The auth_header_provider dynamically injects the bearer token from the ToolContext
# into the MCP call for authentication.
header_provider=auth_header_provider
)
# Answer nicely the following user queries:
# - Please find my meetings for today, I need their titles and links
# - What is the latest Drive file I created?
# - What is the latest Gmail message I received?
# - Please send the following message to someone@example.com: Hello, this is a test message.
root_agent = LlmAgent(
model=MODEL,
name='enterprise_ai',
instruction=f"""
You are a helpful assistant that always uses the Vertex AI MCP search tool to answer the user's message, unless the user asks you to send a message to someone.
If the user asks you to send a message to someone, use the send_direct_message tool to send the message.
You MUST unconditionally use the Vertex AI MCP search tool to find answer, even if you believe you already know the answer or believe the Vertex AI MCP search tool does not contain the data.
The Vertex AI MCP search tool accesses the user's data through datastores including Google Drive, Google Calendar, and Gmail.
Only use the Vertex AI MCP search tool with servingConfig and query parameters, do not use any other parameters.
Always use the servingConfig {find_serving_config_path()} while using the Vertex AI MCP search tool.
""",
tools=[vertexai_mcp, FunctionTool(send_direct_message)]
)
İstemci
appsscript.json
Aşağıdaki yapılandırmada, eklentinin tetikleyicileri ve izinleri tanımlanmaktadır.
- Eklentiyi tanımlar: Workspace'e bu projenin hem Chat hem de Gmail için bir eklenti olduğunu bildirir.
- Bağlamsal Tetikleyiciler: Gmail için, kullanıcı bir e-posta iletisini her açtığında
onAddonEventtetiklenen bircontextualTriggeroluşturur. Bu sayede eklenti, e-posta içeriğini "görebilir". - İzinler: Eklentinin çalışması için gereken
oauthScopeslistelenir. Örneğin, mevcut e-postayı okuma, komut dosyasını yürütme ve harici hizmetlere (Vertex AI API'leri gibi) bağlanma izinleri.
...
"addOns": {
"common": {
"name": "Vertex AI",
"logoUrl": "https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png"
},
"chat": {},
"gmail": {
"contextualTriggers": [
{
"unconditional": {},
"onTriggerFunction": "onAddonEvent"
}
]
}
},
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
]
...
Chat.gs
Aşağıdaki kod, gelen Google Chat mesajlarını işler.
- Mesaj Alır:
onMessageişlevi, mesaj etkileşimlerinin giriş noktasıdır. - Bağlamı Yönetir:
space.name(Chat alanının kimliği) kullanıcı özelliklerine kaydedilir. Bu sayede, temsilci yanıt vermeye hazır olduğunda mesajı hangi görüşmeye göndereceğini tam olarak bilir. - Delegates to Agent:
requestAgentişlevini çağırarak kullanıcının mesajını, API iletişimiyle ilgilenen temel mantığa iletir.
...
// Service that handles Google Chat operations.
// Handle incoming Google Chat message events, actions will be taken via Google Chat API calls
function onMessage(event) {
if (isInDebugMode()) {
console.log(`MESSAGE event received (Chat): ${JSON.stringify(event)}`);
}
// Extract data from the event.
const chatEvent = event.chat;
setChatConfig(chatEvent.messagePayload.space.name);
// Request AI agent to answer the message
requestAgent(chatEvent.messagePayload.message);
// Respond with an empty response to the Google Chat platform to acknowledge execution
return null;
}
// --- Utility functions ---
// The Chat direct message (DM) space associated with the user
const SPACE_NAME_PROPERTY = "DM_SPACE_NAME"
// Sets the Chat DM space name for subsequent operations.
function setChatConfig(spaceName) {
const userProperties = PropertiesService.getUserProperties();
userProperties.setProperty(SPACE_NAME_PROPERTY, spaceName);
console.log(`Space is set to ${spaceName}`);
}
// Retrieved the Chat DM space name to sent messages to.
function getConfiguredChat() {
const userProperties = PropertiesService.getUserProperties();
return userProperties.getProperty(SPACE_NAME_PROPERTY);
}
// Finds the Chat DM space name between the Chat app and the given user.
function findChatAppDm(userName) {
return Chat.Spaces.findDirectMessage(
{ 'name': userName },
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
// Creates a Chat message in the configured space.
function createMessage(message) {
const spaceName = getConfiguredChat();
console.log(`Creating message in space ${spaceName}...`);
return Chat.Spaces.Messages.create(
message,
spaceName,
{},
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
Sidebar.gs
Aşağıdaki kod, Gmail kenar çubuğunu oluşturur ve e-posta bağlamını yakalar.
- Kullanıcı arayüzünü oluşturur:
createSidebarCard, Workspace Card Service'i kullanarak görsel arayüzü oluşturur. Metin girişi alanı ve "Mesaj gönder" düğmesi içeren basit bir düzen oluşturur. - E-posta bağlamını yakalar:
handleSendMessageiçinde kod, kullanıcının şu anda bir e-postaya (event.gmail.messageId) bakıp bakmadığını kontrol eder. Bakıyorsa e-postanın konusunu ve gövdesini güvenli bir şekilde getirip kullanıcının istemine ekler. - Sonucu Gösterir: Temsilci yanıt verdiğinde kod, yanıtı göstermek için kenar çubuğu kartını günceller.
...
// Service that handles Gmail operations.
// Triggered when the user opens the Gmail Add-on or selects an email.
function onAddonEvent(event) {
// If this was triggered by a button click, handle it
if (event.parameters && event.parameters.action === 'send') {
return handleSendMessage(event);
}
// Otherwise, just render the default initial sidebar
return createSidebarCard();
}
// Creates the standard Gmail sidebar card consisting of a text input and send button.
// Optionally includes an answer section if a response was generated.
function createSidebarCard(optionalAnswerSection) {
const card = CardService.newCardBuilder();
const actionSection = CardService.newCardSection();
// Create text input for the user's message
const messageInput = CardService.newTextInput()
.setFieldName("message")
.setTitle("Message")
.setMultiline(true);
// Create action for sending the message
const sendAction = CardService.newAction()
.setFunctionName('onAddonEvent')
.setParameters({ 'action': 'send' });
const sendButton = CardService.newTextButton()
.setText("Send message")
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setOnClickAction(sendAction);
actionSection.addWidget(messageInput);
actionSection.addWidget(CardService.newButtonSet().addButton(sendButton));
card.addSection(actionSection);
// Attach the response at the bottom if we have one
if (optionalAnswerSection) {
card.addSection(optionalAnswerSection);
}
return card.build();
}
// Handles clicks from the Send message button.
function handleSendMessage(event) {
const commonEventObject = event.commonEventObject || {};
const formInputs = commonEventObject.formInputs || {};
const messageInput = formInputs.message;
let userMessage = "";
if (messageInput && messageInput.stringInputs && messageInput.stringInputs.value.length > 0) {
userMessage = messageInput.stringInputs.value[0];
}
if (!userMessage || userMessage.trim().length === 0) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Please enter a message."))
.build();
}
let finalQueryText = `USER MESSAGE TO ANSWER: ${userMessage}`;
// If we have an email selected in Gmail, append its content as context
if (event.gmail && event.gmail.messageId) {
try {
GmailApp.setCurrentMessageAccessToken(event.gmail.accessToken);
const message = GmailApp.getMessageById(event.gmail.messageId);
const subject = message.getSubject();
const bodyText = message.getPlainBody() || message.getBody();
finalQueryText += `\n\nEMAIL THE USER HAS OPENED ON SCREEN:\nSubject: ${subject}\nBody:\n---\n${bodyText}\n---`;
} catch (e) {
console.error("Could not fetch Gmail context: " + e);
// Invalidate the token explicitly so the next prompt requests the missing scopes
ScriptApp.invalidateAuth();
CardService.newAuthorizationException()
.setResourceDisplayName("Enterprise AI")
.setAuthorizationUrl(ScriptApp.getAuthorizationUrl())
.throwException();
}
}
try {
const response = queryAgent({ text: finalQueryText });
// We leverage the 'showdown' library to parse the LLM's Markdown output into HTML
// We also substitute markdown listings with arrows and adjust newlines for clearer rendering in the sidebar
let displayedText = substituteListingsFromMarkdown(response.text);
displayedText = new showdown.Converter().makeHtml(displayedText).replace(/\n/g, '\n\n');
const textParagraph = CardService.newTextParagraph();
textParagraph.setText(displayedText);
const answerSection = CardService.newCardSection()
.addWidget(textParagraph);
const updatedCard = createSidebarCard(answerSection);
return CardService.newActionResponseBuilder()
.setNavigation(CardService.newNavigation().updateCard(updatedCard))
.build();
} catch (err) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Error fetching response: " + err.message))
.build();
}
}
...
AgentHandler.gs
Aşağıdaki kod, Vertex AI'ye yapılan API çağrısını düzenler.
- API çağrısını düzenler:
queryAgent, eklentiniz ile Vertex AI Agent Engine arasındaki köprüdür. Kullanıcının sorgusunu ve durumdaki kimlik doğrulama jetonunu içeren bir istek oluşturur. - Yanıtı Yayınlar: Aracı yanıtları biraz zaman alabileceğinden, sunucu tarafından gönderilen etkinliklerle (SSE)
streamQueryAPI'sini kullanır. Kod, yanıtı parçalar halinde toplar ve tam yanıtı yeniden oluşturur.
...
// Service that handles Vertex AI Agent operations.
// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead." +
" Do not ask the user follow-up questions or converse with them as history is not kept in this interface." +
" SYSTEM PROMPT END\n\n";
const requestPayload = {
"class_method": "async_stream_query",
"input": {
"user_id": "vertex_ai_add_on",
"message": { "role": "user", "parts": [{ "text": systemPrompt + input.text }] },
"state_delta": {
"enterprise-ai_999": `${ScriptApp.getOAuthToken()}`
}
}
};
const responseContentText = UrlFetchApp.fetch(
`https://${getLocation()}-aiplatform.googleapis.com/v1/${getReasoningEngine()}:streamQuery?alt=sse`,
{
method: 'post',
headers: { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}` },
contentType: 'application/json',
payload: JSON.stringify(requestPayload),
muteHttpExceptions: true
}
).getContentText();
if (isInDebugMode()) {
console.log(`Response: ${responseContentText}`);
}
const events = responseContentText.split('\n').map(s => s.replace(/^data:\s*/, '')).filter(s => s.trim().length > 0);
console.log(`Received ${events.length} agent events.`);
let author = "default";
let answerText = "";
for (const eventJson of events) {
if (isInDebugMode()) {
console.log("Event: " + eventJson);
}
const event = JSON.parse(eventJson);
// Retrieve the agent responsible for generating the content
author = event.author;
// Ignore events that are not useful for the end-user
if (!event.content) {
console.log(`${author}: internal event`);
continue;
}
// Handle text answers
const parts = event.content.parts || [];
const textPart = parts.find(p => p.text);
if (textPart) {
answerText += textPart.text;
}
}
return { author: author, text: answerText };
}
...
Vertex AI Agent Engine'de temsilci dağıtma
- Bir terminalde, önceki adımlarda indirilen kaynaklardan
solutions/enterprise-ai-agentdizinini açın ve ardından şunu çalıştırın:
# 1. Create and activate a new virtual environment deactivate python3 -m venv .venv source .venv/bin/activate # 2. Install poetry and project dependencies pip install poetry poetry install # 3. Deploy the agent adk deploy agent_engine \ --project=$(gcloud config get-value project) \ --region=us-central1 \ --display_name="Enterprise AI" \ enterprise_ai

- Günlüklerde Deploying to agent engine... (Aracı motoruna dağıtılıyor...) satırını gördüğünüzde yeni bir terminal açın ve Vertex AI Reasoning Engine Service Agent'a gerekli izinleri eklemek için aşağıdaki komutu çalıştırın:
# 1. Get the current Project ID
PROJECT_ID=$(gcloud config get-value project)
# 2. Extract the Project Number for that ID
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
# 3. Construct the Service Account name
SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 4. Apply the IAM policy binding
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/discoveryengine.viewer"
- adk deploy komutunun tamamlanmasını bekleyin, ardından yeni dağıtılan aracının kaynak adını komut çıkışındaki yeşil renkteki kısımdan kopyalayın.

Hizmet hesabını başlatma
Eklentinin sunucu tarafı işlemlerini yetkilendirmek için özel bir hizmet hesabı oluşturun.
Google Cloud Console'da şu adımları uygulayın:
- Menü ☰ > IAM ve Yönetici > Hizmet Hesapları > + Hizmet hesabı oluştur'u tıklayın.
- Hizmet hesabı adı'nı
vertexai-add-onolarak ayarlayın.

- Bitti'yi tıklayın. Hizmet hesapları sayfasına yönlendirilirsiniz ve oluşturduğunuz hizmet hesabını görebilirsiniz.

- Yeni oluşturulan hizmet hesabını ve ardından Anahtarlar sekmesini seçin.
- Anahtar ekle'yi ve ardından Yeni anahtar oluştur'u tıklayın.
- JSON'ı seçip Oluştur'u tıklayın.

- İletişim kutusu kapanır ve yeni oluşturulan herkese açık/özel anahtar çiftiniz JSON dosyası olarak yerel ortamınıza otomatik olarak indirilir.
Apps Komut Dosyası projesi oluşturma ve yapılandırma
Eklenti kodunu barındırmak için yeni bir Apps Komut Dosyası projesi oluşturun ve bağlantı özelliklerini yapılandırın.
- Enterprise AI eklentisi Apps Komut Dosyası projesini açmak için aşağıdaki düğmeyi tıklayın:
- Genel bakış > Kopya oluştur'u tıklayın.
- Apps Komut Dosyası projenizde, komut dosyası özellikleri eklemek için Proje Ayarları > Komut dosyası özelliklerini düzenle > Komut dosyası özelliği ekle'yi tıklayın.
- REASONING_ENGINE_RESOURCE_NAME değerini, önceki adımlarda kopyalanan Vertex AI aracısı kaynak adı olarak ayarlayın. Şu biçimdedir:
projects/<PROJECT_NUMBER>/locations/us-central1/reasoningEngines/<AGENT_ID>
- APP_SERVICE_ACCOUNT_KEY değişkenini, önceki adımlarda indirilen hizmet hesabı dosyasındaki JSON anahtarı olarak ayarlayın.
- Komut dosyası özelliklerini kaydet'i tıklayın.
Gmail ve Chat'e dağıtma
Eklentiyi doğrudan Gmail ve Google Chat'te test etmek için dağıtın.
Apps Komut Dosyası projenizde şu adımları uygulayın:
- Dağıt > Test dağıtımları'nı ve ardından Yükle'yi tıklayın. Bu özellik artık Gmail'de kullanılabilir.
- Ana Dağıtım Kimliği bölümünde Kopyala'yı tıklayın.

Google Cloud Console'da şu adımları uygulayın:
- Google Cloud arama alanında
Google Chat APIifadesini arayın, Google Chat API'yi, Yönet'i ve Yapılandırma'yı tıklayın.
- Etkileşimli özellikleri etkinleştir'i seçin.
- Alanlara ve grup görüşmelerine katıl'ın seçimini kaldırın.
- Bağlantı ayarları bölümünde Apps Komut Dosyası'nı seçin.
- Deployment ID (Dağıtım Kimliği) değerini, önceki adımlarda kopyalanan Head Deployment ID (Ana Dağıtım Kimliği) olarak ayarlayın.
- Görünürlük bölümünde Bu Sohbet uygulamasını Workspace alanınızdaki belirli kişiler ve gruplar için kullanılabilir hale getir'i seçip e-posta adresinizi girin.
- Kaydet'i tıklayın.

Eklentiyi deneyin
Canlı eklentinizle etkileşime geçerek veri getirebildiğini ve soruları bağlam içinde yanıtlayabildiğini doğrulayın.
Google Chat'i yeni bir sekmede açın ve aşağıdaki adımları uygulayın:
- Chat uygulaması Vertex AI ile doğrudan mesajlaşma alanı açın.

- Yapılandır'ı tıklayın ve kimlik doğrulama akışını tamamlayın.
What are my meetings for today?yazıpentertuşuna basın. Vertex AI Chat uygulaması sonuçlarla yanıt vermelidir.

Yeni bir sekmede Gmail'i açın ve aşağıdaki adımları uygulayın:
- Konu alanı
We need to talk, Metin alanıAre you available today between 8 and 9 AM?olarak ayarlanmış bir e-postayı kendinize gönderin. - Yeni alınan e-posta iletisini açın.
- Vertex AI eklenti kenar çubuğunu açın.
- Mesaj'ı
Do I have any meeting conflicts?olarak ayarlayın. - İleti gönder'i tıklayın.
- Yanıt, düğmenin altında gösterilir.

6. Temizleme
Google Cloud projesini silme
Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek istiyorsanız Google Cloud projesini silmenizi öneririz.
Google Cloud Console'da şu adımları uygulayın:
- Menü ☰ > IAM ve Yönetici > Ayarlar'ı tıklayın.
- Kapat'ı tıklayın.
- Proje kimliğini girin.
- Yine de kapat'ı tıklayın.

7. Tebrikler
Tebrikler! Vertex AI ve Google Workspace'i çalışanlar için daha yakın hale getirmenin gücünden yararlanan çözümler geliştirdiniz.
Sırada ne var?
Bu codelab'de yalnızca en tipik kullanım alanlarını gösteriyoruz ancak çözümlerinizde dikkate almak isteyebileceğiniz birçok genişleme alanı var. Örneğin:
- Gemini CLI ve Antigravity gibi yapay zeka destekli geliştirici araçlarını kullanın.
- Özel MCP'ler, özel işlev çağrıları ve üretken kullanıcı arayüzleri gibi diğer aracı çerçeveleri ve araçlarla entegrasyon.
- Vertex AI gibi özel platformalarda barındırılan özel modeller de dahil olmak üzere diğer yapay zeka modelleriyle entegre edin.
- Dialogflow gibi özel platformlarda veya Cloud Marketplace üzerinden üçüncü taraflarca barındırılan diğer aracılarla entegrasyon.
- Ekipleri, kuruluşları veya genel kullanıcıları desteklemek için Cloud Marketplace'te aracıları yayınlayın.
Daha fazla bilgi
Geliştiriciler için YouTube videoları, doküman web siteleri, kod örnekleri ve eğitimler gibi birçok kaynak mevcuttur:
- Google Cloud Geliştirici Merkezi
- Desteklenen ürünler | Google Cloud MCP sunucuları
- A2UI
- Vertex AI'daki Model Garden | Google Cloud
- Vertex AI Agent Engine'e genel bakış
- Yanıt alma ve takip etme | Vertex AI Search | Google Cloud Dokümanları
- Google Cloud Marketplace üzerinden yapay zeka aracı sunma
- Google Workspace Developers YouTube kanalı - Welcome Developers!
- Google Workspace Developers Website (Google Workspace Geliştiricileri Web Sitesi)
- Tüm Google Workspace eklenti örneklerinin bulunduğu GitHub deposu

