Building Trustable AI at 100 MPH

1. Genel Bakış

Yapay zeka artık birçok yazılım sisteminin bir parçası olsa da yapay zeka uygulaması oluşturmak, kullanıcıların güvenebileceği bir uygulama oluşturmakla aynı şey değildir. Birçok gerçek dünya ortamında zorluk, yalnızca yanıt oluşturmakla sınırlı değildir. Zorluk, zamanında, temellendirilmiş, uygulanabilir ve insan uzmanlığıyla uyumlu bir yanıt oluşturmaktır.

Bu codelab'de, bu fikirleri somut ve ilgi çekici bir şekilde gösteren bir yarış antrenörü simülasyonu oluşturacaksınız. Uygulama, bir yarış pistinde hareketi canlandırmak ve antrenman rehberliği oluşturmak için sanal bir yarış arabasından gelen telemetriyi kullanır. Senaryo yarış olsa da aynı mimari fikirler sağlık, üretim, lojistik ve güvenin önemli olduğu diğer alanlar için de geçerlidir.

Yüksek hızlı bir telemetri verileri akışıyla çalışacak, bu verileri yapay zeka muhakemesi için faydalı ve verimli bir biçime dönüştürecek ve daha güvenilir yanıtlar üretmek için LLM tabanlı çıkışı kodlanmış insan rehberliğiyle birleştireceksiniz.

Ne oluşturacaksınız?

Bu codelab'de, aşağıdakileri yapabilen güvenilir bir yapay zeka prototipi oluşturacaksınız:

  • Google Cloud'da çalışan sanal bir yarış arabasından telemetri yayınlama
  • Chrome kullanarak arabanın yarış pistinde hareket etmesini görselleştirme
  • Ham telemetriyi yapay zekaya hazır girişe dönüştürür
  • Google Gemini tarafından desteklenen bir strateji katmanı uygular
  • Model Çıkışını Kodlanmış İnsan Rehberliği ve Güvenlik Kurallarıyla Birleştirir
  • Kullanıcıya Yönelik Bir Arayüz Üzerinden Koçluk Geri Bildirimi Sunar

Öğrenecekleriniz

Bu codelab'in sonunda şunları yapabileceksiniz:

  • Yapay Zeka Sistemlerini Daha Güvenilir Kılan Unsurları Açıklama
  • Modüler Yapay Zeka Mimarisi Ne İşe Yarar?
  • Basit bir simüle edilmiş telemetri ardışık düzeni oluşturma
  • Büyük Dil Modeliyle Kullanılmak Üzere Faydalı ve Yapılandırılmış Veriler Hazırlama
  • Güveni Artırmak İçin Koruma Duvarları ve İnsan Tarafından Yönlendirilen Kurallar Uygulama
  • Bu Mimarinin Diğer Alanlara Nasıl Uygulanabileceğini Değerlendirme

2. İhtiyacınız Olanlar

Başlamadan önce gerekli hesapların, araçların ve hizmetlerin hazır olduğundan emin olun.

Ön koşullar

Aşağıdakilere sahip olmanız gerekir:

  • Gmail adresi kullanan kişisel bir Google Hesabı
  • Google Cloud'a erişim ve KSA hakkında temel bilgiler
  • Etkin bir faturalandırma hesabı veya bulut kredileri
  • Gemini ile Google Cloud ve üretken yapay zeka hakkında genel bilgi

Gemini, Google'ın en gelişmiş akıl yürütme temeli üzerine kurulu yapay zeka modelidir ve her fikri hayata geçirir. Çok formatlı anlama, temsilci tabanlı ve sezgisel kodlama için harika bir modeldir.

Gemini

Google Cloud'u kullanmak için kredi edinme

Kredilerinizi kullanmak için bu bağlantıyı ziyaret edin ve Gmail e-posta adresiyle (gmail.com alan adı) giriş yapın. Ardından, kredileri Google Cloud Platform (GCP) faturalandırma hesabınıza kabul edin. Krediler hesabınıza uygulanır.

3. Güvenilir Yapay Zeka Neden Önemlidir?

Birçok yapay zeka sistemi akıcı ve ikna edici yanıtlar üretebilir ancak akıcılık, güvenilirlikle aynı şey değildir. Gerçek dünya sistemlerinde kullanıcılar genellikle güvenlik kurallarıyla sınırlanmış ve alan uzmanlığıyla şekillendirilmiş, zamanında ve temellendirilmiş yanıtlar ister.

Bu durum, özellikle bir sistem hızlı değişen verilerle çalışırken önem kazanır. Çok geç gelen bir yanıt işe yaramayabilir. Kendinden emin bir şekilde yanıt veren ancak önemli bağlamı göz ardı eden bir yanıt yanıltıcı olabilir. İnsan uzmanlığıyla bağlantısı olmayan bir yanıt, kusursuz görünse bile güvenilir olmayabilir.

Bu codelab'de kullanılan yarış arabası senaryosunda sorun, yapay zekanın ilginç bir şey söyleyip söyleyemeyeceği değildir. Buradaki sorun, sistemin faydalı, güvenli, zamanında ve duruma uygun tavsiyeler verip veremeyeceğidir.

Küçük bir telemetri örneğine bakalım ve iki olası çıktıyı karşılaştıralım:

Racing Car Telemetry Data
{
   "speedMph": 118,
   "throttle": 91,
   "frontGrip": "nominal",
   "rearGrip": "low",
   "trackPosition": "Turn 1 Entry"
}

Naive AI response

"Stay aggressive on the throttle and carry your speed into Turn 1"

Güvene dayalı yanıt

"Rear grip is low at Turn 1 entry. Reduce your throttle slightly and prioritize a stable corner entry"

Farkı görüyor musunuz?

Yalnızca basit yapay zeka yanıtına güvenirsek ne olur?

İlk yanıt kendinden emin bir şekilde veriliyor ancak riski göz ardı ediyor. İkinci yanıt, bağlamı ve kısıtlamayı yansıttığı için daha faydalı.

LLM'yi sistemin tamamı olarak ele almak yerine, güvenilirliği artırmak için daha geniş bir mimarinin bir parçası olarak ele almanız gerekir. Ayrıca, yarış arabası, tıbbi prosedür, havacılık, elektrik şebekesi, ticaret sistemi, denizcilik navigasyonu vb. gibi birçok uygulama, tavsiyelerin uygulanabilir olması için yeterince hızlı bir şekilde iletilmesini gerektirir.

Şimdi bu tür bir mimarinin nasıl oluşturulacağını anlayalım.

4. Yüksek Hızlı Yapay Zeka ve Modüler Güvenilir Mimariyi Anlama

Bazı yapay zeka sistemleri çok farklı davranışlar gerektirir. Değişen koşullara hızlı tepki vermeli ve daha yavaş, daha düşünceli muhakemeyi de desteklemelidir.

Modüler mimari, bu sorumlulukları farklı yollara ayırır. Bir yol, gelen sinyallerin anında ve zamana duyarlı yorumlanmasını sağlayan refleksif bir yol olabilir. Diğer bir yol ise stratejiye odaklanarak daha üst düzey akıl yürütmeyi ve bağlama daha duyarlı karar vermeyi destekleyebilir. Diğer yollar, diğer işlev türlerini hedefler.

Mimari Diyagramı

Bazı kararların anında alınması gerekir. Bazı kararlar daha uzun düşünme süresinden faydalanır.

Güvenilir yapay zeka için genellikle her ikisi de gerekir.

Bu mimari ayrım, sistemin daha zengin yapay zeka destekli rehberliği desteklerken yanıt vermeye devam etmesine yardımcı olur. Ayrıca, insan tarafından yönlendirilen kısıtlamaları ve alan bilgisini tanıtmak için net bir yer oluşturur.

Bu küçük programda, Python işlevleri olarak uygulanan bir refleks yolu ve bir strateji yolu vardır.

const telemetry = {
  speed: 147,
  grip: 0.68,
  corner_type: "sharp",
  lap_trend: "entering_corners_too_fast",
};

function reflexPath(event: typeof telemetry): string {
  if (event.grip < 0.70) {
    return "REFLEX: Reduce throttle now";
  }
  return "REFLEX: No urgent issue";
}

function strategyPath(event: typeof telemetry): string {
  if (event.lap_trend === "entering_corners_too_fast") {
    return "STRATEGY: Brake earlier and prioritize corner exit";
  }
  return "STRATEGY: Driving pattern looks stable";
}

console.log(reflexPath(telemetry));
console.log(strategyPath(telemetry));

Aynı telemetri verileri verildiğinde iki işlev farklı şekilde davranır. Refleks işlevi anında uyarı verir. Strateji işlevi, kurallara dayalı koçluk tavsiyeleri verir.

Bu mantığı ayrı tutmanın neden faydalı olduğunu düşünüyorsunuz?

Şimdi eğlenceli ve çok parçalı bir uygulama oluşturalım ve bu mimarinin hızlı tepkileri ve daha derin muhakemeyi nasıl güvenilir bir yapay zeka sistemine dönüştürdüğünü görelim.

5. Telemetri akışı sunucusu oluşturma

Artık mimari hedefi anladığınıza göre uygulamayı çalıştıran veri ardışık düzenini oluşturma zamanı.

Bu bölümde, sanal bir yarış arabası için basit bir telemetri akışı oluşturacaksınız. Veriler, GPS veya parça konumu verilerini içeren bir CSV kaynağından gelir ve uygulamanız bu verileri, kullanıcı arayüzünün ve yapay zeka katmanının kullanabileceği bir canlı akışa dönüştürür.

Bu bölümde şunları yapacaksınız:

  • Yayın sunucumuz ve uygulamamız için Google Cloud'da yeni bir proje oluşturun.
  • Telemetri verileri yayınlamak için küçük bir sunucu oluşturma
  • Bu etkinlikleri bir tarayıcı kullanıcı arayüzüne veya konsola aktarma

1. Cloud Shell'i açın

C. Google Cloud Console'a gidin.
B. Bu codelab için yeni bir proje oluşturun. En üstteki proje açılır menüsünü tıklayın.

Google Cloud Console

Proje oluştururken faturalandırma hesabını bağlamak için iyi bir fırsatınız olur:
Faturalandırma Hesabını Bağlama

İsteğe bağlı olarak, daha önce bir proje oluşturduysanız sol paneli açabilir, Billing simgesini tıklayabilir ve faturalandırma hesabının bu GCP hesabına bağlı olup olmadığını kontrol edebilirsiniz.

C. Gemini API anahtarı edinme

Google Cloud kredilerinizi etkinleştirdikten sonra Google Cloud'da Gemini'a erişmek için Gemini API anahtarına ihtiyacınız olur.

Gemini API anahtarı oluşturmak için anahtar oluşturmak üzere Google Vertex AI Studio'yu kullanmamız gerekir.

Vertex AI Studio'da sol alt köşedeki "Belgeler"in üstünde yer alan "API anahtarını al"ı tıklayın. Gemini için bir API anahtarı oluşturun (rastgele karakterlerden oluşan uzun bir dizeye benzer). Bu anahtarı güvenli bir yerde saklayın. Bu API anahtarını, Google Cloud'da Gemini'a erişimimizin kimliğini doğrulamak için 6. adım olan "Yarış Arabası Simülatörünü Oluşturma" bölümünde kullanacağız.

D. Tarayıcı tabanlı bir terminal açmak için üst çubuktaki Cloud Shell simgesini (terminal simgesi) tıklayın.
Cloud Shell

E. Terminal oturumunun başlamasını bekleyin.

Terminal Oturumu

2. Kodu alın

Ana depoyu klonlayın.

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

Bu depoda iki klasör olduğunu unutmayın: "koru-application" (web uygulaması) ve "streaming-telemetry-server" (simüle edilmiş gerçek zamanlı yarış arabası telemetrisi). Bu adımda "streaming-telemetry-server" açıklanmaktadır. Bir sonraki adımda "koru-application"ı kullanacağız.

3. Gerekli API'leri etkinleştirme

Proje başına bir kez çalıştırın:

# Set Project ID
gcloud config set project YOUR_PROJECT_ID
# Enable APIs
gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com

YOUR_PROJECT_ID yerine gerçek proje kimliğinizi yazın (veya proje zaten ayarlanmışsa ilk satırı atlayın).

PROJE_KİMLİĞİNİZ'i Projeler listesinde bulabilirsiniz.

Terminal Oturumu

4. Arka ucu Cloud Run'a dağıtma

Depo kökünden (ör. trustable-ai-codelab klasöründe olduğunuzdan emin olun):

gcloud run deploy streaming-telemetry-server \
  --source streaming-telemetry-server \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

İstendiğinde "Y" tuşuna basmanız gerekebilir.

  • İlk çalıştırmada API'leri etkinleştirmeniz veya bir Artifact Registry deposu oluşturmanız istenebilir. Gerekirse kabul edin.
  • us-central1 dışında bir bölge kullanıyorsanız --region kullanarak bu bölgeyi belirtin.
  • Dağıtım tamamlandığında gcloud, service-URL'yi yazdırır. Bu URL'yi telemetri sunucusunun tam uç noktası olarak kullanmak için URL'ye "events" eklememiz yeterlidir.

5. Yayın URL'sini kullanma

Telemetri sunucusu artık : biçimindeki bir uç noktada Server-Sent-Events (SSE) kullanarak simüle edilmiş telemetri verileri yayınlıyor.

service-URL/events		// service-URL - the last line displayed by "deploy"

Tarayıcıda test etme: Chrome'u kullanarak bu yayın uç noktası URL'sini ziyaret edin. Tarayıcıda, yarış arabasındaki sensörler tarafından yayılan verileri simüle eden gelen yayınlanmış verileri görmeniz gerekir.

Tarayıcı sekmesinde akış uç noktasından alınan çıkış

Bağlantıyı sonlandırmak için tarayıcı sekmesini kapatabilirsiniz.

curl ile test etme:

Şimdi kabuk komut satırından test edelim.

curl -N service-URL/events		# Replace service-URL with actual deployment endpoint

Bulut kabuğu penceresinde gelen akış verilerini görmeniz gerekir.

Kabuk komut satırı aracılığıyla akış uç noktasından alınan çıkış

Bu telemetri verilerini, bir yarış arabasındaki sensörler tarafından yayılan verileri simüle etmek için kullanacağız. Bu veriler, codelab'in geri kalanında kullanılacaktır. Terminal penceresine CTRL-C girerek curl programını sonlandırabilirsiniz.

Dikkat Etmeniz Gerekenler

Bu bölümü doldururken gelen verilerin niteliğine dikkat edin. Ham telemetri genellikle yüksek hacimli, zamana duyarlı ve yapay zeka muhakemesi için uygun değildir. Ön uç uygulaması oluşturulduktan sonra, ham verileri LLM'nin hızlı bir şekilde işleyebileceği etkili bir biçimde filtrelememiz gerekir.

Ancak önce verileri görselleştirmek için web ön ucunu oluşturalım.

6. Yarış arabası simülatörünü oluşturma

Bu bölümde şunları yapacaksınız:

  • Yarış arabası simülasyonu oluşturma
  • Telemetri sunucusunu yarış arabası web uygulamasına bağlayın
  • Simüle edilmiş yarışları görüntüleme

Bu noktada, bulutta çalışan bir yarış arabasından gelen telemetri verilerinin çalışan bir simülasyonuna sahibiz. Şimdi yerel makinenizde çalışan, Google Cloud'a bağlanan ve bu verileri görselleştiren uygulamayı oluşturalım.

Güvenilir yapay zeka uygulamamız, hem Google Cloud hizmetlerinin gücünü ve esnekliğini hem de Chrome'da çalışan yerel zekayı kullanır.

Akış telemetri hizmeti Google Cloud'da çalışır ancak yarış arabası uygulaması yerel makinenizde çalışır. Bu durumda, depoyu tekrar klonlamanız gerekir. Bu kez klonlama işlemini dizüstü veya masaüstü bilgisayarınızda yapın.

Kolaylık sağlamak için hem akış sunucusunun hem de yarış arabası uygulamasının kodu aynı depoda yer alır.

Ön uç uygulamasını GitHub'dan kopyalayın:

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

Depo, dizüstü veya masaüstü bilgisayarınızda klonlandıktan sonra uygulamayı çalıştıralım.

cd koru-application		# racing car simulation app
npm install
npm run dev

VITE

Chrome'da yerel makinenizdeki bağlantı noktasını açın (yukarıdaki örnekte olduğu gibi http://localhost:5173). "AI Motorsport Coaching" uygulamasının açılış sayfasını görürsünüz.

Köşe Koçunuz

"Kontrol panelini aç ->" düğmesini tıklayın. Bu işlem, uygulamanın kullanıcı arayüzünü başlatır.

Koru Kontrol Paneli

Bu noktada, Google Cloud'da simüle edilmiş yarış arabası telemetrisi oluşturan bir telemetri sunucunuz ve bu verileri görselleştirebilen ve bir LLM'ye bağlanabilen yerel bir web uygulamanız var. Bu hizmetleri ve Gemini LLM hizmetlerini bağlayalım.

Uygulamanın sağ üst köşesinde dişli simgesini (ayarlar) tıklayın.

Koru Ayarları

2. adımda aldığınız Gemini API anahtarınızı girin. Bu sayede Google Cloud'daki Gemini hizmetlerine erişebilirsiniz.

Uygulamanın API anahtarınızı hatırlaması için "Kaydet"i tıklayın.

Şimdi uygulamayı telemetri sunucusuna bağlayalım. Uygulama kontrol panelinde "Canlı Oturum"u tıklayın.

Koru SSE akış girişi

"SSE URL or .txt file path" yazan metin alanına bulut tabanlı telemetri sunucunuzun URL'sini (5. adım) girin. SSE URL'miz şu biçimdeydi:

https://streaming-telemetry-server-${PROJECT_NUMBER}.${REGION}.run.app/events

Telemetri sunucusu uç nokta URL'sini girdikten sonra "Bağlan"ı (metin alanının sağında) tıklayın. URL'nin sonuna "events" eklemeyi unutmayın.

Artık simüle edilmiş verileri görselleştiren uygulamayı görebilirsiniz.

Hoparlörünüzün sesini açarsanız farklı türlerdeki antrenörlerden araba yarışı tavsiyeleri alabilirsiniz. Her antrenörün farklı bir kişiliği vardır. Farklı antrenörleri seçerek çeşitli yarış tavsiyelerini ve farklı vokal tarzlarını görmeyi deneyin. Gerekirse hoparlör simgesini tıklayarak sesi devre dışı bırakabilirsiniz.

Çalışan uygulama örneği

Çalışan bir uygulamamız olduğuna göre, verileri LLM tarafından verimli bir şekilde işlenmeye nasıl hazırladığımızı ve genel sistemin güvenilirliğini artırmak için nasıl ek özellikler ekleyebileceğimizi inceleyelim.

7. Yapay zeka muhakemesi için Telemetri'yi hazırlama

Ham telemetri, simülasyon için yararlıdır ancak genellikle doğrudan bir LLM'ye gönderilemeyecek kadar ayrıntılı ve sıktır. Tüm telemetri verilerini değiştirmeden gönderirseniz gecikmeyi artırabilir, gürültüye neden olabilir ve sonuçta elde edilen rehberliğin kalitesini düşürebilirsiniz.

Bu bölümde, telemetriyi daha kullanışlı bir biçime dönüştüreceksiniz.

Bu bölümde şunları yapacaksınız:

  • Ham telemetri JSON'unu inceleme
  • Hangi alanların akıl yürütme için en alakalı olduğunu belirleyin.
  • Verileri filtreleme veya özetleme
  • Gereksiz ayrıntıları azaltma
  • Sürüş durumunun yapay zekaya uygun bir temsilini hazırlama

Bu, güvenilir yapay zeka oluşturma yolunda önemli bir adımdır. Yanıtın kalitesi yalnızca modele değil, aynı zamanda aldığı verilerin yapısına ve alaka düzeyine de bağlıdır.

Şimdi yarış arabalarıyla ilgili belirli verileri inceleyelim. Uygulamadaki belirli değerleri değiştirerek, uygulamayı yeniden yükleyerek ve sonucu gözlemleyerek deneme yapabiliriz.

../src/services/telemetryStreamService.ts near line 180

// Clamp G-forces
gLat = Math.max(-3, Math.min(3, gLat));		// sideways G-force
gLong = Math.max(-3, Math.min(3, gLong));	// front/back G-force

Bir arabadaki G kuvvetleri, hızlanmayı veya yavaşlamayı ölçer. Yarış arabalarında G kuvvetlerini anlamak, arabanın kontrolünü ve genel performansını iyileştirir. Uygulamamızda bu bilgiler yoksa sürücüye tavsiye vermek zorlaşır. Bu iki satırı yorum satırı haline getirin, hem gLat hem de gLong değerlerini 0, 0 olarak ayarlayın ve uygulamayı yeniden çalıştırın.

Araba köşeye yaklaştığında herhangi bir tavsiye verilmediğine dikkat edin. Bu, yarış sürücüleri için pek yararlı değildir.

Ardından, değişikliğinizi geri alın ve uygulamayı yeniden çalıştırın. Araba bir köşeye ulaştığında faydalı sesli tavsiyeler aldığınızı fark ettiniz mi? Sürücüye tavsiye vermek için G kuvveti veri noktaları çok önemlidir.

Şimdi de aracın hızını yapay olarak 48 km/sa gibi yavaş bir tempoyla sınırlayalım. Bu hızda hiçbir yarışı kazanamayız ancak aldığımız eğitimin türünü kesinlikle gösterir.

Aynı dosyada (telemetryStreamService.ts) 158. satırın yakınında processPoint() işlevini bulabilirsiniz. Bu işlevde hızı sınırlayalım.

Aşağıdaki kodu:

private processPoint(point: GpsSSEPoint) {
...
 const speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
...

Alıcı:

private processPoint(point: GpsSSEPoint) {
...
 let speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
 speedKmh = Math.min(speedKmh, 48);   // 48 kmh is approx 30 mph
...

Uygulamayı yeniden çalıştırın. Artık ne tür koçluk tavsiyeleri alıyoruz? Yavaş sürüş yapıyorsak çok fazla şeye ihtiyacımız olmaz.

Şimdi bu değişiklikleri geri alın ve uygulamayı yeniden çalıştırın.

Açıkça görülüyor ki arabanın hızı değerli bir veri noktası. Değerli tavsiyeler vermek için hangi verilerin kritik olduğunu anlamak çok önemlidir. Hangi verilerin alakalı olmadığını değerlendirmek de aynı derecede önemlidir.

Bu aşamada güvenlik ve güven konusunu da düşünmeye başlamalısınız. İyi hazırlanmış girişler bile güvenilir bir yanıtı garanti etmez. Hâlâ insan tarafından yönlendirilen kurallar ve açık kısıtlamalar getirmemiz gerekiyor.

Veri hazırlama yalnızca bir ön işleme adımı değildir. Bu, güven stratejisinin önemli bir parçasıdır. Daha temiz girişler genellikle daha odaklanmış ve güvenilir sonuçlar verir.

8. Koruma duvarları ve kodlanmış uzmanlık bilgisi ekleme

Güvenilir bir yapay zeka sistemi, yalnızca model çıkışına dayanmamalıdır. Çoğu durumda, en güvenilir sistemler büyük dil modeli muhakemesini açık kurallar, alan bilgisi ve insan tarafından yönlendirilen kısıtlamalarla birleştirir.

Bu bölümde, söz konusu katmanı ekleyeceksiniz.

Bu katmanı, kodlanmış koçluk bilgisi olarak düşünebilirsiniz. Tercih edilen yanıt kalıpları, doğrulama kuralları, güvenlik kontrolleri veya sistemin temellendirilmiş ve faydalı kalmasına yardımcı olan yapılandırılmış rehberlikler içerebilir.

Bu bölümde şunları yapacaksınız:

  • Model davranışını şekillendiren yanıt kurallarını kullanıma sunma
  • Yanlış yönlendirici tavsiyeleri azaltmak için güvenlik kontrolleri uygulama
  • Kodlanmış insan uzmanlığını işleme hattına dahil etme
  • Bu eklemelerden önce ve sonraki yanıtları karşılaştırma

Uygulamamıza alan uzmanlığının nasıl eklendiğini inceleyelim.

LLM'ler genellikle yarış veya yarış arabası performansının fiziği konusunda eğitilmez. Uygulamamız bu alan uzmanlığını içerseydi kullanıcılar rehberliğine daha fazla güvenebilirdi. Bu rehberlik, insan uzmanlığına dayalı kurallardan, yani alan uzmanlığı katmanından gelir.

../src/utils/coachingKnowledge.ts near line 115

...
export const RACING_PHYSICS_KNOWLEDGE = `
CORE PRINCIPLES:
1. **The Friction Circle:** A tire has 100% grip. If you use 100% for braking, you have 0% for turning.
  - *Error:* Turning while 100% braking = Understeer (Plowing).
  - *Fix:* "Trail braking" (releasing brake pressure as steering angle increases).

2. **Weight Transfer:**
  - Braking shifts weight forward (Front grip UP, Rear grip DOWN).
  - Accelerating shifts weight backward (Front grip DOWN, Rear grip UP).
  - *Error:* Lifting off throttle mid-corner shifts weight forward abruptly -> Oversteer (Spin risk).

3. **The racing line:**
...

Bu yarış arabası ilkeleri, güvenilir sonuçlar sunmanın önemli bir bileşenidir. Bu uzmanlığa sahip olmasaydık ne olurdu? Haydi öğrenelim.

RACING_PHYSICS_KNOWLEDGE'ı kaldıralım ve yarış tavsiyelerimize göz atalım.

export const RACING_PHYSICS_KNOWLEDGE = ``;

Uygulamayı yeniden çalıştırın. Artık ne tür koçluk tavsiyeleri alıyoruz?

Genel tavsiyeye dikkat edin.

Artık sürtünme, ağırlık aktarımı, çıkış hızı vb. hakkında ayrıntılı bilgi alamıyoruz. Bu bilgiler olmadan güvenilirliğimiz düşüyor. Yarış uzmanlığını geri yükleyin ve uygulamayı yeniden çalıştırın.

Bu adım, güvenilir bir yapay zeka sisteminin kritik bir yönüdür. Güven, daha güçlü bir istemle sihirli bir şekilde oluşturulmaz. Güven, sistem tasarımından ve eleştirel düşünceden doğar.

LLM, çözümün bir parçasıdır ancak çözümün tamamı değildir. Yapay zeka çıktısı açık insan bilgisiyle yönlendirildiğinde güven artar.

9. Koçluk karakterlerini ve kullanıcı deneyimini tasarlama

Muhakeme işlem hattınız oluşturulduktan sonraki soru, sistemin kullanıcıyla nasıl iletişim kurması gerektiğidir.

Bu bölümde, strateji katmanının sürücüyle nasıl iletişim kuracağını tanımlayarak koçluk deneyimini şekillendireceksiniz. Koçluk karakterlerinden birinin sistem istemini iyileştirecek ve rehberliğinin net, zamanında ve en önemlisi uygulanabilir olması için nasıl sunulması gerektiğini düşüneceksiniz.

Bu bölümde şunları yapacaksınız:

  • Koçluk karakteri için sistem istemi oluşturma veya iyileştirme
  • Farklı koçluk tarzlarını deneyin
  • İstem değişikliklerinin yanıtları nasıl etkilediğini gözlemleyin.
  • Güvenilir geri bildirim için kullanıcı arayüzü şartlarını tanımlama
  • Acil ve acil olmayan mesajlar için metin okuma (TTS) desteğini anlama

Uygulamamızda çeşitli koçluk karakterleri yer alıyor. Her biri farklı türde koçluk tavsiyeleri sunar.

PERSONA

ÖZELLİKLER

Tony

Motivasyonel, hisse dayalı

Rachel

Teknik, fizik odaklı

AJ

Doğrudan ve net komutlar

Garmin

Veri odaklı, delta optimizasyonu

Super AJ

Hata türüne göre uyarlanabilir anahtarlar

Bu karakterler ../src/utils/coachingKnowledge.ts dosyasında tanımlanır.

Bu dosyada, dize anahtarlarını CoachPersonas ile ilişkilendiren bir nesne haritası (COACHES) olduğunu göreceksiniz. CoachPersona, her antrenör türünün özelliklerini içerir. Önemli bir özellik systemPrompt. Her karakterin, LLM'nin nasıl yanıt vereceğini yönlendiren kendi systemPrompt vardır.

Bu system prompts öğelerden birini değiştirelim ve LLM'nin nasıl yanıt verdiğine bakalım.

31. satırın yakınında, tavsiyelerinde çok doğrudan ve açık sözlü olan "AJ" için systemPrompt ifadesini görürsünüz. Bunu systemPrompt olarak değiştirelim. Böylece AJ aşırı kibar olacak.

systemPrompt: `You are AJ, a race engineer that is excessively polite. 
	Use telemtry terminology.  Be actionable
	Examples: 	"Lat G settling. please throttle", 
				"Brake when its convenient."
	Keep responses under 12 words. Never explain  just command.`

Uygulamayı yeniden çalıştırın, koç olarak AJ'yi seçin ve hangi tür yanıtların oluşturulduğunu görün.

Şimdi orijinal systemPrompt değerini geri yükleyin ve uygulamayı yeniden çalıştırın. Sistem isteminin, LLM'yi karaktere uygun bir yanıt vermeye yönlendirmede kritik öneme sahip olduğunu unutmayın.

Güven yalnızca doğrulukla ilgili değildir. Ayrıca teslimatla da ilgilidir. Teknik olarak doğru olan tavsiyeler, net olmaması, zamanlamasının uygun olmaması veya dikkat dağıtması durumunda etkili olmayabilir.

Güvenilir bir sistem iyi iletişim kurmalıdır. Kullanıcı deneyimi, güven mimarisinin bir parçasıdır.

10. Uçtan Uca Mimariyi İnceleme

Bu noktada, sistemin ana parçalarını oluşturmuş olursunuz. Şimdi ise geri çekilip birlikte nasıl çalıştıklarını inceleme zamanı.

Uygulamanız artık şu bileşenleri içeriyor:

  • Telemetri akışı
  • Görselleştirme katmanı
  • Yapay zekaya hazır veri dönüştürme aşaması
  • Bir muhakeme LLM'si tarafından desteklenen strateji bileşenleri
  • Koruma sınırları ve kodlanmış insan rehberliği
  • Kullanıcıya yönelik koçluk deneyimi

Bu bileşenlerin genel akışını anlamanın faydalı ve basit bir yolu, uygulamamıza günlük kaydı eklemektir.

Telemetri verilerini yollardan geçerken görüntülemek için günlük kaydı ekleyeceğiz.

Öncelikle yalnızca telemetri verilerini görüntüleyelim. telemetryStreamService.ts içinde, yaklaşık 212. satırda (this.emit(frame)'den önce), hızı, yanal G kuvvetini (yana doğru hızlanma) ve sürücünün fren pedalına ne kadar sert bastığını gösteren bir satır ekleyin.

console.log('FRAME', { 
    speed: frame.speed.toFixed(1), 
    gLat: frame.gLat.toFixed(2),
    brake: frame.brake.toFixed(0) }
);

Uygulamayı yeniden yükleyin. Uygulamayı çalıştırmadan önce bu hata ayıklama bilgilerini görüntülemek için Chrome'un Geliştirici Araçları'nda konsolu açalım.

Geliştirici Araçları konsolu

Uygulamada, telemetri uç noktasını girin ve "Bağlan"ı tıklayın. Artık gelen telemetri verilerini görebilirsiniz.

Şimdi de refleks yolu ve strateji yolu için günlük kaydı ekleyelim.

../src/services/coachingService.ts içinde, this.emit()'ten önce, yaklaşık 71. satırda reflex yolu için bir günlük kaydı satırı ekleyin:

console.log('Reflex', { 
	action: rule.action, 
	text, 
	coach: this.coachId }
);

Aynı dosyada, yaklaşık 287. satırda, this.emit() öğesinden önce strateji yolu için benzer bir günlük kaydı satırı ekleyin (Gemini API tarafından döndürülen koçluk yanıtını text ekleyelim):

console.log('Strategy', { 
	coach: coach.id, 
	chars: text.length, 
	preview: text.slice(0, 60) }
);

Uygulamayı yeniden çalıştırın. Telemetri verilerinin kaynaktan bu yollar üzerinden nasıl aktığını konsolda görebilirsiniz. Gelen akış filtrelenir, LLM'ye gönderilir, güvenilir uzman bilgisiyle doğrulanır ve uygun bir kullanıcı arayüzü kullanılarak kullanıcıya sunulur.

Güvenilir yapay zeka hedefine ulaşmak için çeşitli teknik bileşenleri birbirine bağladığımızı unutmayın. Mimari değeri, tek bir bileşende bulunmaz. Değer, parçaların birbirini nasıl güçlendirdiğinden gelir.

Güvenilir yapay zeka, tek bir özellik değil, mimari bir sonuçtur.

Kaldırma (hizmetin kaldırılması)

Artık ihtiyacınız olmadığında hizmeti kaldırmayı unutmayın. Uygulamayla birlikte telemetri sunucusunu test etme işlemini tamamladıktan sonra Cloud Run hizmetini silmeniz ve bu hizmet için faturalandırmayı durdurmanız gerekir:

gcloud run services delete streaming-telemetry-server \
  --region us-central1 \
  --platform managed

Gerekirse us-central1 kısmını dağıtım sırasında kullandığınız bölgeyle değiştirmeyi unutmayın. İstendiğinde onaylayın.

11. Meydan okumalar

Temel uygulama çalıştığına ve çeşitli bileşenleri anladığınıza göre şimdi tasarımı genişletmeyi deneyin.

Önerilen yarışmalar

  • Koçluk mantığının daha fazlasını uç tarafa taşıma
  • Yağmur veya düşük çekişi desteklemek için simülasyonu değiştirme
  • Model ayarlama veya ince ayar ile performansı nasıl artırabileceğinizi keşfedin.
  • Mimariyi tıp, üretim veya lojistik gibi başka bir alan için uyarlama

Örneğin, bu laboratuvarda öğrendiklerinizi başka bir alana uygularken şu soruları göz önünde bulundurun:

  • Yarış telemetrisinin (ör. sürekli veriler) başka bir alandaki karşılığı nedir?
  • Hangi kararların hemen alınması, hangilerinin ise daha stratejik olması gerekiyor?
  • Ne tür bir insan uzmanlığı kodlanmalıdır?
  • Kullanıcıların sisteme güvenmesi için ne görmeleri gerekir?

Bu zorluklar, yarış örneğinin ötesine geçerek bu codelab'in arkasındaki güvenilirlik tasarım kalıbını daha geniş bir şekilde düşünmenizi teşvik eder.

12. Özet ve Sonraki Adımlar

Bu uygulamalı laboratuvarda, yarış demosundan daha fazlasını oluşturdunuz. Güvenilir yapay zeka sistemlerinin nasıl tasarlanabileceğine dair somut bir örnek oluşturdunuz.

Ham telemetri verileriyle başladınız, bunları LLM için yararlı bir biçime dönüştürdünüz, yapay zeka muhakemesi uyguladınız ve kodlanmış insan rehberliği ve yanıt kısıtlamalarıyla çıktıyı güçlendirdiniz. Bu süreçte, güvenin yalnızca model çıkışından değil, mimariden de kaynaklandığını gördünüz.

Güvenilir bir yapay zeka sistemi genellikle şunları birleştirir:

  • Yapılandırılmış gerçek zamanlı veriler
  • Modele dayalı akıl yürütme
  • Kodlanmış alan uzmanlığı
  • Açık güvenlik önlemleri
  • Özenli kullanıcı deneyimi tasarımı

Yarış senaryosu bu fikirlerin somut hale gelmesine yardımcı oldu ancak aynı yaklaşım, yapay zeka önerilerinin zamanında, uygulanabilir ve güvenilir olması gereken her yerde kullanılabilir.

Bitiş Çizgisi