1. Başlamadan önce
Gemini içeren Google Chat uygulamaları nelerdir?
Gemini ile Google Chat uygulamaları şunları yapar:
- Hizmetlerinizi ve kaynaklarınızı Google Chat'e taşıyın. Google Chat, kullanıcıların görüşmeden ayrılmadan bilgi almasına ve işlem yapmasına olanak tanır.
- Üretken yapay zeka modeli Gemini ile entegrasyon sağlayın. Bu sayede, iş akışlarınızı kolaylaştırmak için ekip üyeleri belirli zamanlarda metin veya resim gibi veriler oluşturabilir ya da arayabilir.
Neden Google Chat uygulamalarını Gemini ile entegre etmelisiniz?
Gemini gibi üretken yapay zeka modellerinin genel kullanım alanları aşağıdaki kategorilere ayrılır:
- İçerik oluşturma ve geliştirme. Pazarlama metni hazırlayın, sosyal medya yayınları hazırlayın, gerçekçi resimler oluşturun, müzik besteleyin veya video içeriğinin oluşturulmasına yardımcı olun.
- Veri arama. Yapılandırılmamış bilgi tabanından önemli analizleri ayıklayın, uzun metinleri özetleyin, içerikleri sınıflandırın veya dilleri gelişmiş doğruluk ve hızla çevirin.
- İleti dizisi. Doğal, bilgilendirici ve yaratıcı sohbetlere katılın.
Bu özellikleri doğrudan Google Chat'in bilinen arayüzünde entegre edebilmek, kullanıcılarının deneyimini ve üretkenliğini iyileştirmek isteyen herkes için büyük bir fırsat.
Ön koşullar
- Temel Apps Komut Dosyası, Google Cloud ve Node.js bilgisi.
- Etkinlik işleyiciler, eğik çizgi komutları, iletişim kutuları, kartlar, mesajlar, uygulama kimlik doğrulaması ve API'ler dahil olmak üzere Google Chat kavramlarıyla ilgili temel düzeyde bilgi.
Oluşturduklarınız
Bu codelab'de, bir önceki bölümde açıklanan üç kullanım alanını ele alacak şekilde Gemini ile üç Google Chat uygulaması oluşturacaksınız.
Sorun yönetimi uygulaması (içerik oluşturma ve geliştirme)
Bu uygulama aşağıdakileri yapar:
- Temel etkileşimler, uygulama ana sayfası ve uygulama kimlik doğrulaması aracılığıyla, oluşturma aşamasından kapanışa kadar olan sorunları yönetir.
- Mesajları izler, etkinlikler ve aksesuar widget'ları ile ilgili kapsayıcılık yardımı sağlar.
Gemini'ı aşağıdakileri yapmak için kullanırsınız:
- Mesaj geçmişine ve sorun ayrıntılarına dayalı sorun raporları oluşturma.
- İletilerdeki kapsayıcı olmayan kelimeleri kontrollü istemlerle sınıflandırın.
Kullanılan ana teknolojiler Vertex AI, Gemini, Apps Komut Dosyası ve Google Workspace API'leridir (Yönetici, Chat, Dokümanlar, Etkinlikler).
Bilgi uygulaması (veri arama)
Bu uygulama, soruları doğal dilde anlayıp yanıtlamak ve yapılandırılmamış verilerden kaynak referanslarını döndürmek için Gemini'dan yararlanır.
Kullanılan ana teknolojiler: Dialogflow CX veri deposu aracısı, Dialogflow CX webhook, Google Cloud Functions ve Gemini.
Geri bildirim uygulaması (ileti dizisi)
Bu uygulama, yorumları doğal dilde toplayıp depolamak için Gemini'dan yararlanıyor.
Kullanılan ana teknolojiler Dialogflow CX aracısı, Dialogflow CX aracı, OpenAPI, Google Cloud Functions ve Gemini'dır.
Öğrenecekleriniz
- Google Chat uygulamalarını Vertex AI aracılığıyla Gemini ile entegre etme.
- Google Chat uygulamalarını Dialogflow CX aracılarıyla entegre etme.
- Google Chat'in en yeni özelliklerini kullanma: uygulama ana sayfası, Google Chat Etkinlikleri ve aksesuar widget'ları.
İhtiyacınız olanlar
- Apps Komut Dosyası ile Google Chat uygulaması oluşturma hızlı başlangıç kılavuzu tamamlandı. Bu codelab'de, Apps Komut Dosyası ve Google Cloud projesi temel alınır.
2. Hazırlanın
Kaynakları ilk kullanıma hazırlama
Bu bölümde, tercih ettiğiniz web tarayıcısından aşağıdaki kaynaklara erişebilir ve bu kaynakları yapılandırabilirsiniz.
Apps Komut Dosyası projesi
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Ayarlar'ı tıklayın ve Google Apps Script API'yi etkinleştirin.
- Projenizi seçin.
- Proje ayarları'nı tıklayın.
- "
appsscript.json
" manifest dosyasını düzenleyicide göster onay kutusunu işaretleyin. - Projenin adını
Chat Apps Gemini
olarak değiştirin.
Google Cloud projesi
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Projenizi seçin.
- Menü ☰ > API'ler ve hizmetler > OAuth izin ekranı > Uygulamayı düzenle'yi tıklayın ve ardından Uygulama adı'nı
Chat Apps Gemini
olarak ayarlayın.
- Google Chat API yapılandırmasına gidin, ardından Uygulama adı ve Açıklama'yı
Chat Apps Gemini
olarak ayarlayın.
Google Chat
Google Chat'te şu adımları uygulayın:
- Gerekirse Google Chat uygulamanızla bir sohbet başlatın.
- Çalıştığından emin olmak için
Hello
gibi bir mesaj gönderin.
Kaynak kodu ve kaynakları yerel olarak indirme
- Bu GitHub deposunu indirin.
- Tercih ettiğiniz geliştirme ortamında
apps-script/chat-apps-gemini
dizinini açın ve terminalinizde aynı dizine gidin.
clasp
'i yükleme ve yapılandırma
Kaynak kodun sürümlerini kolayca düzenlemek ve yerel ortamdan Apps Komut Dosyası projesine aktarmak için clasp
kullanıyoruz.
- Yerel ortamınıza
node
,npm
veclasp
uygulamalarının en son sürümlerini yükleyin.
npm install -g @google/clasp
- Hesabınızla giriş yapın:
clasp login
İşlem başarılı olursa web tarayıcınızda bir temel onay ekranı gösterilir ve istemci kimlik bilgilerinizi içeren .clasprc.json
dosyası güncellenir. Terminalinizde nerede olduğunu bulabilirsiniz.
3. Uygulama 1: Oluşturma
Kavramları inceleyin
Vertex AI
Vertex AI; yapay zeka çözümleri, aracı oluşturucu, 130'dan fazla temel modeli ve birleştirilmiş AI platformu dahil olmak üzere üretken yapay zeka derlemek ve kullanmak için ihtiyacınız olan her şeyi sunar.
Gemini
Gemini, Google'ın Vertex AI aracılığıyla erişilebilen çok modlu bir LLM'dir. İnsanların insan potansiyellerini ortaya çıkarmalarına yardımcı olarak hayal güçlerini geliştirmelerine, meraklarını genişletmelerine ve üretkenliklerini artırmalarına yardımcı olur.
Gelişmiş Chat hizmeti
Gelişmiş Chat hizmeti, Apps Komut Dosyası'nda Google Chat API'yi kullanmanıza olanak tanır. Bu sayede komut dosyaları, Chat alanlarını bulabilir, oluşturabilir ve değiştirebilir, alanlara üye ekleyip kaldırabilir ve metin, kart, ek ve tepkiler içeren mesajları okuyup yayınlayabilir.
İnceleme mimarisi
Bu Google Chat uygulaması, Apps Komut Dosyası ile geliştirilmiştir. İşleyiş şekli şöyledir:
- Kullanıcı, doğrudan mesaj aracılığıyla veya bir alan üzerinden uygulamaya mesaj gönderir.
- Bir Apps Komut Dosyası projesinde uygulanmış ve bir Google Cloud projesiyle ilişkilendirilmiş olan uygulama, mesajı işler.
- Uygulama, Google Dokümanlar ve Google Chat API'leriyle entegre edilir.
- Uygulama, komut dosyası özelliklerindeki verileri korumak için Özellikler Hizmeti'ni kullanır.
- Uygulama, doğrudan mesajla veya orijinal alanda eşzamanlı bir yanıt gönderir.
Yorum akışları
Sorun oluştur
Özel alanla ilgili sorunları giderme
Özel alandan sorunu kapatma
Kaynak kodunu inceleme
Apps Komut Dosyası projesi aşağıdaki komut dosyalarını içerir:
Configuration
: Ortama göre düzenlenecek sabitler.ChatApp
: Mesajlar, kart tıklamaları, eğik çizgi komutları ve iletişim kutuları gibi Google Chat etkileşim etkinliklerini işler.Storage
: Mülk Hizmetleri'ni temel alan yardımcı program işlevleri.ChatAppAuth
: Google Chat uygulamasının kimlik doğrulamasını temel alan yardımcı işlevler.Docs
: Google Dokümanlar'a dayanan yardımcı işlevler.VertexAi
: Vertex AI'a dayanan yardımcı işlevler.
Gemini ve sohbet alanı geçmişleriyle rapor dokümanları oluştururken etkin olarak kullanılan bölümler şunlardır:
appsscript.json
// Enables the Admin SDK Directory and Chat services, which you need to retrieve
// messages and usernames.
"enabledAdvancedServices": [
...
{
"userSymbol": "AdminDirectory",
"version": "directory_v1",
"serviceId": "admin"
},
{
"userSymbol": "Chat",
"version": "v1",
"serviceId": "chat"
}
...
]
// Includes the OAuth scopes to request the Admin SDK Directory, Google Chat,
// Google Docs, and Vertex AI APIs.
"oauthScopes": [
...
"https://www.googleapis.com/auth/admin.directory.user.readonly",
"https://www.googleapis.com/auth/chat.messages.readonly",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/cloud-platform",
...
]
Configuration.js
// Relies on two constants: the first one is the Google Cloud project ID and the
// second one is the Vertex AI location to be used.
...
const PROJECT_ID = 'replace-with-gcp-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
...
ChatApp.js
// The slash command process function retrieves history, generates content, and passes
// it to the report generator.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
const history = exportSpaceHistory(spaceId);
const summary = summarizeSpace(history);
const docUrl = createReport(
issue.title, issue.description, resolution, history, summary
);
...
}
...
}
/**
* Fetches and concatenates the 100 first space messages by using the Google Chat API.
*
* Messages with slash commands are filtered (app command invocations).
*
* @return {string} concatenate space messages in the format "Sender's name: Message"
*/
function exportSpaceHistory(spaceName) {
const messages = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 }).messages;
// Returns results after fetching message sender display names.
let users = new Map();
return messages
.filter(message => message.slashCommand === undefined)
.map(message =>
`${getUserDisplayName(users, message.sender.name)}: ${message.text}`
).join('\n');
}
/**
* Fetches a user's display name by using the Admin Directory API.
*
* A cache is used to only call the API once per user.
*
* @param {Map} cache the map containing users previously fetched
* @param {string} userId the user ID to fetch
* @return {string} the user's display name
*/
function getUserDisplayName(cache, userId) {
if (cache.has(userId)) {
return cache.get(userId);
}
let displayName = 'Unknown User';
try {
const user = AdminDirectory.Users.get(
userId.replace("users/", ""),
{ projection: 'BASIC', viewType: 'domain_public' });
displayName = user.name.displayName ? user.name.displayName : user.name.fullName;
} catch (e) {
// Ignores errors, uses 'Unknown User' by default.
}
cache.set(userId, displayName);
return displayName;
}
VertexAi.js
/**
* Summarizes a Google Chat space history with the Gemini Pro model using
* Vertex AI API.
*
* @param {string} history the history
* @return {string} the summary
*/
function summarizeSpace(history) {
const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
+ `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
+ "/publishers/google/models/gemini-1.0-pro:generateContent";
const options = {
method: "POST",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
contentType: "application/json",
payload: JSON.stringify({
contents: {
role: "user",
parts: {
text: "Summarize the following conversation between engineers resolving"
+ " an issue in a few sentences.\n\n" + history
}
},
safetySettings: {
category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold: "BLOCK_LOW_AND_ABOVE"
},
generationConfig: {
temperature: 0.2,
topP: 0.8,
topK: 40
}
})
};
return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
.candidates[0].content.parts[0].text;
}
Docs.js
// The report generator function adds two sections: the first one is for the summary and the second one is for history.
function createReport(..., history, summary) {
...
body.appendParagraph("Summary").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(summary);
body.appendParagraph("History").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(history);
...
}
Google Cloud projesini güncelle
API'leri etkinleştirme
- Google Cloud Console'da Google Dokümanlar, Google Admin SDK ve Vertex AI API'lerini etkinleştirin:
- Menü ☰ > API'ler ve Hizmetler > Etkin API'lar ve Hizmetler'i tıklayın ve ardından API'ların etkinleştirildiğini onaylayın.
Hizmet hesabını başlatma
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > IAM ve Yönetici > Hizmet Hesapları > + Hizmet hesabı oluştur'u tıklayın.
- Hizmet hesabı adı'nı
chat-app
olarak ayarlayın. - Hizmet hesabı açıklaması değerini
Chat app auth
olarak ayarlayın. - Oluştur ve devam et'i tıklayın.
- Done'ı (Bitti) tıklayın. Hizmet hesapları sayfasına yönlendirilirsiniz ve oluşturduğunuz hizmet hesabını görebilirsiniz.
- Yeni oluşturulan hizmet hesabını seçin.
- Anahtarlar sekmesini seçin.
- Anahtar ekle'yi tıklayın.
- Yeni anahtar oluştur'u tıklayın.
- JSON'yi seçin.
- Oluştur'u tıklayın.
İletişim kutusu kapanır ve yeni oluşturduğunuz herkese açık/özel anahtar çiftiniz otomatik olarak yerel ortamınıza bir JSON dosyası biçiminde indirilir. İçeriğini daha sonra Apps Komut Dosyası projenizin kaynak kodunu düzenlediğinizde kullanırsınız.
Google Chat API yapılandırmasını güncelleme
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Eğik çizgi komutu ekleyin.
- Ad'ı
/create
olarak ayarlayın. - Komut Kimliği'ni
1
olarak ayarlayın. - Description (Açıklama) alanını
Create a new issue
olarak ayarlayın. - İletişim kutusu açar onay kutusunu seçin.
- Başka bir eğik çizgi komutu ekleyin.
- Ad'ı
/close
olarak ayarlayın. - Komut Kimliği'ni
2
olarak ayarlayın. - Description (Açıklama) alanını
Close an issue
olarak ayarlayın. - Kaydet'i tıklayın.
Apps Komut Dosyası projesini güncelleme
- Yerel terminalinizdeki mevcut dizini
issue-management/1-baseline
olarak değiştirin. Kaynak kodunu içerir. Kaynak kodunu Apps Komut Dosyası projenize aktarmadan önce birkaç şeyi yapılandırmanız gerekir.
Kaynak kodunu yapılandırma
Configuration.js
dosyasındakiCHAT_CREDENTIALS
adlı JSON sabitini, daha önce indirdiğiniz özel anahtar dosyası içeriğine ayarlayın.
- Google Cloud Console'da Menü ☰ > IAM ve Yönetici > Ayarlar'ı tıklayın.
- Proje kimliğini kopyalayın.
Configuration.js
dosyasındakiPROJECT_ID
adlı dize sabitini proje kimliğine ayarlayın.
clasp
ayarlarını yapılandırın
Kaynak kodunu doğru Apps Komut Dosyası projesine aktarmak üzere clasp
ayarlarını ilk kullanıma hazırlamak için şu adımları uygulayın:
- Apps Komut Dosyası konsolunda projenizi seçin.
- Proje Ayarları'nı seçin.
- Kimlikler bölümünde Kopyala'yı tıklayın.
- Geçerli dizinde bir
.clasp.json
dosyası oluşturun. <your-script-id>
yerine kopyalanan kimliği yazın.- Sonucu
.clasp.json
dosyasına kopyalayın. .clasp.json
dosyasını kaydedin.
{
"scriptId": "<your-script-id>"
}
Kaynak kodunu aktarma
- Aşağıdaki komutu çalıştırın:
$clasp push ? Manifest file has been updated. Do you want to push and overwrite? Yes └─ appsscript.json └─ ChatApp.js └─ ChatAppAuth.js └─ Configuration.js └─ Docs.js └─ Storage.js └─ VertexAi.js Pushed 7 files.
Deneyin
- Google Chat'te, uygulamaya doğrudan mesajla
Hello!
gönderin. Uygulama yanıt vermez ancak yapılandırma istemi içeren bir mesaj görünür.
- Yapılandır'ı tıklayın.
- Google Hesabınızı seçin.
- Kimlik doğrulaması yapın.
- Uygulamayı inceleyip erişim izni verin.
İşlem başarılı olursa web sayfasında temel bir onay ekranı gösterilir ve uygulamanın orijinal mesajınıza verdiği gerçek bir yanıt görüntülenir.
- Uygulamaya, eğik çizgi komutuyla (
/create
) başka bir doğrudan mesaj gönderin.
- İletişim kutusunda Başlık'ı
Issue Title 1
olarak ayarlayın. - Açıklama alanını, Sorun
Description 1
olarak ayarlayın. - Oluştur'u tıklayın.
Uygulama aşağıdakileri yapar:
- İletişim kutusunu kapatır.
- Aynı başlıkla yeni oluşturulan soruna özel bir alan oluşturur.
- Yeni oluşturulan alana katılmayı sağlar.
- Yeni oluşturulan alandaki sorunun açıklamasını içeren bir mesaj gönderir.
- Yeni oluşturulan alanın bağlantısını içeren bir doğrudan mesaj size gönderilir.
- Yeni oluşturulan alanda eğik çizgi komutu
/close
ve çözünürlük (ör.Not reproducible
) ile bir mesaj gönderin.
Uygulama aşağıdakileri yapar:
- Google Dokümanlar'da bir rapor dokümanı oluşturur.
- Soruna ayrılmış alana, yeni oluşturulan rapor dokümanının bağlantısını içeren bir mesaj gönderir.
- Rapor dokümanını açın. Bu e-postada temel bilgiler, geçmiş ve özet yer alır.
4. İsteğe bağlı: Uygulama 1: Uygulama ana sayfasını ekleme
Kavramları inceleyin
Uygulama ana sayfası, kullanıcı Chat uygulamasıyla doğrudan bir mesaj üzerinden Ana Sayfa sekmesine eriştiğinde kullanıcıya Chat uygulamasının gönderdiği özelleştirilebilir bir kart mesajıdır. Bu genellikle uygulama dokümanlarını veya genel bakışı görüntülemek için kullanılır. Teknik olarak, ele alınması gereken özel bir etkinlik vardır ve işlem, kart mesajlarıyla aynı temel ilkelere dayanır.
Yorum akışları
Sorunları yönetme
Kaynak kodunu inceleme
Apps Komut Dosyası projesinin düzenlenmesi gerekiyor.
ChatApp.js
/**
* Handles app home requests in Google Chat.
*
* Displays the latest status of all issues.
*/
function onAppHome() {
// Generates one card section per issue.
var sections = [];
for (var issueKey in appProperties.getProperties()) {
const issue = JSON.parse(appProperties.getProperty(issueKey));
if (issue.spaceId) {
sections.push({
header: `${issue.status} - ${issue.title}`,
widgets: [{ textParagraph: {
text: `Description: ${issue.description}`
}}, { textParagraph: {
text: `Resolution: ${issue.resolution}`
}}, { buttonList: { buttons: [{
text: "Open space",
onClick: { openLink: {
url: `https://mail.google.com/mail/u/0/#chat/space/${issue.spaceId}`
}}
}, {
text: "Open report",
onClick: { openLink: {
url: issue.reportUrl !== "" ? issue.reportUrl : "docs.new"
}},
disabled: issue.reportUrl === ""
}]}
}]
});
}
}
return { action: { navigations: [{ push_card: {
sections: sections
}}]}};
}
Google Cloud projesini güncelle
Google Cloud Console'da aşağıdaki adımları uygulayın:
Yerel ortamınızda şu adımları uygulayın:
- Terminalinizdeki mevcut dizini
issue-management/2-app-home
olarak değiştirin. Bu dosya, kullanmanız gereken kaynak kodunu içerir. issue-management/1-baseline/.clasp.json
dosyasını geçerli dizininize kopyalayın.issue-management/1-baseline/Configuration.js
dosyasını, mevcut dizininizin yerini alması için mevcut dizininize kopyalayın.- Aşağıdaki komutu çalıştırın:
clasp push
Deneyin
Google Chat'te şu adımları uygulayın:
- Eğik çizgi komutuyla
/create
uygulamaya doğrudan mesaj gönderin. Uygulama bir iletişim kutusu açar. - Başlık'ı
Issue Title 2
olarak ayarlayın. - Açıklama alanını, Sorun
Description 2
olarak ayarlayın. - Oluştur'u tıklayın.
- Google Chat uygulamasında bulunan alanınızdan Ana Sayfa sekmesini seçin. Oluşturduğunuz sorunların ayrıntılarını görebilirsiniz.
5. İsteğe bağlı: 1. uygulama: Alan izleme ekleme
Kavramları gözden geçirin
Pub/Sub
Pub/Sub, bu mesajları işleyen hizmetlerden mesaj üreten hizmetleri ayıran, eşzamansız ve ölçeklenebilir bir mesajlaşma hizmetidir. Pub/Sub, yayıncılar ve aboneler olarak adlandırılan, etkinlik üreticileri ve tüketiciler için sistemler oluşturmanıza olanak tanır. Yayıncılar, eş zamanlı uzak prosedür çağrıları (RPC'ler) yerine etkinlikler yayınlayarak abonelerle eşzamansız olarak iletişim kurar.
Yayıncılar, nasıl veya ne zaman işleneceklerine bakılmaksızın etkinlikleri Pub/Sub hizmetine gönderir. Ardından Pub/Sub, etkinlikleri bunlara tepki veren tüm hizmetlere iletir. RPC'ler üzerinden iletişim kuran sistemlerde, yayıncılar abonelerin verileri almasını beklemelidir. Ancak Pub/Sub'daki eşzamansız entegrasyon, sistemin genel esnekliğini ve dayanıklılığını artırır.
Konu: Mesaj özet akışını temsil eden adlandırılmış kaynak. Bir konuyu yayınlamadan veya abone olmak için önce oluşturmalısınız.
Abonelik: Bir konuda yayınlanan mesajları almak için ilgili konuya abonelik oluşturmanız gerekir. Abone istemci, konuda yayınlanan mesajları alır ve işler. Bir konunun birden fazla aboneliği olabilir, ancak belirli bir abonelik tek bir konuya aittir.
Google Workspace etkinlikleri
Google Workspace etkinlikleri, Google Workspace kaynaklarında yapılan değişiklikleri (ör. kaynakların oluşturulması, güncellenmesi veya silinmesi) temsil eder. Uygulamalar, ilgili etkinlikleri eşzamansız olarak almak ve işlemek için Google Workspace kaynaklarına abone olabilir.
Google Workspace Etkinlikleri API'nin, abonelik aracılığıyla bir uygulamaya etkinlikleri nasıl ilettiği aşağıda açıklanmıştır:
- Uygulama, Google Workspace uygulamasındaki alan gibi bir kaynağa abone olduğunda.
- Uygulamanın abone olduğu kaynak değişir.
- Google Workspace uygulaması, Pub/Sub'da bir konuya etkinlik gönderir. Bu etkinlik, uygulamanın Google Workspace aboneliği için bildirim uç noktası görevi görür. Etkinlik, kaynakta nelerin değiştiğiyle ilgili verileri içerir.
- Uygulama, etkinliği içeren Pub/Sub mesajını işler ve gerekirse işlem yapar.
Yorum akışları
Sorun oluştur (güncelleme)
Özel alanla ilgili sorunu giderme (güncelleme)
Sorunu özel alandan kapatma (güncelleme)
Abonelikleri işleme
Kaynak kodunu inceleme
Apps Komut Dosyası projesinin düzenlenmesi gerekiyor.
appsscript.json
// Enables the Workspace Events service.
"enabledAdvancedServices": [
...
{
"userSymbol": "WorkspaceEvents",
"version": "v1",
"serviceId": "workspaceevents"
}
...
]
Configuration.js
// Adds two constants: the first one is the Pub/Sub topic ID and the second one
// is the Pub/Sub subscription ID to be used to retrieve Google Workspace events.
...
const GWS_PUBSUB_TOPIC_ID = `projects/${PROJECT_ID}/topics/workspace-events`;
const GWS_PUBSUB_SUBSCRIPTION_ID =
`projects/${PROJECT_ID}/subscriptions/workspace-events-sub`;
...
ChatApp.js
// Edits the function to delete the subscription at issue closure.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
deleteSubscription(issue.subscriptionId);
...
}
...
}
// Edits the function to create the subscription.
function createIssue(event) {
...
const subscriptionId = createSpaceSubscription(spaceUrl);
const createdIssue = saveCreatedIssue(..., subscriptionId);
...
}
// Edits the function to delete the subscription.
function onRemoveFromSpace(event) {
...
deleteSubscription(issue.subscriptionId);
...
}
Storage.js
// Edits the function to keep track of the subscription ID.
function saveCreatedIssue(..., spaceId, subscriptionId) {
...
appProperties.setProperty(spaceId, JSON.stringify({
...
subscriptionId: subscriptionId,
...
}));
...
}
WorkspaceEvent.js
/**
* Creates a new subscription to Google Workspace Events associated to a
* Google Chat space.
*
* The subscription scope includes message creation events and resources.
*
* @param {string} spaceId the space ID to create a subscription for
* @return the ID of the newly created subscription
*/
function createSpaceSubscription(spaceId) {
const operation = WorkspaceEvents.Subscriptions.create({
targetResource: `//chat.googleapis.com/${spaceId}`,
eventTypes: ["google.workspace.chat.message.v1.created"],
notificationEndpoint: { pubsubTopic: GWS_PUBSUB_TOPIC_ID },
payloadOptions: { includeResource: true },
});
return operation.response.name;
}
/**
* Processes events from subscription by using the Google Cloud PubSub API.
*
* It pulls and acknowledges each event.
*/
function processSubscription() {
const response = UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:pull`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({ maxMessages: 10 })
}
);
const messages = JSON.parse(response.getContentText()).receivedMessages;
for (var messageIndex in messages) {
const message = messages[messageIndex];
const ceType = message.message.attributes["ce-type"];
const dataStr = Utilities.newBlob(Utilities.base64Decode(message.message.data))
.getDataAsString();
if (ceType === "google.workspace.events.subscription.v1.expirationReminder") {
// Renews subscription.
renewSubscription(JSON.parse(dataStr).subscription.name);
} else if (ceType === "google.workspace.chat.message.v1.created") {
// Processes the message text when it's sent in a space.
const chatMessage = JSON.parse(dataStr).message;
if (chatMessage.sender.type !== "BOT") {
console.log("Message was processed.");
}
}
// Acknowledges successful processing to avoid getting it again next time.
ackSubscription(message.ackId);
}
}
/**
* Acknowledges a subscription event by using the Google Cloud PubSub API.
*
* @param {string} ackId the ID of the event acknowledgment to send
*/
function ackSubscription(ackId) {
UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:acknowledge`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({
ackIds: [ackId]
})
}
);
}
/**
* Renews a subscription to Google Workspace Events.
*
* The default time to live option is used.
*
* @param {string} subscriptionId the ID of the subscription to renew
*/
function renewSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.patch({ttl: '0s'}, subscriptionId);
}
/**
* Deletes a subscription to Google Workspace Events.
*
* @param {string} subscriptionId the ID of the subscription to delete
*/
function deleteSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.remove(subscriptionId);
}
Google Cloud projesini güncelle
API'leri etkinleştirme
- Google Cloud konsolunda Google Workspace Etkinlikleri ve PubSub'ı etkinleştirin.
- Menü ☰ > API'ler ve hizmetler > Etkin API'lar ve hizmetler'i tıklayın ve ardından her ikisinin de etkinleştirildiğini onaylayın.
Abonelik başlatma
Tüm çalışma alanı etkinliklerinin yayınlanması için bir Pub/Sub konusu oluşturmanız ve bu konuya abone olmanız gerekir.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Pub/Sub > Konular'a gidin.
- Create topic'i (Konu oluştur) tıklayın.
- Konu Kimliği'ni
workspace-events
olarak ayarlayın. - Varsayılan abonelik ekle onay kutusunu seçin.
- Oluştur'u tıklayın.
Yeni oluşturduğunuz konuya Google Chat'ten Pub/Sub mesajları yayınlama erişimi vermek için şu adımları uygulayın:
- Listeden konuyu seçin.
- İzinler sekmesini seçin.
- Yeni ana hesaplar'a
chat-api-push@system.gserviceaccount.com
ekleyin. - Rol için Pub/Sub Yayıncısı'nı seçin.
- Kaydet'i tıklayın.
Apps Komut Dosyası projesini güncelleme
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > IAM ve Yönetici > Ayarlar'a gidin.
- Proje kimliğini kopyalayın.
Yerel ortamınızda şu adımları uygulayın:
- Terminalinizdeki mevcut dizini
issue-management/3-message-monitoring
olarak değiştirin. İhtiyacınız olan kaynak kodunu içerir. Configuration.js
dosyasındakiPROJECT_ID
adlı dize sabitini, kopyalanan proje kimliğine ayarlayın.Configuration.js
dosyasındakiCHAT_CREDENTIALS
adlı JSON sabitini, daha önce indirdiğiniz özel anahtar dosyası içeriğine ayarlayın.issue-management/2-app-home/.clasp.json
dosyasını geçerli dizininize kopyalayın.- Aşağıdaki komutu çalıştırın:
clasp push
Deneyin
Google Chat'te şu adımları uygulayın:
- Eğik çizgi komutuyla
/create
uygulamaya doğrudan mesaj gönderin. Uygulama bir iletişim kutusu açar. - Başlık'ı
Issue Title 3
olarak ayarlayın. - Açıklama alanını, Sorun
Description 3
olarak ayarlayın. - Oluştur'u tıklayın.
- Yeni oluşturulan alanda, sorunu açıklayan birkaç mesaj gönderin.
- Eğik çizgi komutu
/close
ve çözünürlüğü (ör.Fixed
) içeren bir mesaj gönderin.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Pub/Sub > Abonelikler'e gidin.
- workspace-events-sub aboneliğini seçin.
- Mesajlar sekmesini seçin.
- Pull'u tıklayın. Tabloda, yeni oluşturulan alana gönderdiklerinizle ilgili mesajlar gösterilir.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- Düzenleyici'yi seçin.
WorkspaceEvent.gs
dosyasını seçin.- Çalıştır bölümünde
processSubscription
seçeneğini belirleyin. Run
simgesini tıklayın.Yürütme günlüğünden mesajların işlendiğini görebilirsiniz.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Pub/Sub > Abonelikler'e gidin.
- workspace-events-sub aboneliğini seçin.
- Mesajlar sekmesini seçin.
- Pull'u tıklayın. Tabloda, yeni oluşturulan alana gönderdiklerinizle ilgili mesajlar artık gösterilmez.
- Google Chat'te,
/create
eğik çizgi komutuyla oluşturduğunuz üçüncü soruna ayrılmış alana, sorunu açıklayan birkaç mesaj daha gönderin.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Pub/Sub > Abonelikler'e gidin.
- workspace-events-sub aboneliğini seçin.
- Mesajlar sekmesini seçin.
- Pull'u tıklayın. Tabloda, yeni oluşturulan alana gönderdiklerinizle ilgili mesajlar gösterilmez.
6. İsteğe bağlı: 1. Uygulama: Kapsayıcılık yardımı ekleme
Kavramları gözden geçirin
Üretken yapay zeka yönlendirme, üretken yapay zeka modellerini belirli bir çıktı türüne yönlendirmeye yönelik talimat veya soru oluşturma sanatıdır. İstemlere kurallar ve koşullar ekleyerek yanıtları kontrol altında tutmak yaygın bir uygulamadır. Bu, sonucun güvenli, alakalı, tutarlı ve beklentilerle uyumlu olmasına yardımcı olabilir.
Yorum akışları
Abonelikleri işleme (güncelleme)
Kaynak kodunu inceleme
Apps Komut Dosyası projesinin düzenlenmesi gerekiyor.
WorkspaceEvent.js
// Edits the function to replace logging by an actual card message.
function processSubscription() {
...
for (var messageIndex in messages) {
...
} else if (ceType === "google.workspace.chat.message.v1.created") {
...
const inclusivityCheck = getInclusivityFeedback(chatMessage.text);
if (inclusivityCheck !== "It's inclusive!") {
createAppMessageUsingChatService({
cardsV2: [{ cardId: "1", card: { header: {
title: "Inclusivity",
subtitle: `The following words are not inclusive: ${inclusivityCheck}`
}}}]
},
chatMessage.space.name);
}
...
}
...
}
...
}
VertexAi.js
/**
* Gets feedback on inclusivity for a text with the Gemini Pro model using
* Vertex AI API.
*
* Returns "It's inclusive!" when it is otherwise a list of word(s) that might not
* be optimal.
*
* @param {string} text the text
* @return {string} the feedback
*/
function getInclusivityFeedback(text) {
const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
+ `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
+ "/publishers/google/models/gemini-1.0-pro:generateContent";
const options = {
method: "POST",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
contentType: "application/json",
payload: JSON.stringify({
contents: {
role: "user",
parts: {
text: "Are there any words that obviously go against inclusivity "
+ "in this text:"
+ `\n\n----------\n${text}\n----------\n\n`
+ "If there are not, answer \"It's inclusive!\" "
+ "otherwise answer by listing them separated by commas. "
+ "Do not answer with any explanation."
}
},
safetySettings: {
category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold: "BLOCK_LOW_AND_ABOVE"
},
generationConfig: {
temperature: 0.2,
topP: 0.8,
topK: 40
}
})
};
return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
.candidates[0].content.parts[0].text;
}
Apps Komut Dosyası projesini güncelleme
Yerel ortamınızda şu adımları uygulayın:
- Terminalinizdeki mevcut dizini
issue-management/4-inclusivity-help
olarak değiştirin. İhtiyacınız olan kaynak kodunu içerir. issue-management/3-message-monitoring/.clasp.json
dosyasını geçerli dizininize kopyalayın.issue-management/3-message-monitoring/Configuration.js
dosyasını, mevcut dizininizin yerini alması için mevcut dizininize kopyalayın.- Aşağıdaki komutu çalıştırın:
clasp push
Deneyin
Google Chat'te şu adımları uygulayın:
- Eğik çizgi komutuyla
/create
uygulamaya doğrudan mesaj gönderin. Uygulama bir iletişim kutusu açar. - Başlık'ı
Issue Title 4
olarak ayarlayın. - Açıklama alanını, Sorun
Description 4
olarak ayarlayın. - Oluştur'u tıklayın.
- Yeni oluşturulan alana
It happened to me last week as well
gönderin.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- Düzenleyici'yi seçin.
WorkspaceEvent.gs
dosyasını seçin.- Çalıştır bölümünde
processSubscription
seçeneğini belirleyin. - Çalıştır'ı tıklayın. Yürütme günlüğünden mesajların işlendiğini görebilirsiniz.
Google Chat'te şu adımları uygulayın:
- Uygulamanın, yeni oluşturulan alanda kapsayıcılık yardımı göndermediğine dikkat edin.
- Yeni oluşturulan alanda mesajı
I had to add myself from the master to fix it
gönderin.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- Düzenleyici'yi seçin.
WorkspaceEvent.gs
dosyasını seçin.- Çalıştır bölümünde
processSubscription
seçeneğini belirleyin. - Çalıştır'ı tıklayın. Yürütme günlüğünden mesajların işlendiğini görebilirsiniz. Google Chat'te uygulama, yeni oluşturulan alanda bir kapsayıcılık yardım mesajı gönderdi.
7. İsteğe bağlı: Uygulama 1: Tercih ekleme
.
Kavramları gözden geçirin
Aksesuar widget'ı, bir uygulama tarafından gönderilen mesajın alt kısmına eklenen kenarlıksız bir widget'tır. Bu widget genellikle belirli mesajlar bağlamında kullanıcının hızlı tepki vermesini sağlamak için kullanılır. Teknik olarak, bu düğme kart düğmeleriyle aynı temel ilkelere dayanır.
Yorum akışları
Kapsayıcılık yardımını devre dışı bırakın
Kaynak kodunu inceleme
Apps Komut Dosyası projesinin düzenlenmesi gerekiyor.
ChatApp.js
// Edits the function to handle the inclusivity help disablement action for a
// given space.
function onCardClick(event) {
...
if (event.action.actionMethodName === "disableInclusivityHelp") {
disableInclusivityHelp(event.common.parameters.spaceId);
}
}
Storage.js
// Edits the function to keep track of the inclusivity help setting.
function saveCreatedIssue(title, description, spaceId, subscriptionId) {
appProperties.setProperty(spaceId, JSON.stringify({
...
inclusivityHelp: true,
...
}));
...
}
/**
* Disables inclusivity help in a space.
*
* @param {string} spaceId the ID of dedicated space of the issue
*/
function disableInclusivityHelp(spaceId) {
var issue = JSON.parse(appProperties.getProperty(spaceId));
issue.inclusivityHelp = false;
appProperties.setProperty(spaceId, JSON.stringify(issue));
}
/**
* Checks whether the app should help with inclusivity in a given space.
*
* @param {string} spaceId the ID of dedicated space of the issue
* @return whether the app should help with inclusivity
*/
function shouldHelpWithInclusivity(spaceId) {
return JSON.parse(appProperties.getProperty(spaceId)).inclusivityHelp;
}
WorkspaceEvent.js
// Edits the function to display the accessory widget to the existing card message.
function processSubscription() {
...
for (var messageIndex in messages) {
...
} else if (ceType === "google.workspace.chat.message.v1.created") {
...
if (... && shouldHelpWithInclusivity(chatMessage.space.name)) {
createAppMessageUsingChatService({
...
accessoryWidgets: [{ buttonList: { buttons: [{
altText: "Disable inclusivity help",
icon: {
iconUrl: "https://upload.wikimedia.org/.../Stop_hand_rugen.png"
},
onClick: { action: {
function: "disableInclusivityHelp",
parameters: [{
key: "spaceId",
value: chatMessage.space.name
}]
}}
}]}}]
}, ...);
...
}
...
}
...
}
...
}
Apps Komut Dosyası projesini güncelleme
Yerel ortamınızda şu adımları uygulayın:
- Terminalinizdeki mevcut dizini
issue-management/5-disable-help
olarak değiştirin. İhtiyacınız olan kaynak kodunu içerir. issue-management/4-inclusivity-help/.clasp.json
dosyasını geçerli dizininize kopyalayın.issue-management/4-inclusivity-help/Configuration.js
dosyasını, mevcut dizininizin yerini alması için mevcut dizininize kopyalayın.- Aşağıdaki komutu çalıştırın:
clasp push
Deneyin
Yardımı devre dışı bırak
- Google Chat'te,
/create
eğik çizgi komutuyla oluşturduğunuz dördüncü soruna ayrılmış alanaI had to add myself from the master to fix
mesajını gönderin.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- Düzenleyici'yi seçin.
WorkspaceEvent.gs
dosyasını seçin.- Çalıştır bölümünde
processSubscription
seçeneğini belirleyin. - Çalıştır'ı tıklayın. Yürütme günlüğünden mesajların işlendiğini görebilirsiniz.
Google Chat'te şu adımları uygulayın:
- Uygulamanın, bir aksesuar widget'ıyla soruna ayrılmış alana kapsayıcılık yardımı içeren bir mesaj gönderdiğine dikkat edin.
- Kapsayıcılık yardımını devre dışı bırakmak için aksesuar widget'ını tıklayın.
Devre dışı bırakmayı kontrol et
- Google Chat'te,
/create
eğik çizgi komutuyla oluşturduğunuz dördüncü soruna ayrılmış alanaI had to add myself from the master to fix
mesajını gönderin.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- Düzenleyici'yi seçin.
WorkspaceEvent.gs
dosyasını seçin.- Çalıştır bölümünde
processSubscription
seçeneğini belirleyin. - Çalıştır'ı tıklayın. Yürütme günlüğünden mesajların işlendiğini görebilirsiniz. Google Chat devre dışı bırakıldığından uygulama, soruna ayrılmış alana kapsayıcılık yardımı içeren bir mesaj göndermedi.
8. Uygulama 2: Oluşturma
Kavramları inceleyin
Üretken yapay zeka temel çizgisi
Amaç, yapay zeka modellerini doğrulanabilir bilgi kaynaklarına bağlayarak daha olgusal ve güvenilir hale getirmektir. Bu teknik, yapay zekanın bilgi üretmesini önlemeye yardımcı olur ve yanıtların bağlam açısından alakalı ve daha az taraflı hale getirilmesine yardımcı olabilir.
Doğal dil
Yapay veya bilgisayar tabanlı dillerin aksine, insanlar tarafından günlük iletişim için konuşulan veya yazılan herhangi bir dil.
Cloud Storage
Cloud Storage, verilerin tüm dünyada her an her miktarda depolanıp alınmasını sağlar. Web sitesi içeriği sunma, arşiv ve olağanüstü durum kurtarma amacıyla veri depolama veya doğrudan indirme yoluyla büyük veri nesnelerini kullanıcılara dağıtma dahil olmak üzere çeşitli senaryolarda kullanılabilir.
Dialogflow CX veri deposu
Dialogflow CX, son kullanıcının belirli verilerden sorduğu sorulara yanıt bulmak için veri deposu aracıları tarafından kullanılan web sitesi ve belge koleksiyonları olan veri depoları ile entegre olur. Veri deposu aracısı, belirli bir soru için kaynak içerikten bir yanıt arar ve bulguları tutarlı bir yanıtta özetler. Ayrıca, son kullanıcının daha fazla bilgi edinebilmesi için yanıt kaynaklarına destekleyici bağlantılar da sağlar.
İnceleme mimarisi
Bu Google Chat uygulaması Dialogflow CX ile geliştirilmiştir ve aşağıdaki şekilde çalışır:
- Kullanıcı, doğrudan mesaj aracılığıyla veya bir alan üzerinden uygulamaya mesaj gönderir.
- Bir Dialogflow CX aracısı olan ve bir Google Cloud projesiyle ilişkilendirilmiş olan uygulama, mesajı işler.
- Uygulama, Cloud Storage'da bulunan bir veri deposuyla entegre olur.
- Uygulama, doğrudan mesajla veya orijinal alanda eşzamanlı bir yanıt gönderir.
Yorum akışları
Soruyu cevapla
Kaynak kodunu inceleme
İhtiyacınız olan tek kaynak kod değil, temel oluşturmak için kullandığınız verilerdir.
google-chat-overview.pdf
Google Chat uygulamalarının yapılandırılmamış bilgilerini, Google Workspace geliştiricileri web sitesindeki bir sayfanın basılı sürümünü içerir.
Google Cloud projesini güncelleyin
Google Cloud Console'da şu adımları uygulayın:
- Dialogflow ve Cloud Storage API'lerini etkinleştirin.
- Vertex AI Agent Builder API'yi etkinleştirin.
- Menü ☰ > API'ler ve hizmetler > Etkin API'ler ve hizmetler'i tıklayın ve ardından tüm API'ların etkinleştirildiğinden emin olun.
.
Dialogflow CX veri deposu aracısı oluşturma
Bilgi verilerini başlatma
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Cloud Storage > Paketler'i tıklayın.
- Oluştur'u tıklayın.
- name (ad) öğesini
gchat-knowledge
olarak ayarlayın. - Oluştur'u tıklayın.
- gchat-knowledge paketini seçin.
- Dosyaları yükle'yi tıklayın.
- Yerel ortamınızdan
knowledge-app/grounding/google-chat-overview.pdf
dosyasını seçin.
Uygulama oluşturma
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın.
- Yeni uygulama'yı tıklayın.
- Sohbet türünü seçin.
Company name
alanını şirket adınız olarak ayarlayın.Agent name
öğesiniknowledge
olarak ayarlayın.- Devam'ı tıklayın.
- Yeni veri deposu oluştur'u tıklayın.
- Veri kaynağı olarak Cloud Storage'ı seçin.
- Dosya'yı seçin.
- Göz at'ı tıklayın.
google-chat-overview.pdf
dosyasını seçin.- Devam'ı tıklayın.
- Veri deposu adını
gchat-knowledge-ds
olarak ayarlayın. - Oluştur'u tıklayın.
- Tabloda gchat-knowledge-ds veri deposunu seçin.
- Oluştur'u tıklayın.
- Birkaç dakika sonra Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın ve uygulamayı görebildiğinizi fark edin.
- Menü ☰ > Aracı oluşturucu > Veri depoları'nı tıklayın.
- gchat-knowledge-ds veri deposunu tıklayın. Dokümanların sayısı
1
. Bu, dokümanların hazır olduğunu gösterir.
Uygulamayı tamamlayın ve test edin
Dialogflow CX konsolunda şu adımları uygulayın:
- Google Cloud projenizi seçin.
- Bilgi aracısını seçin.
- Aracı ayarları > Üretken yapay zeka > Üretken aracı'yı seçin.
- Modeli Text Bison'dan Gemini Pro'ya geçirin.
- Kaydet'i tıklayın.
- Test aracı'nı tıklayın.
What is Google Chat?
gönder. Temsilci anlamlı bir cümleyle cevap verir.
Google Chat uygulamasını entegre etme
Dialogflow CX konsolunda şu adımları uygulayın:
- Google Cloud projenizi seçin.
- Bilgi aracısı satırında > Adı kopyala'yı tıklayın.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Google Chat API yapılandırmasına gidin.
- Bağlantı ayarları bölümünde Dialogflow'u seçin.
- Dialogflow ayarları bölümünde Dialogflow CX'i seçin.
- Aracı veya Ortam kaynağı adı'nı, kopyaladığınız aracı adı olarak ayarlayın.
- İki eğik çizgi komutunu kaldırın.
- Google Chat'te, Google Chat uygulamasına doğrudan mesajla
What is Google Chat?
gönderin. Temsilci anlamlı bir şekilde yanıt verir.
9. İsteğe bağlı: Uygulama 2: Kaynak ekleme
Kavramları inceleyin
Dialogflow CX webhook
İş mantığını barındıran veya diğer hizmetleri çağıran bir hizmet. Dialogflow CX oturumu sırasında webhook'lar dinamik yanıtlar oluşturmak, toplanan verileri doğrulamak veya arka uçta işlemleri tetiklemek için doğal dil işleme tarafından ayıklanan verilerden yararlanabilir.
Cloud Functions
Cloud Functions sunucusuz arka uçlar oluşturmak, gerçek zamanlı veri işleme gerçekleştirmek ve akıllı uygulamalar oluşturmak için idealdir. Temel hazırlık, yönetim, yama veya güncelleme için sunucu gerekmez. Bu uygulamalar otomatik olarak ölçeklenir, yüksek düzeyde kullanılabilirdir ve hatadan etkilenmez.
Yorum akışları
Soruyu cevapla (güncelleme)
Kaynak kodunu inceleme
İhtiyacınız olan tek kaynak kodu, temsilci yanıtlarını Google Chat mesajlarına uyarlama işlevidir. Webhook olarak kullanılır.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "agent-response-adapter",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It takes a Dialogflow CX agent response as input and returns a
* valid Google Chat card message with both the text and source links
*/
functions.http('agent-response-adapter', (request, response) => {
// Creates Google Chat buttons based on the data store agent response
// grounding details.
var linkTitles = [];
var linkButtons = [];
const grounding = request.body.messages[1].payload.richContent[0][0];
if (grounding.type === "match_citations") {
// Supports citation match type.
grounding.citations.forEach((citation) => {
// Avoid duplications.
if (linkTitles.indexOf(citation.title) < 0) {
linkButtons.push({
text: citation.title,
onClick: { openLink: {
url: citation.actionLink
}}
});
linkTitles.push(citation.title);
}
});
} else if (grounding.type === "info") {
// Supports info type.
if (linkTitles.indexOf(grounding.title) < 0) {
linkButtons.push({
text: grounding.title,
onClick: { openLink: {
url: grounding.actionLink
}}
});
linkTitles.push(grounding.title);
}
}
// Sends the Dialogflow CX fulfillment response to replace the agent response
// with the Chat message with text and source buttons.
response.send({ fulfillment_response: {
merge_behavior: "REPLACE",
messages: [{ payload: {
// Reuses the original data store agent response text.
text: request.body.messages[0].text.text[0],
cardsV2: [{
cardId: "sourcesCard",
card: { sections: [{
header: "Sources",
widgets: [{ buttonList: {
buttons: linkButtons
}}]
}]}
}]
}}]
}});
});
Google Cloud projesini güncelle
Google Cloud Console'da şu adımları uygulayın:
- Cloud Build, Cloud Functions, Cloud Logging, Artifact Registry ve Cloud Run API'lerini etkinleştirin.
- Menü ☰ > API'ler ve hizmetler > Etkin API'lar ve hizmetler'i tıklayın ve ardından API'ların etkinleştirildiğini onaylayın.
Dialogflow CX veri deposu aracısını güncelleme
Mümkün olduğunda bir Cloud Functions işlevini dağıtmanız ve Dialogflow CX webhook'unu birden fazla kaynakla tetikleyecek şekilde güncellemeniz gerekir.
Birden fazla kaynağı döndürme
Varsayılan olarak, yeni bir veri deposu aracısı maksimumda yalnızca bir kaynak döndürür, ancak daha fazla kaynak için değiştirebilirsiniz.
Dialogflow CX konsolunda şu adımları uygulayın:
- Google Cloud projenizi seçin.
- Bilgi aracısını seçin.
- Başlangıç sayfası'nı seçin.
- Veri depolarını düzenle'yi seçin.
- Aracı yanıtları bölümü altında, Veri deposu yanıt seçenekleri'ni
5
olarak ayarlayın. - Kaydet'i tıklayın.
Cloud Functions işlevini başlatın
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Cloud Functions'ı tıklayın.
- İşlev oluştur'u tıklayın.
- Temel Bilgiler altında ad öğesini
function-1
olarak ayarlayın. - Kimlik Doğrulama altında, Kimliği doğrulanmayan çağrılara izin ver radyo düğmesini seçin.
- Çalışma zamanı, derleme, bağlantılar ve güvenlik ayarları bölümünde Maksimum örnek sayısı'nı
3
olarak ayarlayın. - İleri'yi tıklayın.
- Giriş noktası'nı
agent-response-adapter
olarak ayarlayın. - Varsayılan içeriği
knowledge-app/agent-response-adapter
dizinindeki dosyalarla değiştirin. - Deploy'u (Dağıt) tıklayın.
- İşlevin dağıtılması için birkaç dakika beklerken URL'yi kopyalayın.
Webhook'u başlat
Yeni dağıtılan işlevi tetikleyen bir webhook kullanmak için Dialogflow CX aracısını yapılandırmanız gerekir.
Dialogflow CX konsolunda şu adımları uygulayın:
- Google Cloud projenizi seçin.
- Bilgi aracısını seçin.
- Yönet > Webhook'lar > Oluştur'u seçin.
- Görünen ad'ı
Google Chat Response Adapter
olarak ayarlayın. - Webhook URL'si değerini daha önce kopyaladığınız URL'ye ayarlayın.
- Kaydet'i tıklayın.
- Build (Derle) seçeneğini tıklayın.
- Başlangıç sayfası'nı seçin.
- Veri depolarını düzenle'yi seçin.
- Webhook ayarları bölümünde Webhook'u etkinleştir açma/kapatma düğmesini tıklayın.
- Webhook İçin Google Sohbet Yanıt Bağdaştırıcısı'nı seçin.
- tag öğesini
arbitrary_tag
olarak ayarlayın. - Kaydet'i tıklayın.
Test uygulaması
- Google Chat'te, Google Chat uygulamasına doğrudan mesajla
What is Google Chat?
gönderin. Temsilci, anlamlı bir şey ve varsa kaynakların yer aldığı bir kartla yanıt verir.
10. Uygulama 3: Oluşturma
Kavramları inceleyin
Sohbet etkileşimleri
Doğal dil üzerinden iki veya daha fazla kişi arasında karşılıklı bilgi ve fikir alışverişidir. Bu durum, genellikle durum bilgisiz, yüksek düzeyde yapılandırılmış ve hoşgörüsüz değişimlere dayanan teknik arayüzlerle karşıtlık yaratır.
OpenAPI Spesifikasyonu
API yaşam döngüsünün her aşamasında bilgi aktarmak için tutarlı bir yol sağlar. HTTP API'leri için bir spesifikasyon dilidir. Yapıyı ve söz dizimini, API'nin oluşturulduğu programlama diline uygun olmayacak şekilde tanımlar. API spesifikasyonları genellikle YAML veya JSON dilinde yazılır. Bu sayede, spesifikasyonun paylaşılması ve kullanılması kolaylaşır.
Dialogflow CX aracısı
Aracı uygulamalarının temel yapı taşı. Bir aracı uygulamasında genellikle çok sayıda aracı bulunur. Burada her temsilci, belirli görevleri yerine getirmek için tanımlanır. Aracı verileri LLM'ye sağlanır. Böylece soruları yanıtlamak ve görevleri yürütmek için gereken bilgilere sahiptir. Her aracı bilgi sağlayabilir, harici hizmetlere sorgu gönderebilir veya görüşme işlemeyi, alt görevleri yerine getirmesi için Dialogflow CX akışına veya başka bir aracıya erteleyebilir.
Dialogflow CX aracı
Araçlar, aracı uygulamalarını harici sistemlere bağlamak için kullanılır. Bu sistemler, aracı uygulamaların bilgisini artırabilir ve karmaşık görevleri verimli bir şekilde yürütmelerini sağlayabilir.
İnceleme mimarisi
Bu Google Chat uygulaması Dialogflow CX ile geliştirilmiştir ve aşağıdaki şekilde çalışır:
- Kullanıcı, doğrudan mesaj aracılığıyla veya bir alan üzerinden uygulamaya mesaj gönderir.
- Bir Dialogflow CX aracısı olan ve bir Google Cloud projesiyle ilişkilendirilmiş olan uygulama, mesajı işler.
- Uygulama bir aracıyla entegre oluyor.
- Uygulama, doğrudan mesajla veya orijinal alanda eşzamanlı bir yanıt gönderir.
Yorum akışları
Yorum al
Kaynak kodunu inceleme
İhtiyaç duyduğunuz tek kaynak kodu, aracının araç olarak kullandığı arka uç hizmetiyle alay edecek işlevdir.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "feedback-app-backend",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It always returns OK in plain text.
*/
functions.http('feedback-app-backend', (request, response) => {
response.send('OK');
});
service-openapi.yaml
// Defines the backend service structure and how to request it.
openapi: 3.1.0
info:
title: Review Store
license:
name: Apache 2.0
identifier: Apache-2.0
version: 0.0.1
servers:
- url: https://us-central1-project-0.cloudfunctions.net
paths:
/store-review:
post:
operationId: storeReview
summary: Store a new review
requestBody:
content:
application/json:
schema:
type: object
properties:
stars:
type: integer
format: int64
responses:
'200':
description: success
content:
application/json:
schema:
type: string
Arka uç hizmet modelini başlatma
Dialogflow CX aracı uygulamasının entegre edip araç olarak çağırması gereken bir arka uç hizmetini simüle etmek için bir Cloud Functions işlevi dağıtırsınız.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Cloud Functions'ı tıklayın.
- Create function'ı (İşlev oluştur) tıklayın.
- Temel Bilgiler altında ad öğesini
function-2
olarak ayarlayın. - Kimlik Doğrulama altında, Kimliği doğrulanmayan çağrılara izin ver radyo düğmesini seçin.
- Çalışma zamanı, derleme, bağlantılar ve güvenlik ayarları bölümünde Maksimum örnek sayısı'nı
3
olarak ayarlayın. - İleri'yi tıklayın.
- Giriş noktası'nı
feedback-app-backend
olarak ayarlayın. - Varsayılan içeriği
feedback-app
dizinindeki dosyalarla değiştirin. - Deploy'u (Dağıt) tıklayın.
- İşlevin dağıtılması için birkaç dakika beklerken URL'yi kopyalayın.
Dialogflow CX aracısı uygulaması oluşturma
Uygulama oluşturma
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın.
- Yeni uygulama'yı tıklayın.
- Agent'ı (Temsilci) seçin.
- Görünen ad'ı
Feedback App
olarak ayarlayın. - Oluştur'u tıklayın.
Aracı başlatın
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın.
- Geri Bildirim Uygulaması aracısını seçin.
- Araçlar > + Oluştur'u tıklayın.
- Ad'ı
review
olarak ayarlayın. - OpenAPI'yi seçin.
- description öğesini aşağıdaki değere ayarlayın:
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
feedback-app/service-openapi.yaml
dosyasındaki$URL
öğesini daha önce kopyaladığınız URL ile değiştirin.YAML Schema
öğesinifeedback-app/service-openapi.yaml
dosyasının düzenlenmiş içeriğine ayarlayın.- Kaydet'i tıklayın.
Aracıyı başlatma
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın.
- Geri Bildirim Uygulaması aracısını seçin.
- Aracılar > Varsayılan Üretken Aracı'yı seçin.
- Temsilci adı'nı
Feedback collector
olarak ayarlayın. goal
değerini şu değere ayarlayın:
You are an agent that collects reviews from Google Chat app developers. A review may be between 0 and 5 stars. The more stars, the more positive the review.
- instructions'i aşağıdaki değere ayarlayın:
If the developer didn't provide the number of stars, ask for the number of stars. After the developer provides the number of stars of the review, confirm the number with the developer and use ${TOOL: review} to store the review with the number of stars. If ${TOOL: review} fails, apologize and ask to try again later. Otherwise, thank the developer for the review.
- Kaydet'i tıklayın.
Test uygulaması
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Aracı oluşturucu > Uygulamalar'ı tıklayın.
- Geri Bildirim Uygulaması aracısını seçin.
- Önizleme aracısı'na gidin.
- Temsilci altında Geri bildirim toplayıcı'yı seçin.
- Üretken model seçin bölümünde gemini-pro'yu seçin.
- Başlamak için
Hello!
mesajını gönderin.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Menü ☰ > Cloud Functions'ı tıklayın.
- işlev-2 > Günlükler'i seçin. Bazı günlüklerde Google-Dialogflow arayan olarak gösterilir.
Google Chat uygulamasını entegre edin
Dialogflow CX konsolunda şu adımları uygulayın:
- Google Cloud projenizi seçin.
Feedback App
temsilcisinin işlem menüsünü tıklayın.- Adı kopyala'yı tıklayın.
Google Cloud Console'da aşağıdaki adımları uygulayın:
- Google Chat API yapılandırmasına gidin.
- Aracı veya Ortam kaynağı adı'nı daha önce kopyaladığınız aracı adı olarak ayarlayın.
- Başlamak için Google Chat'te
Hello!
adlı kullanıcıyı Google Chat uygulamasına doğrudan mesajla gönderin. Temsilci, Dialogflow CX konsolundaki testinize benzer şekilde yanıt verir.
11. Temizleme
Google Cloud projesini sil
Bu codelab'de kullanılan kaynaklar için Google Cloud Hesabınızın ücretlendirilmesini önlemek amacıyla Google Cloud projesini silmenizi öneririz.
Google Cloud Console'da aşağıdaki 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.
Apps Komut Dosyası projesini silin
Apps Komut Dosyası projenizi de silmenizi öneririz.
Apps Komut Dosyası konsolunda şu adımları uygulayın:
- Projenizi seçin.
- İşlem menüsünü tıklayın.
- Kaldır'ı tıklayın.
12. Tebrikler
Tebrikler! Gemini ile Google Chat uygulamaları geliştirdiniz.
Sırada ne var?
Bu codelab'de yalnızca basit kullanım alanlarını gösterdik ancak Google Chat uygulamalarınızda göz önünde bulundurmanız gereken birçok genişletme alanı vardır. Örneğin:
- Gümrükler de dahil olmak üzere diğer üretken yapay zeka modelleriyle entegrasyon yapın.
- Ses, resim ve video gibi diğer medya türlerini destekler.
- Çok modluluğu kullanın.
- Daha uzun bağlam aralıklarından ve geri bildirim döngülerinden yararlanın.
- Marketplace'te üretime hazır Google Chat uygulamaları yayınlayın. Geliştiricilerin kullanabileceği çok sayıda kaynak (ör. YouTube videoları, belge web siteleri, kod örnekleri ve eğitici içerikler)
- Kuruluşunuz için Google Chat'i etkinleştirin. İçe aktarma modu özelliği kullanmaya başlamayı kolaylaştırır.
Daha fazla bilgi
- Google Chat için geliştirici dokümanları web sitesi
- Google Chat ve Dialogflow CX entegrasyonu
- Tüm Google Chat örnekleri için GitHub deposu
- Google Chat içe aktarma modu
- Apps Komut Dosyası için geliştirici belgeleri web sitesi
- Google Workspace Developers YouTube kanalı
- Google Cloud Geliştirici Merkezi
- Vertex AI'da üretken yapay zeka
- Üretken Yapay Zeka Modelleri
- Üretken Yapay Zeka Özel Modelleri
- Üretken yapay zeka çok modluluğu
- Üretken yapay zeka için uzun bağlam aralıkları
- Üretken yapay zeka geri bildirim döngüsü