Bookshelf Analytics: Gemini'ı kullanarak BigQuery ve üretken yapay zeka ile SQL uygulamaları geliştirin

1. Giriş

Kitapları incelemeyi seviyor ancak çok fazla seçenek olduğundan kararsız mı kalıyorsunuz? Mükemmel okumayı önermekle kalmayıp seçtiğiniz türe göre kısa bir özet de sunarak kitabın özünü anlamanızı sağlayan yapay zeka destekli bir uygulama kullandığınızı düşünün. Bu kod laboratuvarında, BigQuery, Gemini ve Gemini destekli Cloud Functions ile bu tür bir uygulama oluşturma sürecinde size yol göstereceğim.

Projeye Genel Bakış

Kullanım alanımız şu 4 temel bileşen etrafında şekilleniyor:

  • Kitap Veritabanı: İnternet Arşivi kitaplarının bulunduğu geniş BigQuery herkese açık veri kümesi, kapsamlı kitap kataloğumuz olarak kullanılacak.
  • Yapay Zeka Özetleme Motoru: Gemini 1.0 Pro dil modeliyle donatılmış Google Cloud Functions, kullanıcı isteklerine göre uyarlanmış, bilgilendirici özetler oluşturur.
  • BigQuery Entegrasyonu: Talep üzerine kitap özetleri ve temaları sunmak için Cloud Functions işlevimizi çağıran BigQuery'deki bir uzak işlev.
  • Kullanıcı arayüzü: Cloud Run'da barındırılan ve kullanıcıların sonuçları görüntüleyebileceği bir web uygulaması sunan web uygulaması.

Uygulamayı 3 codelab'e böleceğiz:

Codelab 1: Gemini uygulamasında kullanılacak bir Java Cloud Functions işlevi oluşturmak için Gemini'ı kullanın.

Codelab 2: BigQuery ve üretken yapay zeka ile SQL uygulamaları oluşturmak için Gemini'ı kullanın.

Codelab 3: BigQuery ile etkileşime giren bir Java Spring Boot web uygulaması oluşturmak için Gemini'ı kullanın.

2. BigQuery ve üretken yapay zeka ile SQL uygulamaları oluşturmak için Gemini'ı kullanma

Ne oluşturacaksınız?

Aşağıdakileri oluşturacaksınız:

  • Tablodaki ";" ile ayrılmış anahtar kelimeler listesinden kitabın türünü (veya temasını) belirlemek için Vertex AI text-bison-32k uç noktasını çağıran BigQuery'deki uzak model.
  • BigQuery'deki uzak işlev, dağıtılan üretken yapay zeka Cloud Functions işlevini uzaktan çağırır.
  • Kitabın temasını ve metnini SQL sorgularıyla özetlemek için uzak modeli ve işlevi kullanın ve sonuçları kitaplık veri kümesindeki yeni bir tabloya yazın.
  • Bu adımları Gemini'ın yardımıyla uygulayacaksınız.

3. Şartlar

Projenizi oluşturma

Yukarıdaki koşullu adımda belirtilen bağlantıyı kullanarak bir faturalandırma hesabını etkinleştirdiyseniz ve proje oluşturduysanız aşağıdaki adımları atlayabilirsiniz.

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. 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 etkinleştirme

  1. bq önceden yüklenmiş olarak gelen, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız:

Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın: 6757b2fb50ddcc2d.png

  1. Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu komutu çalıştırın:

gcloud auth list

  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.

gcloud config list project

  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:

gcloud config set project <YOUR_PROJECT_ID>

gcloud komutları ve kullanımı için belgelere bakın.

4. Google Cloud için Gemini'ı ve gerekli API'leri etkinleştirme

Gemini'ı etkinleştirme

  1. API'yi etkinleştirmek için Google Cloud için Gemini Marketplace'e gidin. Aşağıdaki komutu da kullanabilirsiniz:

gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID

  1. Gemini sayfasını ziyaret edin ve "Sohbeti başlat"ı tıklayın.

Diğer gerekli API'leri etkinleştirme

Bunu nasıl yapabiliriz? Bu soruyu Gemini'a soralım. Ancak bundan önce şunları unutmayın:

Not: LLM'ler deterministik değildir. Bu nedenle, bu istemleri denerken aldığınız yanıtlar, ekran görüntümdeki yanıtlardan farklı görünebilir.

Google Cloud Console'da arama çubuğunun yanındaki sağ üst köşedeki "Gemini'ı aç" simgesini tıklayarak Gemini ile etkileşim konsoluna gidin.

"Buraya istem girin" bölümüne şu soruyu yazın:

BigQuery ve Vertex AI API'lerini gcloud komutunu kullanarak nasıl etkinleştirebilirim?

Aşağıdaki resimde gösterildiği gibi yanıtı alırsınız:

19c3fd78530794d9.png

Bu komutu kopyalayın (komut snippet'inin üst kısmındaki kopyalama simgesini kullanabilirsiniz) ve ilgili hizmetleri etkinleştirmek için Cloud Shell Terminali'nde uygulayın:

  • bigquery.googleapis.com
  • aiplatform.googleapis.com

5. Kitap verileri için BigQuery herkese açık veri kümesini keşfetme

Çok sayıda internet arşivi kitabı hakkında bilgi içeren BigQuery herkese açık veri kümesini tanıyarak başlayın.

Bu herkese açık veri kümesini BigQuery Explorer bölmesinde bulabilirsiniz. Bu seçeneği, BigQuery konsoluna ulaştığınızda sol tarafta bulabilirsiniz.

39e2ac03cc99cbac.png

Arama çubuğuna "gdelt-bq" veya "internetarchivebooks" yazıp TÜM PROJELERDE ARA'yı tıklayın. Sonuçta genişletin ve aşağıdaki resimde gösterildiği gibi internet arşivindeki kitaplara yıldız ekleyin:

68dba68a79cddfc9.png.

Veri kümesini genişletin, gdelt-bq.internetarchivebooks'u tıklayın ve ardından 1920 tablosundaki verileri önizleyin. Bu tabloda, 1920 yılından itibaren arşivlenen kitaplar yer alır.

Sonraki bölümlerde kullanacağımız şemaya göz atmak için aşağıdaki sorguyu çalıştırın:

select * from  `gdelt-bq.internetarchivebooks.1920` limit 5;

Bu codelab'de aşağıdaki üç alanı kullanacağız:

  • BookMeta_Title (title)
  • Temalar (temalar ";" ile ayrılır)
  • BookMeta_FullText (kitabın tam metni)

6. bookshelf adlı yeni bir BigQuery veri kümesi oluşturun.

Bu laboratuvarda oluşturacağımız tüm veritabanı ve analiz nesnelerini depolamak için proje kapsamında bir veri kümesi oluşturmak istiyoruz. BigQuery veri kümesinin nasıl oluşturulacağını Gemini'a soralım. API'leri etkinleştirme adımında Gemini ile etkileşiminizi tarayıcınızdaki başka bir sekmede açmış olmanız gerekir. Aksi takdirde, şimdi yapabilirsiniz. https://console.cloud.google.com adresine giderek Google Cloud Console'a erişebilirsiniz. Üstteki arama çubuğunun hemen yanında Gemini simgesini görürsünüz. Bunu tıkladığınızda sohbet açılır.

26e1491322855614.png

İstemi aşağıda gösterildiği gibi girin.

İstemim:

How to create a BigQuery dataset?

Yanıt:

f7a989cc9a01009.png

Etkin projenizde "bookshelf" adlı bir veri kümesi oluşturmak için yanıttaki adımları uygulayalım.

BigQuery veri kümesi oluşturmak için aşağıdaki adımları uygulayın:

  1. Google Cloud Console'da BigQuery sayfasına gidin.
  2. Gezgin panelinde proje kimliğinizi tıklayın.
  3. Veri kümesi oluştur'u tıklayın (proje kimliğinizin yanındaki 3 noktayı tıkladığınızda listelenen seçenekler arasında yer alır).
  4. Veri kümesi adını "bookshelf" olarak girin.
  5. Konumu "ABD(Çoklu bölge)" olarak ayarlayın.
  6. Yanıtın 3, 4, 5 ve 6. adımlarında varsayılan seçenekleri bırakın.
  7. VERİ KÜMESİ OLUŞTUR'u tıklayın.

Veri kümeniz oluşturulur ve Gezgin panelinde görünür. "Kitaplık" veri kümesi aşağıdaki gibi görülebilir:

7. Vertex AI LLM'yi (text-bison-32k) çağırmak için uzak model oluşturma

Ardından, BigQuery'de "text-bison-32k" Vertex AI modelini çağıran bir model oluşturmamız gerekir. Model, veri kümesindeki her kitaba ait anahtar kelime listesinden ortak bir temayı ve kitabın bağlamını belirlemeye yardımcı olur.

Gemini'a sorun. Bunu yapmak için Gemini ile etkileşim konsolunun açık olduğu sekmeye gidin ve aşağıdaki istemi yazın:

BigQuery'deki LLM uç noktasını (text-bison-32k) çağırmak için BigQuery ile Vertex AI'ı nasıl bağlayacaksınız?

Yanıt şu şekildedir:

41904e30ce92b436.png

Yanıt, CREATE MODEL ifadesini kullanma, BigQuery bağlantısını kullanma ve uç noktayı tanımlama adımlarını içeren doğru bilgiler içeriyor. Sorgu ifadesi benim için doğru olsa da bu bir büyük dil modeli olduğundan farklı biçimde, hacimde ve derinlikte yanıtlar alabilirsiniz. Bu nedenle, tam olarak aynı çıkışı alacağınız anlamına gelmez. Aldığım tüm ayrıntıları görmüyorsanız sohbete ek sorular sorabilirsiniz. Örneğin: Bağlantı kaynağının nasıl oluşturulacağı veya bağlantı özelliğinin neden eksik olduğu ya da BigQuery'den Vertex AI'a nasıl bağlanacağım gibi konularda daha fazla bilgi ver.

İşte örnek bir ek istem (bunu yalnızca ek bilgiye ihtiyacınız varsa kullanın, aldığınız ilk yanıt yeterliyse bu yanıtla devam edin):

What about the connection? How will I connect from BigQuery to Vertex AI?

Yanıt:

2ed9b3ed96b11bc9.png

BigQuery bağlantısı oluşturmak için yanıttaki adımları uygulayalım:

  1. BigQuery konsoluna gidin.
  2. BigQuery Explorer bölmesinde "+EKLE" düğmesini ve "Harici veri kaynaklarına bağlantılar"ı tıklayın.
  3. Bu noktada, BigQuery Connection API'yi etkinleştirmeniz istenir. API'Yİ ETKİNLEŞTİR'i tıklayın:

ded96126495ffe9.png

  1. "Harici veri kaynaklarına bağlantılar"ı tıkladığınızda, aşağıdaki gibi Harici veri kaynağı slaytını görürsünüz . Harici kaynaklar listesinden "Vertex AI" kaynağını seçin.

434cdbbb3a9436f2.png

  1. Bir bağlantı kimliği yazın (Bu, istediğiniz bir kimlik olabilir ancak şimdilik "bq-vx" olarak ayarlayın) ve bölgeyi (çoklu bölge "US") girin.
  2. "Bağlantı Oluştur"u tıklayın.

d3a2aeebc3ecdfae.png

  1. Bağlantıyı oluşturduktan sonra "Bağlantıya git"i tıklayın.
  2. Bağlantı bilgileri sayfasında, sonraki adımlarda bu kimliği kullanacağımız için hizmet hesabı kimliğini kopyalayın.
  3. Bağlantı oluşturulduğuna göre, Vertex AI'ı kullanabilmek için kopyaladığımız bu hizmet hesabı kimliğine izinler atayalım.
  4. Google Cloud Console sayfasından Google Cloud IAM'i açın veya bağlantıya gidin.
  5. View by Principals (Ana Hesaplara Göre Görünüm) bölümünde Grant Access'i (Erişime İzin Ver) tıklayın.

5317eed5da0bb8c5.png

  1. Erişim İzni Ver iletişim kutusunda, daha önce not ettiğimiz hizmet hesabı kimliğini Yeni yöneticiler metin kutusuna girin.
  2. Rolü "Vertex AI Kullanıcısı" olarak ayarlayın.

f213db33d220aa5f.png

Gerekli bağlantı oluşturulur. Asıl (bağlantının hizmet hesabı) için BigQuery'den Vertex AI'ı kullanmak üzere gerekli izin verilir.

BigQuery sorgu düzenleyicisinde, bir veritabanı nesnesinin (bu örnekte MODEL) oluşturulmasını temsil eden aşağıdaki DDL (Veri Tanımlama Dili) ifadesini çalıştırın.

CREATE OR REPLACE MODEL bookshelf.llm_model
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (ENDPOINT = 'text-bison-32k');

Yukarıdaki adıma alternatif olarak Gemini'a "text-bison-32k" modelini çağırmak için modeli oluşturacak bir sorgu önermesini isteyebilirsiniz.

Not: Bağlantınız için farklı bir ad kullandıysanız önceki DDL ifadesinde " us.bq-vx" yerine bu adı girin. Bu sorgu, daha önce oluşturduğumuz "bookshelf" veri kümesinde uzak modeli oluşturur.

8. Java Cloud Functions işlevini çağıran bir uzak işlev oluşturun.

Şimdi Gemini modelini uygulamak için bu serinin 1. codelab'inde oluşturduğumuz Java Cloud Functions işlevini kullanarak BigQuery'de uzak bir işlev oluşturacağız. Bu uzaktan işlev, kitap içeriğini özetlemek için kullanılır.

Not: Bu codelab'i kaçırdıysanız veya bu Cloud Functions işlevini dağıtmadıysanız bu adımı atlayıp sonraki konuya (Kitapların temasını uzaktan modeli kullanarak özetleme) geçebilirsiniz.

BigQuery konsoluna gidin ve aşağıdaki DDL ifadesini sorgu düzenleyiciye yapıştırın (artı düğmesini tıklayarak yeni bir sorgu düzenleyici sekmesi oluşturabilirsiniz).

a54c0b0014666cac.png

Kopyalayabileceğiniz DDL aşağıda verilmiştir. Uç noktayı, dağıtılan Cloud Functions uç noktanızla (codelab 1'den oluşturulur) değiştirmeyi unutmayın. Uç noktanız yoksa aşağıdaki DDL'deki maskelenmiş karakterleri demo amacıyla "abis-345004" ile değiştirebilirsiniz.

CREATE OR REPLACE FUNCTION
  `bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (
    endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call'  );

Google Cloud Platform'da BigQuery Console'a gidin ve yeni bir sorgu düzenleyici sekmesi açın. BigQuery sorgu düzenleyicide yukarıdaki DDL ifadesini yapıştırın. Sorguyu çalıştırdıktan sonra aşağıdaki yanıtı görebilirsiniz:

a023d5691acf6f.png

Model ve işlev oluşturulduğuna göre, bunları bir SELECT sorgusunda çalıştırarak bu iki BigQuery nesnesini test edelim.

9. Uzaktan modelini kullanarak temaları özetleme

Kitap için, verilen tema listesinden birleştirilmiş bir anahtar kelime oluşturmak üzere "bookshelf.llm_model" adlı uzaktan modeli kullanalım:

SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
     CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));

İsteğe bağlı adım: LLM tarafından oluşturulan sonuç alanı için sonuç iç içe yerleştirilmiştir. Sorguya bazı LLM parametreleri ve "flatten_json_output" özelliğini ekleyelim. "flatten_json_output" özelliğini kullanmak, LLM tarafından oluşturulan sonuç alanındaki iç içe yapıyı kaldırmaya yardımcı olur.

SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
 SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
    STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));

Şimdi BigQuery Düzenleyici'de SELECT sorgusunu çalıştırın ve sonucu doğrulayın. Test için sorgu sonucunu 1 ile sınırladık. Sonuç aşağıdaki gibi gösterilir:

9b0d33eca61a73d2.png

10. Uzak işlevi kullanarak kitapların tam metnini özetleme

Şimdi, daha önce oluşturduğumuz bookshelf.GEMINI_REMOTE_CALL Cloud Functions işlevini çalıştırarak kitabı özetlemeye çalışacağız.

Not: Uzak FUNCTION oluşturma adımını (bu codelab'deki önceki konu) atladıysanız SELECT sorgusundaki bookshelf.GEMINI_REMOTE_CALL işlev çağrısını da atlamayı unutmayın.

Daha önce oluşturduğumuz uzak işlevi (GEMINI_REMOTE_CALL) çağıran SELECT sorgusunu kullanın. GEMINI_REMOTE_CALL işlevine yapılan çağrı, kitap metninin özetini isteyen bir istem içerir:

select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
  CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title,  ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary 
  from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;

Özet oluşturmak için kitabın tam metninin bir alt dizesini kullandığımızı unutmayın.

Sorgunun sonucu aşağıdaki gibidir:

658bb0a9c9cf0938.png

11. Kitap verilerini tabloda depolama

Yalnızca SQL sorgularını kullanarak BigQuery'den hem LLM çağrılarını (uzak model ve işlev) test ettiğimize göre, uzak model ve işlevle aynı veri kümesinde tema analizleriyle birlikte "kitaplık" verilerini depolamak için bir BigQuery tablosu oluşturalım.

Bu adıma hem LLM modeli çağrısını hem de uzak işlev çağrısını dahil edebiliriz. Ancak uzak işlev çağrısını (Cloud Functions işlevini çağıran) isteğe bağlı bir adım olarak işaretlediğimiz için yalnızca uzak modeldeki analizleri kullanırız.

Kullanacağımız sorgu:

SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

Sorguyu BigQuery Düzenleyici'de çalıştırdığınızda sonuç aşağıdaki gibi olur:

2c6e08e75a680867.png

Şimdi Gemini'a yukarıdaki sorgudan "bookshelf.books" adlı bir tablo oluşturmasını isteyelim. Google Cloud Console'da Gemini ile etkileşim konsoluna gidin ve aşağıdaki istemi girin.

Kullanacağımız istem:

Create a BigQuery table named bookshelf.books from this SELECT query: 
SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

Gemini Chat'in yanıtı şu şekildedir:

df6595a4b14f7b9.png

Doğrudan buradan kopyalamak isterseniz sorguyu aşağıda bulabilirsiniz:

CREATE TABLE bookshelf.books (
  BookMeta_Title STRING,
  Themes STRING,
  ml_generate_text_llm_result STRING
) AS (
  SELECT
    BookMeta_Title,
    Themes,
    ml_generate_text_llm_result Context
  FROM
    ML.GENERATE_TEXT (
      MODEL `bookshelf.llm_model`,
      (
        SELECT
          BookMeta_Title,
          Themes,
          BookMeta_FullText,
          CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
        FROM `gdelt-bq.internetarchivebooks.1920`
        LIMIT 5
      ),
      STRUCT(
        0.2 AS temperature,
        100 AS max_output_tokens,
        TRUE AS flatten_json_output
      )
    )
);

Sorgu BigQuery Düzenleyici'de çalıştırıldıktan sonra sonuç aşağıdaki gibi olur:

2d1ce716f844b7ad.png

İşte bu kadar. Şimdi tabloyu sorgulayın ve daha fazla analiz için verilerle oynayın.

12. Tebrikler

Tebrikler! Aşağıdaki işlemleri başarıyla tamamladık ve sürecin bazı adımlarında Gemini'ı da kullandık:

  • BigQuery'de, tablodaki ";" ile ayrılmış anahtar kelimeler listesinden kitabın türünü (veya temasını) belirlemek için Vertex AI "text-bison-32k" uç noktasını çağıran bir uzak model oluşturdu.
  • BigQuery'de, dağıtılan bu üretken yapay zeka Cloud Functions işlevini uzaktan çağıracak bir uzak işlev oluşturduysanız. Bu işlev, istemi girdi olarak alır ve kitabı 5 satırda özetleyen bir dize çıkarır.
  • Kitabın temasını ve metnini SQL sorgularıyla özetlemek ve sonuçları kitaplık veri kümesindeki yeni bir tabloya yazmak için uzak modeli ve işlevi kullandı.
  • Takip ödevi olarak, BigQuery'de oluşturulan nesneleri silmek için Gemini'ı kullanarak SQL'i almayı deneyin. Bu işlem temizleme adımını kapsar.