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. Bu sayede 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 entegre edin.
- Daha pratik, doğal, gelişmiş ve faydalı etkileşimler için sohbet yapay zekası kavramlarını uygulayarak bir aracı deneyimini 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çeriği oluşturma konusunda yardım alma
- 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
- Mesajlar, kartlar, kimlik doğrulama, API'ler ve HTTP uç noktaları dahil olmak üzere Google Chat uygulamaları hakkında temel bilgiler.
Oluşturacağınız içerik
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:
- Bir kullanıcı, Google Chat'te bir Chat uygulamasına doğrudan mesaj olarak veya Chat alanında mesaj gönderir.
- Chat 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, Chat 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önetimi sistemi ya da destek kaydı aracı) entegre edilebilir.
- Web sunucusu, Chat'teki Chat uygulaması hizmetine bir HTTP yanıtı geri gönderir.
- Yanıt, kullanıcıya iletilir.
- İsteğe bağlı olarak, Chat 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 modelinden yararlanı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, Google Arama Aracı desteği ekleyerek ve yanıt mesajlarındaki kaynakları kartlarla döndürerek Format app
üzerine kurulmuştur.
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 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 kod laboratuvarı, ortaya çıkan Google Cloud projesi, Google Chat 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" ifadesini 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 App
olarak 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 Chat uygulamasıyla doğrudan mesajlaşma alanı açın.
Hello
yazıpenter
tuşuna basın. Chat 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-apps
dizinini açın.
3. İstem uygulaması
Bu uygulama, Vertex AI'daki Gemini'ı kullanıcılarla doğal dillerinde konuşmaya yönlendirir. Bu amaçla, kısa ve net metin yanıtları kullanılır. 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 hataya dayanıklıdır.
İ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-prompt
olarak değiştirin. Tüm kaynak kodu ve kaynakları içerir. env.js
dosyasını bir düzenleyicide açın ve aşağıdaki ayarları yapı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, 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-app
olarak ayarlayın. - ➕ simgesini tıklayın,
env.js
yazın ve eksik kaynak dosyasını oluşturmak için ✔️ simgesini tıklayın. index.js
,env.js
vepackage.json
dosyaları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
Hello, how are you?
yazıpenter
tuşuna basın. Uygulama, istemdeki talimatlarımıza uygun olarak düz metinle kısa ve öz bir şekilde yanıt vermelidir.
- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
Bonjour comment allez-vous?
yazıpenter
tuş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-format
olarak 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.js
dosyası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 each
yazıpenter
tuş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ıpenter
tuşuna basın. Uygulama, yararlı olduğunda biçimlendirme kullanarak 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 olgusal olarak yanlış 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ç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 görüşme içinde hızlı işlemler yapılmasına olanak tanıyarak kullanıcı deneyimini iyileştirir.
İnceleme akışı
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-ground
olarak 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.js
dosyası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, MCP istemcilerinin herhangi bir MCP sunucusuna bağlanmasını kolaylaştıran tam MCP spesifikasyonunu uygular. 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 SSEClientTransport(mcpServerUrl));
}
http('gen-ai-app', async (req, res) => {
...
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: prompt,
// MCP tools are enabled
config: { tools: [mcpToTool(client)]}
});
...
}
...
package.json
...
"dependencies": {
...
"@modelcontextprotocol/sdk": "^1.18.1"
},
...
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/4-mcp
olarak 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.js
vepackage.json
dosyalarının tüm içeriğini yerel geliştirme ortamınızdaki dosyalarla 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 can you do for me?
yazıpenter
tuşuna basın. Uygulama, neler yapabileceğini (MCP araçları) açıklamalıdır.
- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
I would like to get the latest official documentation for the Google Sheets API append values
yazıpenter
tuşuna basın. Uygulama, istenen belgelerle (MCP araçlarını kullanarak) yanıt vermelidir.
7. Çok turlu uygulama
Bu uygulama, sohbet etkileşimlerinin geçmişini izleyerek görüşme belleği desteği ekleyerek Format app
'yı temel alır. Bu sayede daha doğal, akıllı ve kişiselleştirilmiş bir deneyim sunulur. Uygulama, depolama için Google Cloud projesiyle ilişkili varsayılan Google Cloud Firestore veritabanını kullanır.
Kavramları inceleme
Çok turlu (Multi-turn)
Çok turlu kavramı, bir modelin birden fazla değişim ve görüşmede bağlamları ve sürekliliği koruyabilme özelliğini ifade eder. Bu özellik, karmaşık sohbetleri, gelişmiş yapay zeka destekli işlevleri ve doğal kullanıcı deneyimini desteklemek için olmazsa olmazdır.
Google Cloud Firestore
Google Cloud Firestore, mobil, web ve sunucu geliştirme için esnek ve ölçeklenebilir bir NoSQL bulut veritabanıdır. Verileri koleksiyonlar halinde düzenlenmiş dokümanlarda depolar ve gerçek zamanlı senkronizasyon ile çevrimdışı destek sağlar.
İnceleme akışı
Kaynak kodunu inceleme
index.js
// Import the Google Cloud Firestore client library.
import { Firestore } from '@google-cloud/firestore';
...
// Configure DB
const USERS_PREFIX = 'users/';
const CHATS_COLLECTION = 'chats';
const db = new Firestore();
...
// Create or update data for a given user
async function createOrUpdateChatHistory(userId, data) {
await db.collection(CHATS_COLLECTION).doc(userId.replace(USERS_PREFIX, '')).set(data);
};
// Retrieve data snapshot for a given user
async function getChatHistory(userId) {
return await db.collection(CHATS_COLLECTION).doc(userId.replace(USERS_PREFIX, '')).get();
};
...
...
http('gen-ai-app', async (req, res) => {
// Retrieve the chat history of the user
const chatHistory = await getChatHistory(userId);
const chat = genAI.chats.create({
model: env.model,
// Initiate the model with chat history for context
history: chatHistory.exists ? chatHistory.data().contents : []
});
// If no history, send a first message to the model with instructions on how to behave
if(!chatHistory.exists) {
const preambule = 'The only formatting options you can use is to '
+ ...
+ 'DO NOT USE ANY OTHER FORMATTING OTHER THAN THOSE. '
+ 'Answer in the same language that I use.';
// The answer to this message is ignored
await chat.sendMessage({message: preambule});
}
// Send the user's message to the model to generate the answer
const aiResponse = await chat.sendMessage({message: userMessage});
// Persist the updated chat history of the user
await createOrUpdateChatHistory(userId, {contents: chat.getHistory({curated: true})});
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text
}}}}});
});
...
package.json
...
"dependencies": {
...
"@google-cloud/firestore": "^7.11.5"
},
...
Google Cloud Firestore API'yi etkinleştirme
- Google Cloud Console'da Google Cloud Firestore API'yi etkinleştirin:
- Menü ☰ > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler'i tıklayın ve Cloud Firestore API'nin listede olduğunu doğrulayın.
Cloud Firestore veritabanı oluşturma
- Google Cloud Console'da Menü ☰ > Firestore'u tıklayın.
- Firestore veritabanı oluştur'u tıklayın.
- Varsayılan yapılandırmayı değiştirmeyin ve Veritabanı Oluştur'u tıklayın.
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/5-multi-turn
olarak 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.js
vepackage.json
dosyalarının tüm içeriğini yerel geliştirme ortamınızdaki dosyalarla 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
Can you speak with the English from the 80's for now on?
yazıpenter
tuşuna basın. Uygulama olumlu yanıt vermelidir.
- Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
Define what Google Chat apps are in one sentence
yazıpenter
tuşuna basın. Uygulama, 1980'lerdeki İngilizceyle yanıt vermeye devam etmelidir.
8. Özel araç uygulaması
Bu uygulama, Multi-turn app
üzerine kurulmuştur. Uygulamaya, herkese açık bir takvimden sonraki etkinliği almak için Google Workspace Calendar API'yi kullanan bir işlev çağrısı özel aracı desteği eklenmiştir. Model, girdileri alma ve araçtan çıktı sağlama da dahil olmak üzere tüm kullanıcı etkileşimlerini yönetir. Ancak uygulama, gerekli API çağrılarını yürütmek ve istek üzerine modele sonuç sağlamakla yine de sorumludur. Uygulama, herkese açık takvim verilerini getirmek için kullanıcı kimlik bilgilerine gerek olmadığından Google API anahtarı kullanır.
Kavramları inceleme
İşlev çağırma
İşlev çağırma, bir modelin kullanıcının isteğinin harici bir araç veya API ile karşılanabileceği zamanı algılamasını sağlar. Ardından model, harici işlevleri yanıtlarına entegre ederek bu aracı çağırmak için gereken parametreleri sağlar.
Google Workspace API'leri
Google Workspace API'leri, geliştiricilerin uygulamalarını çeşitli Google Workspace hizmetleriyle entegre etmelerini sağlar. Bu API'ler, Gmail, Chat, Takvim, Drive, Dokümanlar ve E-Tablolar gibi ürünlerdeki işlevlere programatik erişim sağlayarak otomasyon, veri senkronizasyonu ve özel iş akışları oluşturulmasına olanak tanır.
İnceleme akışı
Kaynak kodunu inceleme
env.js
...
// Replace with your Google API key.
googleApiKey: process.env.GOOGLE_API_KEY || 'your-google-api-key',
...
index.js
// Import parameter type definitions from Google Gen AI SDK.
import { GoogleGenAI, Type } from '@google/genai';
// Import Google APIs that include the Google Calendar API.
import { google } from 'googleapis';
...
// Create a Google Calendar API client using a Google API key.
const calendar = google.calendar({version: 'v3', auth: env.googleApiKey});
...
// Define the tool used for function calling
const getNextPublicCalendarEventTitleFunctionDeclaration = {
name: 'getNextPublicCalendarEventTitle',
parameters: {
type: Type.OBJECT,
description: 'Get the title of the next event of a public calendar.',
properties: {
calendarId: {
type: Type.STRING,
description: 'ID of the public calendar to get the next event title.',
}
},
required: ['calendarId']
}
};
// The function referenced in the tool definition
async function getNextPublicCalendarEventTitle(calendarId) {
// Use Calendar API to retrieve the next event in the given calendar
const response = await calendar.events.list({
calendarId: calendarId,
timeMin: new Date().toISOString(),
maxResults: 1,
singleEvents: true,
orderBy: 'startTime',
});
const events = response.data.items;
if (!events || events.length === 0) {
return null;
}
return `${events[0].summary}`;
};
...
...
http('gen-ai-app', async (req, res) => {
...
// Send the user's message to the model to generate the answer
let aiResponse = await chat.sendMessage({
message: userMessage,
// The tool used for function calling is enabled
config: { tools: [{ functionDeclarations: [getNextPublicCalendarEventTitleFunctionDeclaration]}]}
});
// Handle the function calling turn with the model if any
const functionCall = aiResponse.candidates[0].content.parts[0].functionCall;
if (functionCall) {
let functionResult = null;
switch(functionCall.name) {
case 'getNextPublicCalendarEventTitle':
// Make the function call as per model request
functionResult = await getNextPublicCalendarEventTitle(functionCall.args['calendarId']);
break;
default:
}
// Finish the function calling turn by sending the execution result to the model
aiResponse = await chat.sendMessage({ message: { functionResponse: {
name: functionCall.name,
response: { output: functionResult }
}}});
}
...
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text
}}}}});
});
...
package.json
...
"dependencies": {
...
"googleapis": "^160.0.0"
},
...
Calendar API'yi etkinleştirme
- Google Cloud Console'da Google Calendar API'yi etkinleştirin:
- Menü ☰ > API'ler ve Hizmetler > Etkin API'ler ve Hizmetler'i tıklayın ve Google Calendar API'nin listede olduğunu doğrulayın.
Google API anahtarı oluşturma
Google Cloud Console'da şu adımları uygulayın:
- Menü ☰ > API'ler ve Hizmetler > Kimlik Bilgileri'ni tıklayın.
- + Kimlik bilgileri oluştur'u tıklayın ve API anahtarı'nı seçin.
- İşlemin tamamlanmasını bekleyin.
- Onay iletişim kutusunda Your API Key (API Anahtarınız) metin alanını bulun ve Copy to clipboard'u (Panoya kopyala) tıklayın.
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/6-custom-tool
olarak 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.js
vepackage.json
dosyalarının tüm içeriğini yerel geliştirme ortamınızdaki dosyalarla değiştirin.env.js
dosyasını açın ve aşağıdakileri yapın:- Dışa aktarılan alanlara googleApiKey'yi ekleyin.
export const env = {
...
googleApiKey: 'your-google-api-key',
};
your-google-api-key
kısmını önceki adımda kopyalanan Google API anahtarıyla değiştirin. Anahtarı göster'i tıklayarak Google Cloud kimlik bilgileri sayfasından alınabilir.
- Kaydet ve yeniden dağıt'ı tıklayın.
- Düzeltme dağıtımının başarıyla tamamlanmasını bekleyin.
Deneyin
- Google Takvim'de şu adımları uygulayın:
- Diğer takvimler'in altında +'yı, ardından Yeni takvim oluştur'u tıklayın.
- Ad'ı
My Public Calendar
olarak ayarlayın. - Takvim oluştur'u tıklayın.
- İşlemin tamamlanmasını bekleyin.
- Takvimlerimin ayarları bölümünde, yeni oluşturulan takvim olan Herkese Açık Takvimim'i seçin.
- Etkinliklere dair erişim izinleri bölümünde Herkese açık hâle getir'i seçin ve Uyarı iletişim kutusunda Tamam'ı tıklayın.
- Etkinliklere dair erişim izinleri bölümünde, Herkese açık hâle getir seçeneğinin yanındaki açılır menüden Tüm etkinlik ayrıntılarını görme'yi seçin.
- Takvimi entegre edin bölümünde, Takvim Kimliği alanının değerini panoya kopyalayın.
- Ayarlar'dan çıkmak için sol üst köşedeki sol oku tıklayın.
- Yarın için yeni bir etkinlik oluşturmak üzere takvimi tıklayın,
Important meeting
yazın, açılır listeden Herkese Açık Takvimim'i seçin ve Kaydet'i tıklayın. - Google Chat'te Chat uygulamasıyla olan doğrudan mesaj alanında
When is the next meeting?
yazıpenter
tuşuna basın. Hangi takvimin kastedildiği net olmadığından uygulama, hassasiyet isteğinde bulunmalıdır.
- Google Chat'te Chat uygulamasıyla doğrudan mesajlaşma alanında, daha önce panoya kopyaladığınız takvim kimliğini yapıştırın ve
enter
tuşuna basın. Uygulama, daha önce oluşturulan etkinlik hakkında ayrıntılı bilgi vermelidir.
9. Yayın uygulaması
Bu uygulama, kullanıcıların sağladığı temalara dayalı 2 dakikalık hikayeler oluşturmak için Gemini modelini kullanır. Tam yanıtlar oluşturmak zaman aldığından uygulama, akış modunda modele çağrı yapar ve ilerleme kaydedildikçe içerikleri ve durumları mesajlarda göndermek için Google Chat API'sini kullanır.
Kavramları inceleme
Google Chat API
Google Chat API, geliştiricilerin Google Chat ile programatik olarak etkileşim kurmasına olanak tanır. Bu sayede geliştiriciler, özel entegrasyonlar ve botlar oluşturmak için mesaj gönderebilir, alan oluşturabilir, üyeleri yönetebilir ve daha birçok işlem yapabilir.
yayınlayarak
Akış, tüm yanıtın oluşturulmasını beklemek yerine verilerin sürekli bir akış halinde alınması sürecini ifade eder. Yapay zeka modeli çağrıları söz konusu olduğunda akış, uygulamaların kullanıcılara kısmi sonuçları kullanıma sunulur sunulmaz göstermesine olanak tanır. Bu da özellikle daha uzun oluşturma görevlerinde algılanan performansı ve kullanıcı deneyimini iyileştirir. Bu durum, özellikle tam bir çıkış üretmek için önemli ölçüde zaman harcayabilecek üretken yapay zeka modelleri için geçerlidir.
İnceleme akışı
Kaynak kodunu inceleme
index.js
// Import Google Auth library used to create Google Chat API client
import { GoogleAuth } from 'google-auth-library';
...
http('gen-ai-app', async (req, res) => {
// Use app authentication.
// Application Default Credentials (ADC) will use the Cloud Run function's
// default service account, we just need to specify the Chat API app auth scopes.
const auth = new GoogleAuth({
// Chat API app authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.bot']
});
// Create Chat service client with application credentials
const chatClient = google.chat({
version: 'v1',
auth: await auth.getClient()
});
// Send a server streaming request to generate the answer
const aiResponse = await genAI.models.generateContentStream({
model: env.model,
contents: `Generate a story about a ${userMessage}. `
+ `It should take 2 minutes to read it out loud.`
});
// Send a first Chat message to summarize what will be done
await chatClient.spaces.messages.create({
parent: spaceName,
requestBody: { text: `Sure, let me work on generating a short story `
+ `about a ${userMessage} like you requested.`}
});
// Go through the response chunks received from the stream
let messageName = undefined;
let answer = "";
for await (const chunk of aiResponse) {
const text = chunk.text;
if (text) {
// Update the answer by concatenating the response chunks
answer += text;
// The Chat message request body is the same for message creation and update
const responseBody = {
text: answer,
accessoryWidgets: [getStatusAccessoryWidget('Generating story...', 'progress_activity')]
}
if (!messageName) {
// Create a Chat message dedicated to the generated content
const messageResponse = await chatClient.spaces.messages.create({
parent: spaceName,
requestBody: responseBody
});
messageName = messageResponse.data.name;
} else {
// Update the Chat message dedicated to the generated content
await chatClient.spaces.messages.patch({
name: messageName,
updateMask: 'text,accessory_widgets',
requestBody: responseBody
});
}
}
}
// Update the accessory widget with final progress status
await chatClient.spaces.messages.patch({
name: messageName,
updateMask: 'accessory_widgets',
requestBody: {
accessoryWidgets: [getStatusAccessoryWidget('Story is fully generated', 'check')]
}
});
// Send a last Chat message to confirm it's done
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'All done, I hope you like it!'
}}}}});
});
// Create an accessory widget with progress status
function getStatusAccessoryWidget(text, icon) {
return { buttonList: { buttons: [{
text: text,
icon: { materialIcon: { name: icon}},
// This is a workaround to have the icon shown, it's not clickable
onClick: { openLink: { url: "https://google.com"}},
disabled: true
}]}};
}
package.json
...
"dependencies": {
...
"google-auth-library": "^10.3.0"
},
...
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/7-stream
olarak 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.js
vepackage.json
dosyalarının tüm içeriğini yerel geliştirme ortamınızdaki dosyalarla 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 turtle
yazıp enter
tuşuna basın. Uygulama, onay mesajı, ilerleme kaydedildikçe oluşturulan hikaye ve tamamlanma onay mesajıyla yanıt vermelidir.
10. Çok formatlı uygulama
Bu uygulama, kullanıcıların metin talimatlarına göre resimleri düzenlemek için bir model kullanır. Hem kullanıcılar hem de uygulama, Google Chat mesajı ekleri olarak resimlerini ekleyerek iletişimi sağlar. Uygulama, resimleri programatik olarak indirmek ve yüklemek için Google Chat API'lerini kullanır.
Kavramları inceleme
Google Chat mesajı eki
Google Chat mesajı ekleri, Google Chat mesajına yüklenen resim veya video gibi dosyalardır. Bu ekler programatik olarak yönetilebilir. Böylece uygulamalar, zengin medya ile doğrudan ileti dizilerinde etkileşim kurabilir.
Alan genelinde yetki (DWD)
Alan genelinde yetki (DWD), bir hizmet hesabının Google Workspace alanındaki kullanıcıların kimliğine bürünmesine olanak tanır. Böylece uygulamalar, doğrudan yetkilendirme olmadan bu kullanıcılar adına işlem yapabilir. Bu, hizmet hesabına alan genelinde geniş erişim izni vererek kullanıcının etkin olarak bulunmadığı durumlarda bile kullanıcının bağlamında kullanıcı verilerine erişmesi veya işlemler (ör. Google Chat'e ek yükleme) gerçekleştirmesi gereken uygulamalar için yararlıdır.
İnceleme akışı
Kaynak kodunu inceleme
env.js
...
// Replace with the Gemini model to use.
model: process.env.MODEL || 'gemini-2.0-flash-preview-image-generation',
...
index.js
...
// Import byte stream management libraries.
import { Buffer } from 'buffer';
import { Readable } from 'stream';
...
// Download a Google Chat attachment as base 64 string.
async function downloadFile(appChatClient, attachmentName) {
const response = await appChatClient.media.download({
resourceName: attachmentName,
alt: 'media'
}, {
responseType: 'stream'
});
const chunks = [];
return new Promise((resolve) => {
response.data.on('data', (chunk) => {
chunks.push(chunk);
});
response.data.on('end', () => {
const fileBuffer = Buffer.concat(chunks);
const base64String = fileBuffer.toString('base64');
resolve(base64String);
});
});
}
// Upload a base 64 string as Google Chat attachment of a space.
async function uploadFile(useChatClient, spaceName, data) {
const filename = 'generated_image.png';
return await userChatClient.media.upload({
parent: spaceName,
requestBody: { filename: filename },
media: {
mimeType: 'image/png',
body: Readable.from(Buffer.from(data, 'base64'))
}
});
}
...
...
http('gen-ai-app', async (req, res) => {
const userEmail = req.body.chat.user.email;
const spaceName = req.body.chat.messagePayload.space.name;
const userMessage = req.body.chat.messagePayload.message.text;
const attachmentName = req.body.chat.messagePayload.message.attachment[0].attachmentDataRef.resourceName;
const attachmentContentType = req.body.chat.messagePayload.message.attachment[0].contentType;
// Set up app authentication used to download the attachment input
// Application Default Credentials (ADC) will use the Cloud Run function's
// default service account.
const appAuth = new GoogleAuth({
// Specify the Chat API app authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.bot']
});
// Create Chat service client with application credentials
const appChatClient = google.chat({
version: 'v1',
auth: await appAuth.getClient()
});
// Send a request to generate the answer with both text and image contents
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: [{
role: 'USER',
parts: [
// The text content of the message
{ text: userMessage },
// The attachment of the message is downloaded and added inline
{ inlineData: {
data: await downloadFile(appChatClient, attachmentName),
mimeType: attachmentContentType
}}
]
}],
config: { responseModalities: ['TEXT', 'IMAGE']}
});
// Set up user impersonation authentication used to upload the attachment output
// and send the response.
const impersonatedUserAuth = new GoogleAuth({
// Specify the Chat API user authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.messages'],
keyFile: './credentials.json',
clientOptions: {
// Impersonate the user who sent the original message
subject: userEmail
}
});
// Create Chat service client with impersonated user credentials
const userChatClient = google.chat({
version: 'v1',
auth: await impersonatedUserAuth.getClient()
});
let responseText = undefined;
let responseAttachment = undefined;
// Go through the response parts received
for (const part of aiResponse.candidates[0].content.parts) {
if (part.inlineData) {
// The resulting image is retrieved inline and uploaded
const mediaResponse = await uploadFile(userChatClient, spaceName, part.inlineData.data);
responseAttachment = mediaResponse.data;
} else {
responseText = part.text;
}
}
// Create a Chat message dedicated to the generated content
await userChatClient.spaces.messages.create({
parent: spaceName,
requestBody: {
text: responseText ? responseText : 'Here it is!',
// The uploaded image is referenced as attachment
attachment: responseAttachment ? [responseAttachment] : undefined
}
});
// Send a last Chat message to confirm it's done
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Done, feel free to let me know if you need anything else!'
}}}}});
});
...
Hizmet hesabını yapılandırma ve özel anahtarı dışa aktarma
- Kullanıcıların Google Chat mesajlarını yönetmek için Cloud Run varsayılan hizmet hesabını temsilci olarak atayın. https://www.googleapis.com/auth/chat.messages kapsamıyla ilgili talimatları uygulayın. Cloud Run varsayılan hizmet hesabı istemci kimliğini almak için aşağıdaki adımları uygulayın:
- Menü ☰ > IAM ve Yönetici > Hizmet Hesapları'nı tıklayın.
- Varsayılan Compute hizmet hesabı adlı hizmet hesabını tıklayın.
- Gelişmiş ayarlar bölümünü genişletin.
- İstemci kimliğini panoya kopyalayın.
- Cloud Run varsayılan hizmet hesabı için yeni bir özel anahtar oluşturma ve indirme
- Menü ☰ > IAM ve Yönetici > Hizmet Hesapları'nı tıklayın.
- Varsayılan Compute hizmet hesabı adlı hizmet hesabını tıklayın.
- Anahtarlar sekmesini seçin, Anahtar ekle'yi ve ardından Yeni anahtar oluştur'u tıklayın.
- JSON'ı seçin ve Oluştur'u tıklayın.
- Yeni herkese açık/özel anahtar çiftiniz oluşturulur ve makinenize yeni bir dosya olarak indirilir. İndirilen JSON dosyasını kaydedin ve içeriğini panoya kopyalayın. Bu dosya, anahtarın tek kopyasıdır. Anahtarınızı güvenli bir şekilde depolama hakkında bilgi edinmek için Hizmet hesabı anahtarlarını yönetme başlıklı makaleyi inceleyin.
Google Cloud Run Node.js işlevini güncelleme
- Yerel geliştirme ortamınızda geçerli dizini
node/chat/gen-ai-apps/8-multimodal
olarak 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.
- Eksik kaynak dosyasını oluşturmak için ➕ simgesini tıklayın,
credentials.json
yazın ve ✔️ simgesini tıklayın. - Önceki adımda indirilen JSON dosyasının içeriğini yeni oluşturulan
credentials.json
dosyasına yapıştırın. index.js
dosyasının tüm içeriğini yerel geliştirme ortamınızdaki içerikle değiştirin.env.js
dosyasını açın ve model değerinigemini-2.0-flash-preview-image-generation
olarak ayarlayın.
...
model: 'gemini-2.0-flash-preview-image-generation',
...
- Kaydet ve yeniden dağıt'ı tıklayın.
- Düzeltme dağıtımının başarıyla tamamlanmasını bekleyin.
Dene
Google Chat'te Chat uygulamasıyla doğrudan mesaj alanında, kendinizin PNG biçiminde bir portre resmini yükleyin, Change the background color to blue
yazın ve enter
tuşuna basın. Uygulama, mavi arka planlı resim sürümü ve tamamlama onay mesajıyla yanıt vermelidir.
11. 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.
12. Tebrikler
Tebrikler! Temel yapay zeka kavramlarını entegre eden Google Workspace eklentileri olarak Google Chat uygulamaları geliştirdiniz.
Sırada ne var?
Bu codelab'de yalnızca minimalist kullanım alanları gösterilmektedir. Ancak Google Chat uygulamalarınızda dikkate almak isteyebileceğiniz birçok genişleme alanı vardır. Örneğin:
- Ses ve video gibi diğer medya türlerini destekler.
- Vertex AI gibi özel platformalarda barındırılan özel modeller de dahil olmak üzere diğer yapay zeka modelleriyle entegre edin.
- Agentspace ve Dialogflow CX gibi özel platformlarda barındırılanlar da dahil olmak üzere aracılarla entegrasyon.
- Performansı izlemek ve iyileştirmek için geri bildirim döngülerinden ve sınıflandırmalardan yararlanın.
- Ekipleri, kuruluşları veya genel kullanıcıları desteklemek için pazar yerinde 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 Workspace Developers YouTube kanalı - Welcome Developers!
- Google Chat için geliştirici belgeleri web sitesi
- Tüm Google Chat örneklerinin bulunduğu GitHub deposu
- Google Cloud Geliştirici Merkezi
- Vertex AI'da üretken yapay zeka
- Üretken Yapay Zeka Modelleri
- Üretken Yapay Zeka Modelini İnce Ayarlama
- Üretken Yapay Zeka Özel Eğitimi