1. Giriş
Bu codelab'de, online araç pazar yeri olan "Cymbal Autos" için arka ucu oluşturacak ve ön ucu dağıtacaksınız. Araç fotoğraflarını incelemek, BigQuery ML kullanarak fiyatları tahmin etmek, vektör yerleştirmelerini kullanarak sahte listelemeleri tespit etmek ve bileşik fırsat puanlarını hesaplamak için BigQuery ile Gemini Enterprise Agent Platform'daki Gemini modellerini kullanacaksınız. Son olarak, bu analizleri Cloud Run'a dağıtılan bir Next.js ön ucunda göstereceksiniz.

Yapacaklarınız
- ObjectRef kullanarak BigQuery'yi yapılandırılmamış Cloud Storage resimlerine bağlama
- Gemini modelleriyle BigQuery'yi kullanarak fotoğraflardan araç özelliklerini ayıklama
- BigQuery ML ile bir XGBoost regresyon modeli eğiterek adil piyasa fiyatlarını tahmin etme
- Araç açıklamalarını yerleştirerek ve
VECTOR_SEARCHyaparak olası dolandırıcılık ve güvenilir girişleri belirleyin. AI.SCOREkullanarak satıcının açıklamasındaki durum sinyallerini dahil ederken her listeleme için kapsamlı bir Fırsat Puanı hesaplayın.- Verileri dışa aktarma ve Next.js pazar yeri uygulamasını Google Cloud Run'a dağıtma
İhtiyacınız olanlar
- Chrome gibi bir web tarayıcısı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- SQL, Python ve Google Cloud hakkında temel düzeyde bilgi sahibi olma
- API'leri etkinleştirmek, kaynak oluşturmak ve izin atamak için yeterli IAM izinleri (ör. Proje Sahibi)
Bu codelab, orta düzeydeki geliştiriciler içindir.
Bu kod laboratuvarında oluşturulan kaynakların maliyeti 5 ABD dolarından az olmalıdır.
2. Başlamadan önce
Google Cloud projesi oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
Cloud Shell'i Başlatma
Kodu indirmek, kurulum komut dosyalarını çalıştırmak ve uygulamayı dağıtmak için Google Cloud Shell'i kullanacaksınız.
- Google Cloud Console'un üst kısmında Activate Cloud Shell'i (Cloud Shell'i etkinleştir) tıklayın.

- Cloud Shell'e bağlandıktan sonra, uygulamanızın Google Cloud API'lerine erişebilmesi için oturumunuzun kimliğini doğrulayın. Cloud Shell'i yetkilendirmek için istemleri uygulayın:
gcloud auth application-default login
- Google Cloud proje kimliğinizi ve Google Cloud Storage paketiniz için benzersiz bir ad belirleyin (ham verileri burada depolarsınız):
export PROJECT_ID=$(gcloud config get-value project)
export USER_BUCKET="cymbal-autos-${PROJECT_ID}"
gcloud config set project $PROJECT_ID
Aşağıdakine benzer bir mesaj görürsünüz:
Your active configuration is: [cloudshell-####] Updated property [core/project]
API'leri etkinleştir
Bu codelab için gerekli tüm API'leri etkinleştirmek üzere Cloud Shell'de şu komutu çalıştırın:
gcloud services enable \
aiplatform.googleapis.com \
artifactregistry.googleapis.com \
bigquery.googleapis.com \
bigqueryconnection.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
Başarılı bir yürütme işleminden sonra aşağıda gösterilene benzer bir mesaj görmeniz gerekir:
Operation "operations/..." finished successfully.
3. Kodu ve Kurulum Verilerini Alma
Öncelikle demo öğelerini indirin ve ortam değişkenlerinizi yapılandırın.
- Cloud Shell'den
devrel-demosdeposunu klonlayın ve proje dizinine gidin:
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos/data-analytics/cymbal-autos-multimodal
- Verileri ortamınıza kopyalamak için komut dosyasını çalıştırın. Bu komut dosyası, yerel depodaki veri kümelerini kişisel Cloud Storage paketinize senkronize eder ve araç resimlerini herkese açık bir paketten getirir:
chmod +x scripts/setup/*.sh
./scripts/setup/00_copy_data.sh
Ardından, aşağıdakine benzer bir mesaj görürsünüz:
Average throughput: 87.8MiB/s Data copy complete!
- Ardından, BigQuery Cloud Resource Connection'ı ayarlayın. Cloud Storage'daki yapılandırılmamış görüntüleri analiz etmek ve Agent Platform modellerini doğrudan SQL sorgularınızdan çağırmak için BigQuery'nin IAM izinlerini temel bir hizmet hesabına devretmesi gerekir. Bu komut dosyası, güvenli bağlantıyı oluşturur ve gerekli Vertex AI Kullanıcısı ile Hizmet Kullanımı Tüketicisi rollerini verir (bu rollerin yayılması yaklaşık bir dakika sürer):
./scripts/setup/01_setup_api_connection.sh
Şuna benzer bir mesaj görürsünüz:
Environment setup complete! Your BigQuery connection is ready.
- Son olarak, ilk BigQuery veri kümesini oluşturun ve ham tablo verilerini yükleyin. Bu işlem,
model_devveri kümenizi oluşturur ve başlangıç tablolarını doldurur. Böylece, makine öğrenimi sorguları yazmadan önce temel yapı oluşturulur:
./scripts/setup/02_load_to_bq.sh
Şuna benzer bir mesaj görürsünüz:
================================================================= BigQuery load complete! =================================================================
4. Çok formatlı görsel ayıklama
Araç listelemelerini puanlamadan önce, yüzlerce ham fotoğraftan yapılandırılmış veriler (ör. renk, araç kasa tipi veya görsel hasar) ayıklarsınız. ObjectRef işlevlerinden ve Agent Platform'da barındırılan Gemini modellerinden yararlanarak herhangi bir dosya taşımadan veya karmaşık veri işlem hatları yazmadan bu özellikleri oluşturabilirsiniz. Bu çıkarma işlemi, doğrudan ön uç uygulamasındaki ✨ Görsel Durum rozetini destekler.
- Yeni bir tarayıcı sekmesinde BigQuery Studio'yu açın.
- + Yeni sorgu oluştur düğmesini tıklayın. Bu codelab boyunca SQL koduyla etkileşim kurmak için SQL Düzenleyici'yi kullanacaksınız.
- Makine öğrenimiyle ayıklama araçlarını oluşturmadan önce ham görüntülere hızlıca göz atabilirsiniz. Her listeleme için Google Cloud Storage'da depolanan görüntü URI'leri dizisini görüntülemek üzere aşağıdaki sorguyu çalıştırın:
SELECT auction_id, item_name, description, images
FROM `model_dev.vehicle_metadata` LIMIT 5;
- Şimdi BigQuery Studio SQL Düzenleyicinizde,
image_refsütunu içeren yeni bir tablo oluşturmak için aşağıdaki SQL'i yapıştırın. Çalıştır'ı tıklayın.
CREATE OR REPLACE TABLE `model_dev.vehicle_multimodal` AS
SELECT
*,
ARRAY(
SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'us.conn'))
FROM UNNEST(images) AS uri
) AS image_ref
FROM `model_dev.vehicle_metadata`;
- Yeni oluşturduğunuz
image_refObjectRef sütununa göz atın. Yeni tabloda artık resimlerin kendisinde yürütme izni olan bir ObjectRef sütunu bulunuyor. Görüntülemek için aşağıdaki sorguyu çalıştırın:
SELECT auction_id, item_name, description, image_ref
FROM `model_dev.vehicle_multimodal` LIMIT 5;
- Şimdi görüntüleri analiz etmek için
AI.GENERATEveAI.CLASSIFYkullanacaksınız.AI.GENERATE, Gemini'a istem göndererek durum puanını ve hasar özetini tek cümleyle çıkarırkenAI.CLASSIFY, aracın araç kasa tipini ve rengini kesin bir şekilde sınıflandırır.
Bu analizleri özel bir özellik tablosuna çıkarmak için aşağıdaki sorguyu çalıştırın. Bu işlemin tamamlanması yaklaşık 3 dakika sürer.
CREATE OR REPLACE TABLE `model_dev.vehicle_vision_features` AS
WITH generated_data AS (
SELECT
auction_id,
AI.GENERATE(
prompt => ('Rate the condition of this car on a scale from 0-100. Output a 1 sentence description of any glaring red flags', image_ref),
output_schema => 'condition INT64, description_summary STRING'
).* EXCEPT(full_response,status)
FROM
`model_dev.vehicle_multimodal`
),
-- Object-centric Classifications
classified_data AS (
SELECT
auction_id,
AI.CLASSIFY(
('What type of automobile is this?', image_ref[0]),
categories => ['Truck', 'Sedan', 'SUV']) AS body_style,
AI.CLASSIFY(
('Color of the exterior of the automobile', image_ref[0]),
categories => ['Black', 'White', 'Silver', 'Gray', 'Red', 'Blue', 'Brown', 'Green', 'Beige', 'Gold']) AS color,
AI.CLASSIFY(
('Color of the interior of the automobile', image_ref[0]),
categories => ['Black', 'Gray', 'Beige', 'Tan', 'Brown', 'White', 'Red']) AS interior
FROM `model_dev.vehicle_multimodal`
)
-- Join the AI insights back together into the final feature table
SELECT
g.auction_id,
g.condition,
g.description_summary,
c.body_style,
c.color,
c.interior
FROM generated_data g
JOIN classified_data c ON g.auction_id = c.auction_id;
- Oluşturulan özellikleri kendiniz görüntülemek için aşağıdaki sorguyu çalıştırın veya aşağıdaki ekran görüntüsüne bakın:
SELECT auction_id, condition, description_summary, body_style, color, interior FROM `model_dev.vehicle_vision_features` LIMIT 5;

Bölüm Özeti: Ham görüntülere doğrudan BigQuery'den erişerek ve herhangi bir dosyayı taşımadan yapılandırılmış görsel özellikler çıkarmak için Gemini modellerini kullandınız.
5. XGBoost ile öngörüye dayalı fiyatlandırma
Bir aracın gerçekten iyi bir fırsat olup olmadığını hesaplamak için adil piyasa değeriyle ilgili güvenilir bir temel gerekir. Bir modeli eğitmek için verileri yerel komut dosyalarına veya not defterlerine çekmek yerine, standart SQL kullanarak doğrudan BigQuery'de bir XGBoost modeli eğitebilirsiniz. Bu fiyat tahmini, ön uç uygulamasındaki 📈 Adil Piyasa Değeri mantığını yönlendirir.
- BigQuery Studio sekmenize geri dönün.
- İlk olarak, eğitim veri kümesine göz atın. Etkin araç listelemelerinin aksine bu
synthetic_carstablosu, modeli eğitmek için kullanılacak 100.000 geçmiş satış içerir. Bir göz atmak için bu hızlı sorguyu çalıştırın:
SELECT
*
FROM
`model_dev.synthetic_cars`
LIMIT 10;
- Şimdi bir XGBoost regresyon modelini eğitmek için aşağıdaki SQL'i çalıştırın. Bu model, kilometre, yıl, marka ve görsel durum gibi özelliklerin fiyatı nasıl etkilediğini 100.000 geçmiş kayıttan öğrenir:
CREATE OR REPLACE MODEL `model_dev.car_price_model`
OPTIONS(
MODEL_TYPE = 'BOOSTED_TREE_REGRESSOR',
INPUT_LABEL_COLS = ['selling_price'],
MAX_ITERATIONS = 15,
TREE_METHOD = 'HIST'
) AS
SELECT
* EXCEPT(vin, sale_date, market_value, seller)
FROM
`model_dev.synthetic_cars`;
- Devam eden canlı araç listelemelerinin fiyatlarını tahmin etmeden önce, ilgili tüm giriş özelliklerini tek bir yerde toplamanız gerekir. Yapılandırılmış araç meta verilerini, az önce oluşturduğunuz vision ile çıkarılan özelliklerle birleştirmek için şu SQL'i çalıştırın:
CREATE OR REPLACE TABLE `model_dev.vehicle_prediction_features` AS
SELECT
meta.auction_id,
meta.model_year,
meta.make,
meta.model,
meta.mileage,
meta.transmission_type,
meta.state,
COALESCE(vision.body_style, 'Unknown') AS body_style,
COALESCE(vision.condition, 50) AS condition,
COALESCE(meta.color, vision.color, 'Unknown') AS color,
COALESCE(vision.interior, 'Unknown') AS interior
FROM `model_dev.vehicle_metadata` meta
LEFT JOIN `model_dev.vehicle_vision_features` vision
ON meta.auction_id = vision.auction_id;
- Son olarak, devam eden her araç listelemesinin adil piyasa değerini tahmin edin. Toplanan özellikleri yeni eğitilmiş modelinize aktarmak ve sayısal çıkışları güvenli bir tahmin tablosuna kaydetmek için aşağıdaki sorguyu çalıştırın:
CREATE OR REPLACE TABLE `model_dev.vehicle_price_predictions` AS
SELECT
auction_id,
ROUND(predicted_selling_price, 2) AS predicted_market_value
FROM ML.PREDICT(
MODEL `model_dev.car_price_model`,
(SELECT * FROM `model_dev.vehicle_prediction_features`)
);
- Şimdi modelin çıkışını doğrulayın. Canlı araç listelemelerinin tahmini piyasa değerlerini önizlemek için bu hızlı sorguyu çalıştırın:
SELECT * FROM `model_dev.vehicle_price_predictions` LIMIT 5;

Bölüm Özeti: 100.000 örnek işlem kullanarak bir XGBoost regresyon modeli eğittiniz ve veri kümesindeki her etkin araç listelemesinin adil piyasa değerini tahmin etmek için toplu çıkarım gerçekleştirdiniz.
6. Anlamsal Yerleştirmeler ve Gerçeklik Tespiti
Bu bölümde, araç pazar yerinde akıllı özellikleri etkinleştirmek için iki farklı yerleştirme işlem hattı yürüteceksiniz:
- Çok formatlı görsel arama: Kullanıcıların doğal dili kullanarak arama yapmasına (ör. "güvenilir bir iş kamyonu") olanak tanımak için ham araç fotoğraflarını vektör alanına çevirin.
- Metin Yerleştirmeleri ve Benzerlik Arama: Yazılı araç açıklamalarını vektör yerleştirmelerine çevirerek
VECTOR_SEARCHkullanarak etkin listelemeleri bilinen olası dolandırıcılık veya meraklı profilleriyle karşılaştırın. Bu, alıcıların uygulamada gördüğü 🔍 Orijinallik Puanı'nı hesaplar.
- Öncelikle, araç listelemeleri için çok formatlı yerleştirmeler oluşturmanız gerekir.
gemini-embedding-2-previewmodeliyle hem resimleri hem de metinleri aynı yerleştirmeye girebilirsiniz. Bu model, birden fazla modaliteyi aynı anda işleyebilse de bu özel durumda yalnızca araç resimlerini yerleştiriyoruz. Bu, ön uç uygulaması için "anlamsal arama" çubuğunu destekleyerek alıcıların doğal dil (ör. "güvenilir bir kamyonet") kullanmasına ve eşleşen listelemeleri hızlı bir şekilde almasına olanak tanır.AI.EMBEDkullanarak çok formatlı vektörler oluşturmak için bu sorguyu çalıştırın:
CREATE OR REPLACE TABLE `model_dev.vehicle_images_embedded` AS
SELECT
auction_id,
AI.EMBED(
STRUCT(image_ref),
endpoint => 'gemini-embedding-2-preview').result AS multimodal_embedding
FROM `model_dev.vehicle_multimodal`
WHERE ARRAY_LENGTH(image_ref) > 0;
- Ardından, daha önce yüklenen risk profili verilerini inceleyeceksiniz. Hem bilinen dolandırıcılık türlerini hem de gerçek meraklıların örnek listelemelerini içerdiğini unutmayın. Temel profilleri görüntülemek için bu sorguyu çalıştırın:
SELECT profile_id, profile_type, description
FROM `model_dev.seller_risk_profiles`;
- Şimdi bu ham risk açıklamalarını vektör yerleştirmelerine çevireceksiniz. Az önce önizlemesini yaptığınız yazılı dili sıkı bir şekilde değerlendirmek için özel bir metin yerleştirme modeli (
text-embedding-005) kullanabilirsiniz. Aşağıdaki SQL'i yapıştırın ve temel profilleri yerleştirmek için Çalıştır'ı tıklayın:
CREATE OR REPLACE TABLE `model_dev.seller_risk_profiles_embedded` AS
SELECT
profile_id,
description AS content,
profile_type,
AI.EMBED(description, endpoint => 'text-embedding-005').result AS text_embedding
FROM `model_dev.seller_risk_profiles`;
- Ardından, gerçek canlı araç envanteri için karşılaştırılabilir yerleştirmeler oluşturun. Her araç için ham HTML açıklamasını vektör alanına çevirmek üzere bu sorguyu çalıştırın. Böylece, bu açıklamalar temel profillerle karşılaştırılabilir.
CREATE OR REPLACE TABLE `model_dev.vehicle_descriptions_embedded` AS
SELECT
auction_id,
description AS content,
AI.EMBED(description, endpoint => 'text-embedding-005').result AS text_embedding
FROM `model_dev.vehicle_metadata`
WHERE description IS NOT NULL;
- Son olarak, canlı listelemeler ile temel profiller arasındaki semantik mesafeyi hesaplamak için vektör aramasını yürütün. Eşlemeyi gerçekleştirmek için aşağıdaki SQL'i çalıştırın. Matematiksel mesafenin düşük olması, listelemenin bilinen bir dolandırıcılık grubuyla çok benzer olduğunu gösterirken mesafenin yüksek olması, açıklamanın meşru olduğunu gösterir.
CREATE OR REPLACE TABLE `model_dev.vehicle_authenticity_scores` AS
SELECT
scam_search.query.auction_id,
CAST(
GREATEST(0.0, LEAST(100.0, ROUND((MIN(scam_search.distance) - 0.33) / 0.12 * 100.0)))
AS INT64
) AS authenticity_score
FROM VECTOR_SEARCH(
TABLE `model_dev.seller_risk_profiles_embedded`,
'text_embedding',
(
SELECT text_embedding, auction_id
FROM `model_dev.vehicle_descriptions_embedded`
),
top_k => 15,
distance_type => 'COSINE'
) AS scam_search
WHERE scam_search.base.profile_type = 'scam'
GROUP BY 1;
Bu tablonun içeriği aşağıdaki gibi görünebilir:

Bölüm Özeti: Ön uç arama çubuğu için çok formatlı yerleştirmeler oluşturdunuz ve ham HTML metin listelemelerini bilinen dolandırıcılık profillerine göre değerlendirmek için doğrudan BigQuery'de vektör aramayı kullandınız.
7. Üretken Fırsat Puanı
Artık tamamen BigQuery'de düzenlenen birden fazla farklı makine öğrenimi tekniğiyle oluşturulan yapılandırılmış veri kümeleriniz var: görsel çıkarma, adil piyasa değerini tahmin etmek için XGBoost modeli ve vektör arama yerleştirmeleri.
Son adım, bu yapay zeka sinyallerini ön uç uygulaması için kesin Fırsat Puanı olarak birleştirilmiş bir görünümde birleştirmektir.
- Öncelikle ham meta verileri, yapay zeka tarafından çıkarılan görsel özellikler, tahmini fiyatlandırma çıktıları ve semantik doğruluk puanlarıyla birleştirin. Aşağıdaki SQL'i yürütün:
CREATE OR REPLACE TABLE `model_dev.vehicle_features_enhanced` AS
SELECT
meta.auction_id,
meta.item_name,
meta.model_year,
meta.make,
meta.model,
meta.mileage,
meta.current_bid,
meta.listing_url,
meta.transmission_type,
meta.description,
meta.state,
COALESCE(vision.body_style, 'Unknown') AS body_style,
COALESCE(vision.condition, 50) AS condition,
COALESCE(meta.color, vision.color, 'Unknown') AS color,
COALESCE(vision.interior, 'Unknown') AS interior,
COALESCE(scam.authenticity_score, 100) AS authenticity_score,
vision.description_summary,
prices.predicted_market_value
FROM `model_dev.vehicle_metadata` meta
LEFT JOIN `model_dev.vehicle_vision_features` vision
ON meta.auction_id = vision.auction_id
LEFT JOIN `model_dev.vehicle_price_predictions` prices
ON meta.auction_id = prices.auction_id
LEFT JOIN `model_dev.vehicle_authenticity_scores` scam
ON meta.auction_id = scam.auction_id;
- Ardından, dört farklı yapay zeka sinyalini birleştirerek 0-100 arasında bir Fırsat Puanı hesaplayın. Bu formül, en iyi listelemeleri göstermek için değer, kalite ve riski dengeler:
- Fiyat Puanı (%40): Adil pazar değerine göre tasarrufları ölçer.
- Görsel Puanı (%30): Önceki fotoğraf analizlerinden elde edilen bilgiler.
- Gerçeklik puanı (%15): Dolandırıcılık riski değerlendirmesi.
- Durum puanı (%15):
AI.SCOREaracılığıyla satıcının açıklamasından anında çıkarılır.
CREATE OR REPLACE TABLE `model_dev.marketplace_listings` AS
WITH score_elements AS (
SELECT
*,
-- 1. SELLER DESCRIPTION SCORE (use AI.SCORE on seller description)
AI.SCORE(
FORMAT("Rate the vehicle condition (0-100) based ONLY on this text: '%s'", description)
) AS description_score,
-- 2. PRICE SCORE
-- Higher impact for underpricing, lower impact for overpricing.
CAST(LEAST(100.0, GREATEST(0.0,
75.0 + (
IF((predicted_market_value - current_bid) > 0,
((predicted_market_value - current_bid) / NULLIF(predicted_market_value, 0)) * 250.0,
((predicted_market_value - current_bid) / NULLIF(predicted_market_value, 0)) * 40.0
)
)
)) AS INT64) AS price_score
FROM `model_dev.vehicle_features_enhanced`
),
final_calcs AS (
SELECT
*,
-- 3. Combine scores: Price (40%), Condition (30%), Description (15%), Authenticity (15%)
ROUND(
(
(price_score * 0.40) +
(CAST(condition AS INT64) * 0.30) +
(COALESCE(description_score, 50) * 0.15) +
(CAST(authenticity_score AS INT64) * 0.15)
)
-- Authenticity penalty for scores below 50.
* (IF(CAST(authenticity_score AS INT64) < 50, 0.20, 1.05))
) AS raw_score
FROM score_elements
)
SELECT
* EXCEPT(raw_score),
-- 4. Set floor values: low authenticity scores drop to 10; others floor at 35.
CAST(GREATEST(
(IF(CAST(authenticity_score AS INT64) < 50, 10, 35)),
LEAST(100, raw_score)
) AS INT64) AS deal_score
FROM final_calcs;
Yüksek kaliteli öneriler sunmak için sorguda iki özel mantık katmanı uygulanır:
- Orijinallik Kontrolü: Bir listeleme "Yüksek Riskli" (puan < 50) olarak işaretlenirse şüpheli listelemelerin tanıtımının yapılmasını önlemek için toplam Fırsat Puanı otomatik olarak% 80 oranında düşürülür.
- "Gizli Cevher" Optimizasyonu: Formül, indirimleri agresif bir şekilde ödüllendirirken fiyat artışlarına karşı daha hoşgörülü olmak için parça parça mantık kullanır. Bu sayede, kusursuz durumdaki ancak fiyatı yüksek bir araba yine de "Adil" sıralaması elde edebilir.
Elde edilen model_dev.marketplace_listings tablosunda price_score ve authenticity_score'nin yanı sıra deal_score gibi alanlar bulunur.
- Fırsat puanlarını kendiniz görüntülemek için aşağıdaki sorguyu çalıştırın veya aşağıdaki ekran görüntüsüne bakın:
SELECT item_name, model_year, authenticity_score, predicted_market_value, price_score, deal_score FROM `model_dev.marketplace_listings`

Bölüm Özeti: Her listeleme için tek bir Fırsat Puanı hesaplamak üzere satıcının açıklamasıyla birlikte tahmini fiyatlandırma, görsel özellikler ve özgünlük puanlarını birleştirdiniz.
8. Ön Uç Uygulamasını Dağıtma
Şimdi ön uç uygulamasını oluşturma zamanı. Bu sayede, araç listelemelerinin envanterinde arama yapabilir ve az önce oluşturduğunuz yapay zeka tarafından üretilmiş analizlerle (ör. Fırsat Puanı) etkileşimde bulunabilirsiniz.
Yapay zeka puanlarını ön uca aktarma
React ön ucu, hızlı ilk sayfa yüklemeleri için yerel bir JSON yüküne dayanır. Pazar yerini desteklemek için nihai Generative Deal Scores'u BigQuery'den çıkarın ve bunları tekrar Next.js projesine yerleştirin.
- Ortamınızın hazır olduğundan emin olun. Cloud Shell oturumunuzun zaman aşımı süresi dolduysa veya farklı bir klasöre gittiyseniz proje köküne dönmek ve ortam değişkenlerinizi geri yüklemek için aşağıdaki komutu çalıştırın:
cd ~/devrel-demos/data-analytics/cymbal-autos-multimodal && \
export PROJECT_ID=$(gcloud config get-value project) && \
export USER_BUCKET="cymbal-autos-${PROJECT_ID}"
- Son BigQuery görünümüne sorgu göndermek ve yeni Fırsat Puanlarını uygulamanın temelindeki veri deposuyla birleştirmek için sağlanan Python komut dosyasını çalıştırın:
python3 scripts/setup/08_export_frontend_data.py
Şuna benzer bir onay mesajı alırsınız:
💾 Updated local file: app/src/data/cars.json
Uygulamayı Cloud Run'a dağıtma
Veriler başarıyla zenginleştirildikten sonra Next.js ön uç uygulamasını Cloud Run'ı kullanarak herkese açık internete dağıtabilirsiniz. Bu araçta; fırsat puanları, etkileşimli resim bantları ve BigQuery'yi gerçek zamanlı olarak sorgulayan dinamik bir karma semantik arama çubuğu içeren modern bir arayüz bulunur.
- Cloud Shell'de, klonlanmış deponuzun
app/dizinine gidin. Bu adım çok önemlidir. Kök dizinde kalırsanız derleme başarısız olur.
cd app
- Uygulamayı Cloud Run'ı kullanarak sunucusuz container olarak dağıtın. Komut,
PROJECT_IDdeğerini ortam değişkeni olarak iletir. Böylece Next.js API, hangi BigQuery projesine sorgu göndereceğini bilir:
gcloud run deploy cymbal-autos-frontend \
--source . \
--region us-west1 \
--allow-unauthenticated \
--min-instances 1 \
--set-env-vars PROJECT_ID=$PROJECT_ID \
--project $PROJECT_ID
- Dağıtım tamamlandığında terminal, güvenli bir hizmet URL'si çıkarır. Bu, aşağıdaki gibi olur:
Service URL: https://cymbal-autos-frontend-[YOUR-PROJECT-NUMBER].us-west1.run.app/
9. Cymbal Autos uygulamasını keşfetme
Ön uç container'ınız Cloud Run'a aktarıldığına göre uygulamayı test etme zamanı geldi.
- Siteyi ziyaret edin: Cloud Run tarafından döndürülen güvenli hizmet URL'sini açın.

- Semantik Arama Yapın: "Taşıma işleri için uygun, araziye dayanıklı bir iş aracı" gibi soyut bir kavramı aramayı deneyin. Next.js uygulaması, ham metninizi çok formatlı bir vektör yerleştirmeye çevirir ve BigQuery'ye karşı gerçek zamanlı bir
VECTOR_SEARCHbaşlatarak fikrinizi araç ekosistemiyle eşler.

Not: Listelemeler, semantik benzerliğe göre sıralanır.
- Sonuçları İnceleyin: BigQuery, en yakın anlamsal eşleşmeleri döndürmek için soyut fikriniz ile aracın özellikleri arasındaki tam matematiksel mesafeyi hesapladı.

- Ayrıntıları İnceleyin: Tam listeleme profilini açmak için herhangi bir aracı tıklayın.
- Yapay Zeka Sinyalini Kontrol Edin: Laboratuvarın önceki bölümlerinde oluşturduğunuz ham makine öğrenimi puanlarını görmek için ayrıntıları inceleyin:
- 📈 Adil Piyasa Değeri: XGBoost modeliniz tarafından tahmin edilen temel fiyat.
- ✨ Görsel Durum: Gemini modelleri tarafından çıkarılan fiziksel hasar derecesi.
- 🔍 Orijinallik Puanı: Orijinallik vektörü metriği, meşru satıcıları potansiyel dolandırıcılardan ayırır.

10. Temizleme
Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek amacıyla, bu codelab için oluşturduğunuz Google Cloud projesinin tamamını silebilirsiniz veya aşağıdaki otomatik kaldırma komut dosyasını çalıştırabilirsiniz.
- Cloud Shell terminalinizden, kök dizini içeren dizine geri gidin:
cd ..
- Aşağıdaki temizleme komut dosyasını çalıştırın. Bu işlem, Google Cloud Storage paketinizi boşaltır,
model_devBigQuery veri kümesini bırakır, BigQuery bağlantısını siler ve Cloud Run hizmetini siler.
chmod +x scripts/cleanup/teardown.sh
./scripts/cleanup/teardown.sh
11. Tebrikler
Tebrikler! Akıllı bir araç pazar yeri oluşturmayı başarıyla tamamladınız. Yapılandırılmamış veri analizini, tahmini modellemeyi ve yapay zeka entegrasyonlarını tek bir çalışma alanında birleştirmek için BigQuery'yi kullandınız.
Öğrendikleriniz
- ObjectRef kullanarak BigQuery'yi yapılandırılmamış Cloud Storage resimlerine bağlama
AI.GENERATEveAI.CLASSIFYişlevleri gibi Gemini modelleriyle BigQuery kullanarak fotoğraflardan araç özelliklerini ayıklama- BigQuery ML kullanarak araç fiyatlarını tahmin etme
- Araç açıklamalarını yerleştirerek ve
VECTOR_SEARCHyaparak olası dolandırıcılık içeren listelemeleri tespit etme - Yapılandırılmamış verileri anında değerlendirmek ve sonuçları kapsamlı bir Fırsat Puanı'na dahil etmek için
AI.SCOREnasıl kullanılır? - Verileri dışa aktarma ve Next.js pazar yeri uygulamasını Cloud Run'a dağıtma
Sonraki adımlar
- BigQuery'de kullanılabilen tüm üretken yapay zeka işlevlerini keşfedin.
- GoogleSQL ile tahmini modeller oluşturma hakkında daha fazla bilgi edinin.