1. Başlamadan önce
Yapay zeka destekli Google Chat uygulamaları nedir?
Yapay zeka destekli Google Chat uygulamaları şunları yapar:
- Hizmetlerinizi ve kaynaklarınızı Google Chat'e taşıyın. Böylece kullanıcılar, görüşmeden ayrılmadan bilgi alabilir ve işlem yapabilir.
- Metin veya resim gibi verileri oluşturmak, aramak ve düzenlemek için üretken yapay zeka modelleriyle entegrasyon
- Daha pratik, doğal, gelişmiş ve faydalı etkileşimler için etkileşimli yapay zeka kavramlarını uygulayarak ajan tabanlı bir deneyimi destekleyin.
Google Chat uygulamaları neden yapay zeka ile entegre edilmelidir?
Tipik kullanım alanları aşağıdaki kategorilere girer:
- İçerik oluşturma ve düzenleme. Pazarlama metinleri oluşturma, sosyal medya gönderileri hazırlama, gerçekçi görüntüler oluşturma, müzik besteleme veya video içeriklerinin oluşturulmasına yardımcı olma
- Veri arama ve analiz. Yapılandırılmamış bir bilgi tabanından önemli analizler elde edin, uzun metinleri özetleyin, içerikleri sınıflandırın veya dilleri daha doğru ve hızlı bir şekilde çevirin.
- Görüşme Bir asistanla konuşur gibi doğal, bilgilendirici ve verimli sohbetler edin.
- Görev otomasyonu. Kullanıcı adına işlem yapma (ör. yeni bir takvim etkinliği oluşturma, doküman gönderme veya harici bir sistemdeki bileti yönetme)
Bu özellikleri doğrudan Google Chat'in tanıdık arayüzüne entegre edebilme olanağı, kullanıcılarının deneyimini ve üretkenliğini artırmak isteyen herkes için büyük bir fırsattır.
Ön koşullar
- Google Cloud ve Node.js hakkında temel bilgiler
- Google Chat uygulamaları (mesajlar, kartlar, kimlik doğrulama, API'ler ve HTTP uç noktaları dahil) hakkında temel bilgiler.
Oluşturacağınız içerikler
Bu codelab'de, temel yapay zeka kavramlarını entegre eden sekiz minimalist Google Chat uygulaması oluşturarak bu kavramların gerçek dünya uygulamalarında nasıl kullanılabileceğini göstereceksiniz. Tümü Google Workspace eklentisi olarak oluşturulur ve HTTP mimarisini kullanır:

İşleyiş şekli şöyledir:
- Bir kullanıcı, Google Chat'te bir sohbet uygulamasına doğrudan mesaj yoluyla ya da bir Chat alanında mesaj gönderir.
- Sohbet uygulaması mantığını içeren Node.js Google Cloud Run işlevi olarak çalışan web sunucusuna bir HTTP isteği gönderilir.
- İsteğe bağlı olarak, sohbet uygulaması mantığı Google Workspace hizmetleriyle (ör. Takvim ve E-Tablolar), diğer Google hizmetleriyle (ör. Haritalar, YouTube ve Vertex AI) veya diğer web hizmetleriyle (ör. proje yönetim sistemi ya da destek kaydı aracı) entegre edilebilir.
- Web sunucusu, Chat'teki sohbet uygulaması hizmetine bir HTTP yanıtı geri gönderir.
- Yanıt, kullanıcıya iletilir.
- İsteğe bağlı olarak, sohbet uygulaması mesajları asenkron olarak yayınlamak veya başka işlemler gerçekleştirmek için Chat API'yi çağırabilir.
Her Google Chat uygulamasının Node.js Google Cloud Run işlevi, yukarıdaki 3. ve 6. adımlarda gerekli işlemleri yapmak için aşağıdaki kaynak dosyaların kendi sürümünü içerir:
package.json: Node.js projesi için plan görevi gören merkezi bir bildirim. Meta verileri, bağımlılıkları ve komut dosyalarını tanımlamak için kullanılır.env.js: Yürütme için gerekli sabitleri ayarlayan bir komut dosyası. Ortama ve yapılandırmaya göre düzenlenmelidir.index.js:Google Chat etkileşim etkinliklerinin mantığını işleyen ana komut dosyası. Bu codelab'de yalnızca mesaj etkinliği türü uygulanır ancak gerçek hayattaki uygulamalarda genellikle kart tıklama, eğik çizgi komutu ve iletişim kutusu gibi diğer türler de yer alır.
İstem uygulaması
Bu uygulama, kısa ve net metin yanıtları kullanarak kullanıcılarla doğal dillerinde sohbet etmek için bir Gemini modelini kullanır.

Biçimlendirme uygulaması
Bu uygulama, Prompt app üzerine kurulmuştur ve Google Chat mesajlarının belirli metin biçimine uygun zengin metin yanıtları için destek ekler.

Ground uygulaması
Bu uygulama, Format app üzerine kurulmuştur. Google Arama Aracı desteği ekler ve yanıt mesajlarındaki kaynakları kartlarla birlikte döndürür.

MCP uygulaması
Bu uygulama, Format app üzerine kurulmuş olup Google Workspace Developer Assist Model Context Protocol (MCP) desteği eklenmiştir.

Çok turlu uygulama
Bu uygulama, Format app üzerine kurulmuş olup Google Cloud Firestore veri tabanı ile etkileşimli hafıza desteği ekler.

Özel araç uygulaması
Bu uygulama, kullanıcı tarafından sağlanan bilgilere göre Google Workspace Takvim API'sini çağıran bir işlev çağrısı özel aracı desteği ekleyerek Multi-turn app üzerine kurulmuştur.

Stream uygulaması
Bu uygulama, kullanıcılar tarafından sağlanan temalara dayalı kısa hikayeler oluşturmak için bir Gemini modelini kullanır. Google Chat API, ilerleme kaydedildikçe sonuçları ve durumları mesaj olarak göndermek için kullanılır.

Çok formatlı uygulama
Bu uygulama, kullanıcıların metin talimatlarına göre resimleri düzenlemek için bir Gemini modelini kullanır. Google Chat API'leri, resimleri mesaj eki olarak indirmek ve yüklemek için kullanılır.

Öğrenecekleriniz
- Temel yapay zeka kavramları, Google Chat uygulamaları ve bunların nasıl uygulanacağıyla ilgilidir.
- Google Gen AI SDK'yı kullanarak Vertex AI'ye erişmek için.
- Google Workspace API'lerini kullanarak ilgi çekici ve güçlü özellikler geliştirmek için.
- Ölçeklenebilir Google Chat uygulamaları oluşturmak için Cloud Run'dan yararlanma
İhtiyacınız olanlar
- Node.js ile HTTP Google Chat uygulaması oluşturma hızlı başlangıç kılavuzunu tamamlama. Bu codelab, ortaya çıkan Google Cloud projesi, Google Chat sohbet uygulaması ve Google Cloud Run işlevini temel alır.
2. Hazırlanın
Kaynakları başlatma ve kaynaklara erişme
Bu bölümde, tercih ettiğiniz web tarayıcısından aşağıdaki kaynaklara erişip bunları yapılandıracaksınız.
Google Chat API yapılandırması
Google Cloud Console'u yeni bir sekmede açın ve şu adımları uygulayın:
- Projenizi seçin.
- Google Cloud arama alanında "Google Chat API"yi arayın, ardından Google Chat API'yi, Yönet'i ve Yapılandırma'yı tıklayın.
- Uygulama adı ve Açıklama'yı
Gen AI Appolarak ayarlayın. - Kaydet'i tıklayın.

Google Chat alanı
Google Chat'i yeni bir sekmede açın ve aşağıdaki adımları uygulayın:
- Henüz yapmadıysanız sohbet uygulamasıyla doğrudan mesajlaşma alanı açın.
Helloyazıpentertuşuna basın. Sohbet uygulaması, adınız ve avatar resminizle yanıt verir.

Google Cloud Run işlev hizmeti
Google Cloud Console'u yeni bir sekmede açın ve şu adımları uygulayın:
- Projenizi seçin.
- Menü ☰ > Cloud Run > Hizmetler'i tıklayın.
- Hizmetler listesinde addonchatapp'i tıklayın, ardından Kaynak sekmesini açın.

Kaynak kodu ve kaynakları yerel olarak indirme
- Bu GitHub deposunu indirin.
- Tercih ettiğiniz yerel geliştirme ortamında
node/chat/gen-ai-appsdizinini açın.

3. İstem uygulaması
Bu uygulama, Vertex AI'daki Gemini'ı kısa ve net metin yanıtları kullanarak kullanıcılarla doğal dillerinde sohbet etmeye yönlendirir. Uygulama, Node.js için Google Gen AI SDK'sını kullanır.
Kavramları inceleme
Doğal dil
Yapay veya bilgisayar tabanlı dillerin aksine, insanların günlük iletişim için konuştuğu veya yazdığı herhangi bir dil.
Cloud Run işlevleri
Cloud Run işlevleri, sunucusuz arka uçlar oluşturmak, gerçek zamanlı veri işleme yapmak ve akıllı uygulamalar oluşturmak için idealdir. Sağlama, yönetim, yama uygulama veya güncelleme için sunucu gerekmez. Otomatik olarak ölçeklendirilir, yüksek düzeyde kullanılabilir ve hatadan etkilenmez.
İstem
İstem mühendisliği, üretken yapay zeka modelini istenen çıkışı üretmeye yönlendirmek için giriş (istem) oluşturma tekniğini ifade eder. Genellikle modelden belirli ve alakalı yanıtlar almak için soruları dikkatli bir şekilde ifade etmeyi, bağlam sağlamayı, talimat vermeyi veya örnekler vermeyi içerir.
Vertex AI
Vertex AI; yapay zeka çözümleri, arama ve sohbet, 130'dan fazla temel model ve birleşik yapay zeka platformu dahil olmak üzere üretken yapay zeka oluşturmak ve kullanmak için ihtiyacınız olan her şeyi sunar.

Gemini
Gemini, Vertex AI üzerinden erişilebilen, Google'ın çok formatlı bir LLM'sidir. Kullanıcıların hayal güçlerini artırmalarına, meraklarını genişletmelerine ve üretkenliklerini geliştirmelerine yardımcı olarak potansiyellerini ortaya çıkarmalarını sağlar.
Google Gen AI SDK
Google Gen AI SDK, geliştiricilerin Gemini destekli uygulamalar oluşturması için tasarlanmıştır. Hem Gemini Developer API hem de Vertex AI ile uyumlu birleşik bir arayüz sunar. Python, Go, Node.js ve Java için istemci kitaplıklarıyla birlikte gelir.
İnceleme akışı

Kaynak kodunu inceleme
env.js
...
// Replace with your GCP project ID.
projectID: process.env.PROJECT_ID || 'your-google-cloud-project-id',
// Replace with your GCP project location.
location: process.env.LOCATION || 'your-google-cloud-project-location',
// Replace with the Gemini model to use.
model: process.env.MODEL || 'gemini-2.5-flash-lite',
...
index.js
// Import the Google Gen AI SDK.
import { GoogleGenAI } from '@google/genai';
...
// Use Vertex AI.
const genAI = new GoogleGenAI({vertexai: true, project: env.projectID, location: env.location});
http('gen-ai-app', async (req, res) => {
// Send a new Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: await generateAnswer(req.body.chat.messagePayload.message.text)
}}}}});
});
async function generateAnswer(message) {
// The prompt is made of the user's message and specific instructions for the model.
const prompt = 'In a consice and with plain text only (no formatting), '
+ 'answer the following message in the same language: ' + message;
const aiResponse = await genAI.models.generateContent({model: env.model, contents: prompt});
return aiResponse.candidates[0].content.parts[0].text;
};
...
package.json
...
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@google-cloud/functions-framework": "^4.0.0",
"@google/genai": "1.15.0"
},
...
Vertex AI API'yi etkinleştirme
- Google Cloud Console'da Vertex AI API'yi etkinleştirin:
- Menü ☰ > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler'i tıklayın ve Vertex AI API'nin listede olduğunu doğrulayın.
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/1-promptolarak değiştirin. Tüm kaynak kodu ve kaynakları içerir. env.jsdosyasını bir düzenleyicide açın ve aşağıdakileri ayarlayın:- projectID: Google Cloud projenizin kimliği. Bu anahtarı Google Cloud Console karşılama sayfasından alabilirsiniz.
- location: Google Cloud Run işlevi hizmetinizin bölgesi. Google Cloud Run işlevi hizmeti ayrıntıları sayfasından alınabilir.
- model: Kullanılacak model. Kullanılabilir tüm modelleri Vertex AI belgelerinde bulabilirsiniz. Varsayılan olarak ayarlanan model seti, hızlı ve ucuz bir yürütme için Flash'tir.

- Google Cloud Run işlevi hizmet ayrıntıları sayfasının Kaynak sekmesine gidin.
- Kaynağı düzenle'yi tıklayın.
- İşlev giriş noktası'nı
gen-ai-appolarak ayarlayın. - ➕ simgesini tıklayın,
env.jsyazın ve eksik kaynak dosyasını oluşturmak için ✔️ simgesini tıklayın. index.js,env.jsvepackage.jsondosyalarının tüm içeriğini yerel geliştirme ortamınızdaki içeriklerle değiştirin.- Kaydet ve yeniden dağıt'ı tıklayın.
- Düzeltme dağıtımının başarıyla tamamlanmasını bekleyin.

Deneyin
- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
Hello, how are you?yazıpentertuşuna basın. Uygulama, istemdeki talimatlarımıza uygun olarak düz metinle kısa ve öz yanıt vermelidir.

- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
Bonjour comment allez-vous?yazıpentertuşuna basın. Uygulama, istemdeki talimatlarımıza göre Fransızca yanıt vermelidir.

4. Biçimlendirme uygulaması
Bu uygulama, Google Chat kısa mesaj biçimine uygun zengin metin yanıtları desteği ekleyerek Prompt app üzerine kurulmuştur. İstemdeki talimatlar, modelin kullanabileceği farklı seçeneklerin ayrıntılı açıklamasıyla güncellenir.
Kavramları inceleme
Google Chat kısa mesajları
Google Chat kısa mesajları, doğrudan Google Chat arayüzünde daha net ve etkileyici mesajlar göndermenize olanak tanıyan çeşitli biçimlendirme seçeneklerini destekler. Kalın, italik, üstü çizili gibi biçimlendirmeler uygulamak ve köprü oluşturmak için belirli Markdown kurallarına dayanır.
İnceleme akışı

Kaynak kodunu inceleme
index.js
...
async function generateAnswer(message) {
// Specify formatting options that are compatible with Google Chat messages
// https://developers.google.com/workspace/chat/format-messages#format-texts
const prompt = `Use simple text for concise answers. The only formatting options you can use is to
(1) surround some text with a single star for bold such as *text* for strong emphasis
(2) surround some text with a single underscore for italic such as _text_ for gentle emphasis
(3) surround some text with a single tild for strikethrough such as ~text~ for removal
(4) use a less than before followed by a URL followed by a pipe followed by a link text followed
by a more than for a hyperlink such as <https://example.com|link text> for resource referencing
(5) use a backslash followed by the letter n for a new line such as \n for readibility
(6) surround some text with a single backquote such as \`text\` for quoting code
(7) surround an entire paragraph with three backquotes in dedicated lines such as
\`\`\`\nparagraph\n\`\`\` for quoting code
(8) prepend lines with list items with a single star or hyphen followed by a single space
such as * list item or - list item for bulleting ;
DO NOT USE ANY OTHER FORMATTING OTHER THAN THOSE.
Answer the following message in the same language: ${message}`;
...
};
...
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/2-formatolarak değiştirin. Tüm kaynak kodu ve kaynakları içerir. - Google Cloud Run işlevi hizmet ayrıntıları sayfasının Kaynak sekmesine gidin.
- Kaynağı düzenle'yi tıklayın.
index.jsdosyasının tüm içeriğini yerel geliştirme ortamınızdaki içerikle değiştirin.- Kaydet ve yeniden dağıt'ı tıklayın.
- Düzeltme dağıtımının başarıyla tamamlanmasını bekleyin.

Deneyin
- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
Showcase all formatting options you have with one paragraph eachyazıpentertuşuna basın. Uygulama, istemdeki talimatlarımıza göre biçimlendirme örnekleriyle yanıt vermelidir.

- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
What are Google Chat apps? What's great about them?yazıpentertuşuna basın. Uygulama, yararlı olduğunda biçimlendirme yaparak yanıt vermelidir.

5. Ground uygulaması
Bu uygulama, Format app üzerine kurulmuş olup kaynakları temellendirme ve döndürme desteği ekler. Google Arama aracını çalıştırır ve yanıtlara giden bağlantıların bulunduğu kartları ekler.
Kavramları inceleme
Temellendirme (Grounding)
Temellendirme, modelleri bilgi kaynaklarına bağlama tekniğidir. Gerçek dünya verilerine referans vererek oluşturulan içeriğin doğruluğunu ve alaka düzeyini artırmak için pratik uygulamalarda sıklıkla kullanılır. Böylece modelin halüsinasyon görmesi veya gerçeğe aykırı bilgiler üretmesi önlenir.
Google Arama Aracı
Google Arama aracı, modellerin web'de gerçek zamanlı bilgi aramasına olanak tanıyarak temellendirmeyi geliştirir ve yanıtların doğru ve güncel olmasını sağlar.
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çerebilen 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 görüşme içinde hızlı işlemler yapılmasına olanak tanıyarak kullanıcı deneyimini iyileştirir.
Akışı inceleme

Kaynak kodunu inceleme
index.js
...
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: prompt,
// Google Search tool is enabled
config: { tools: [{ googleSearch: {}}]}
});
let groundingCardsV2 = undefined;
const grounding = aiResponse.candidates[0].groundingMetadata;
// Go through the grounding metadata if any
if (grounding && grounding.groundingChunks && grounding.groundingChunks.length > 0) {
let linkButtons = [];
grounding.groundingChunks.forEach(groundingChunk => {
if (groundingChunk.web) {
// Create one link button per web URL returned
linkButtons.push({
text: groundingChunk.web.domain,
onClick: { openLink: { url: groundingChunk.web.uri}}
});
}
});
// Create a card with link buttons
groundingCardsV2 = [{
cardId: "sourcesCard",
card: { sections: [{
header: "Sources",
widgets: [{ buttonList: { buttons: linkButtons}}]
}]}
}];
}
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text,
// The sources are referenced in the card
cardsV2: groundingCardsV2
}}}}});
...
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/3-groundolarak değiştirin. Tüm kaynak kodu ve kaynakları içerir. - Google Cloud Run işlevi hizmet ayrıntıları sayfasının Kaynak sekmesine gidin.
- Kaynağı düzenle'yi tıklayın.
index.jsdosyasının tüm içeriğini yerel geliştirme ortamınızdaki içerikle değiştirin.- Kaydet ve yeniden dağıt'ı tıklayın.
- Düzeltme dağıtımının başarıyla tamamlanmasını bekleyin.

Deneyin
Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında What's the world population? yazıp enter tuşuna basın. Uygulama, kaynak bağlantılarını bir karta ekleyerek yanıt vermelidir.

6. MCP uygulaması
Bu uygulama, uzaktan barındırılan bir Model Context Protocol (MCP) sunucusu tarafından sağlanan araçlar için destek ekleyerek Format app üzerine kurulmuştur. Google Workspace Developers dokümanlarına erişmek ve bu dokümanlarda arama yapmak için araçlar sağlayan Google Workspace Developer Assist MCP'ye bağlanır.
Kavramları inceleme
Model Context Protocol (MCP)
Model Context Protocol, modelleri harici hizmetlerle standartlaştırılmış bir şekilde entegre eden açık kaynaklı bir çerçevedir. Modeller, çeşitli araçları programatik olarak keşfedebilir, anlayabilir ve bunlarla etkileşime geçebilir. Böylece yeteneklerini genişletebilir, gerçek dünyada işlemler gerçekleştirebilir ve güncel bilgilere erişebilir.
MCP TypeScript SDK'sı
TypeScript SDK, tam MCP spesifikasyonunu uygular ve herhangi bir MCP sunucusuna bağlanan MCP istemcilerinin oluşturulmasını kolaylaştırır. Ayrıca, kaynaklara, istemlere ve araçlara erişim sağlayan MCP sunucularının geliştirilmesini de sağlar.
İnceleme akışı

Kaynak kodunu inceleme
index.js
// Import the MCP TypeScript SDK.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
...
// Create and connect the MCP client from the URL.
const mcpServerUrl = new URL("https://workspace-developer.goog/mcp");
const client = new Client({ name: "gen-ai-app-mcp", version: "1.0.0" });
// Try Streamable HTTP first (new) and SSE (old) as fallback for transport
try {
await client.connect(new StreamableHTTPClientTransport(mcpServerUrl));
} catch (error) {
await client.connect(new