Program
Bir milyon tokenlık devasa bir bağlam penceresine sahip olan Gemini 2.0 Flash, büyük belgelerin yüksek hızda işlenmesi için optimize edilmiştir. Bu eğitimde, Gemini 2.0 Flash'i kullanarak aşağıdakileri yapabilen yapay zekâ destekli bir SaaS satış içgörüleri aracı oluşturmayı nasıl yapacağınızı açıklayacağım:
- Sektörler ve ürünler genelinde satış trendlerini özetleme.
- Satış performansı üzerinde duygu analizi yapma.
- Satış ve gelir trendleriyle ilgili iş sorularını yanıtlama.
Odak noktamız SaaS odaklı bir uygulama oluşturmak olacak; ancak Gemini 2.0’ın kullanım alanlarını bu videoda daha fazla keşfedebilir, yerel bir YouTube içerik oluşturucu aracının nasıl yapılacağını öğrenebilirsiniz:
Neden RAG Yerine Gemini 2.0 Flash Kullanmalı?
Gemini 2.0 Flash, 1.000.000 tokenlık bir bağlam penceresine sahiptir; bu, veri kümesinin parçalara ayrılmasına veya alma mekanizmalarına gerek kalmadan tüm veri kümesinin işlenmesine olanak tanır. Ayrıca, Gemini Ultra gibi daha büyük modellere kıyasla maliyet açısından daha uygundur.
Birçok uygulama, alma ile artırılmış üretim (RAG) yöntemini yapılandırılmış veri analizi için kullanır; ancak Gemini 2.0 Flash, şu nedenlerle RAG ihtiyacını ortadan kaldırır:
- Geniş token sınırı, tek bir istekte tüm veri kümesinin işlenmesini sağlar.
- Doğrudan yapılandırılmış veri analizi yapılmasına olanak tanır ve alma karmaşıklığını ortadan kaldırır.
- RAG tabanlı yaklaşımlara kıyasla daha hızlı ve daha ekonomik işlem sağlar.
Maliyeti optimize etmek için Gemini 2.0 Flash Lite kullanmak isterseniz yapabilirsiniz; ancak bu makalenin yayımlandığı anda, dakikada 60 sorguyla sınırlıdır ve yalnızca us-central1 bölgesinde kullanılabilmektedir.
Genel Bakış: Gemini 2.0 Flash ile SaaS Satış İçgörüleri Aracı
İzleyeceğimiz ana adımları özetleyelim:
- Süreç, Kaggle'dan AWS SaaS Sales veri kümesini yükleyip hazırlamakla başlar.
- Daha sonra, yapay zekâ işlemesi için Google Cloud Vertex AI ve Gemini 2.0 Flash'i başlatacağız.
- Ardından kullanıcı seçimi için benzersiz sektörleri ve ürünleri çıkaracağız.
- Veri kümesinin boyutunu token sınırında tutmak için Tiktoken kullanacağız.
- Kullanıcı tarafından seçilen filtreler, temel satış metriklerinin hesaplanmasını ve yapay zekâ destekli içgörülerin üretilmesini tetikleyecek.
- Duygu analizi performansı sınıflandıracak ve Soru-Cevap özelliği satışla ilgili içgörüler sunacak.
- Son olarak, aracı dinamik kullanıcı etkileşimi ve gerçek zamanlı keşif için Gradio ile entegre edeceğiz.
Adım 1: Ön Koşullar
Başlamadan önce, aşağıdaki araç ve kütüphanelerin kurulu olduğundan emin olalım:
- Python 3.8+
- Kaggle
- Google-genai
- Datasets
- Tiktoken
- Gradio
Gerekli bağımlılıkları kurmak için aşağıdaki komutları çalıştırın:
!pip install gradio -q
!pip install --upgrade --quiet google-genai
!pip install datasets -q
!pip install tiktoken -q
!pip install kaggle -q
Yukarıdaki bağımlılıklar kurulduktan sonra, aşağıdaki import komutlarını çalıştırın:
import sys
import os
import tiktoken
from datasets import load_dataset
import pandas as pd
import gradio as gr
import vertexai
from vertexai.preview.generative_models import GenerativeModel
Adım 2: Veri Kümesini Yükleme
Bu proje için AWS SAAS Sales veri kümesini kullanacağız; bu veri kümesi Kaggle'da mevcuttur. Önce Kaggle kimlik bilgilerini ayarlayın ve sırasıyla yazar ile veri kümesi adını iletin.
# Set Kaggle API credentials
os.environ["KAGGLE_CONFIG_DIR"] = os.path.expanduser("~/.kaggle")
# Download dataset
!kaggle datasets download -d nnthanh101/aws-saas-sales --unzip
Artık veri kümesi ortamımıza indirildiğine göre, onunla çalışmaya başlayabiliriz. Veri kümesini yoldan yüklemek ve okumak için pandas kütüphanesini kullanacağız.
dataset_path = "path_to_your_data.csv" # Load dataset from specified path
dataset_df = pd.read_csv(dataset_path)
Bu veri kümesi, aşağıdaki sütunlara sahip 9.994 işlem içerir:
- Industry: Şirketin sektör kategorisi.
- Product: Satılan SaaS ürünü.
- Sales: İşlemden elde edilen gelir.
- Quantity: Satılan lisans sayısı.
- Profit: İşlemden elde edilen kâr.
- Discount: Uygulanan indirimler.
Adım 3: Google Cloud Vertex AI'ı Kurma
Gemini 2.0 Flash'i kullanmak için Google Cloud ile kimlik doğrulaması yapmamız gerekir.
if "google.colab" in sys.modules:
from google.colab import auth
auth.authenticate_user()
Vertex AI'ı başlatmak için Vertex AI API'sini arayın ve etkinleştirin (hesabınızda faturalandırmanın etkin olduğundan emin olun).

Projenin kimliğini (ID) ve konumunu gelecekte başvurmak üzere kaydedin. Bu proje için Gemini 2.0 Flash çalıştırmanın maliyeti, yaklaşık beş API çağrısı için yaklaşık 0,07 ABD doları oldu.
# Set up Google Cloud Vertex AI
PROJECT_ID = "Your_project_id"
LOCATION = "Your_location"
vertexai.init(project=PROJECT_ID, location=LOCATION)
model = GenerativeModel("gemini-2.0-flash")
Vertex AI hakkında daha fazla bilgi edinmek için Vertex AI üzerine bu giriş niteliğindeki eğitime göz atın.
Adım 4: Veri Ön İşleme
Doğru veri işleme için sütun adlarını normalleştirin ve temel kategorileri çıkarın. Demoda markdown kaynağı olarak görev yapan benzersiz sektörleri ve ürünleri buluyoruz. Farklı bir veri kümesi kullanıyorsanız, kategorilerinizi buna göre seçin.
# Normalize column names to prevent key errors
df.columns = df.columns.str.strip().str.lower()
print("Dataset columns:", df.columns) # Debugging
# Extract unique industry names and product categories
unique_industries = sorted(df["industry"].dropna().unique().tolist())
unique_industries.insert(0, "All Industries") # Add "All Industries" option
unique_products = sorted(df["product"].dropna().unique().tolist())
unique_products.insert(0, "All Products") # Add "All Products" option
Adım 5: Veri Kümesindeki Tokenları Sayma
Artık veri kümemizi işlediğimize göre tokenları sayacağız. Gemini 2.0 Flash'in 1.000.000 tokenlık sınırı olduğundan, veri kümesini modele iletmeden önce token sayısını hesaplamak önemlidir. Bu veri kümesinde 805447 token bulunmaktadır.
# Initialize tokenizer (use "cl100k_base" for Gemini/GPT models)
encoder = tiktoken.get_encoding("cl100k_base")
# Choose relevant text columns
text_columns = ['industry', 'product', 'sales', 'quantity', 'discount', 'profit']
# Create a combined text column for tokenization
df["combined_text"] = df[text_columns].astype(str).agg(" | ".join, axis=1)
# Function to count tokens
def count_tokens(texts):
total_tokens = sum(len(encoder.encode(str(text))) for text in texts)
return total_tokens
# Calculate total tokens
total_tokens = count_tokens(df["combined_text"].dropna().tolist())
print(f"Total tokens in the dataset: {total_tokens}")
Aşağıdaki şekilde Tiktoken kullanıyoruz:
- Tokenizer'ı başlatın: Gemini ve GPT modelleri için optimize edilmiş Tiktoken'ın
cl100k_basetokenizer'ını kullanın. - İlgili metin sütunlarını seçin: Yapay zekâ analizi için (industry, product, sales, quantity, discount, profit) gibi temel sütunları belirleyin.
- Seçilen sütunları tek bir metin alanında birleştirin: Tür uyumsuzluklarından kaçınmak için sütunları stringe dönüştürün ve " | " ayırıcıyı kullanarak combined_text içinde birleştirin.
- Tokenları saymak için bir işlev tanımlayın:
combined_textiçindeki her satırı tokenize edin ve tüm satırlardaki toplam token sayısını hesaplayın. - Veri kümesindeki toplam tokenları hesaplayın: NaN değerlerini kaldırın, token sayma işlevini uygulayın ve Gemini 2.0 Flash’in 1M token sınırına uyumu doğrulamak için toplam tokenları yazdırın.
Adım 6: Satış Trendlerini Özetleme
Artık demonun analist kısımları üzerinde çalışabiliriz. Bu işlev, seçilen sektör ve ürüne göre bir satış özeti üretir.
def summarize_sales(industry, product):
filtered_data = df.copy()
if industry != "All Industries":
filtered_data = filtered_data[filtered_data["industry"] == industry]
if product != "All Products":
filtered_data = filtered_data[filtered_data["product"] == product]
if filtered_data.empty:
return "No sales data available for the selected industry and product."
# Create sales report
total_sales = filtered_data["sales"].sum()
total_quantity = filtered_data["quantity"].sum()
total_profit = filtered_data["profit"].sum()
avg_discount = filtered_data["discount"].mean()
sales_text = f"""
Sales Data for {industry} - {product}:
- Total Sales: ${total_sales:,.2f}
- Total Quantity Sold: {total_quantity}
- Total Profit: ${total_profit:,.2f}
- Average Discount: {avg_discount:.2f}%
"""
# Generate summary using Gemini 2.0 Flash
response = model.generate_content(sales_text, stream=True)
response_text = "".join(chunk.text for chunk in response)
return response_text
summarize_sales() işlevi, seçilen sektör ve ürüne göre veri kümesini filtreler; toplam satış, satılan miktar, kâr ve ortalama indirim gibi temel satış metriklerini hesaplar ve verileri yapılandırılmış bir isteme dönüştürür. Bu istem daha sonra kısa ve öz bir satış özeti üretmesi için Gemini 2.0 Flash modeline iletilir.
Adım 7: Satış Duygu Analizi Yapma
Benzer şekilde, toplam kâra göre duygu analizi yapan başka bir işlev tanımlıyoruz.
def analyze_sales_sentiment(industry, product):
filtered_data = dataset_df.copy()
if industry != "All Industries":
filtered_data = filtered_data[filtered_data["industry"] == industry]
if product != "All Products":
filtered_data = filtered_data[filtered_data["product"] == product]
if filtered_data.empty:
return "No sales data available for sentiment analysis."
total_sales = filtered_data["sales"].sum()
total_profit = filtered_data["profit"].sum()
# Define sentiment labels based on profit margins
if total_profit > 500000:
sentiment_label = "Positive"
elif total_profit > 100000:
sentiment_label = "Neutral"
else:
sentiment_label = "Negative"
sentiment_text = f"""
The total sales for {industry} - {product} is ${total_sales:,.2f},
with a total profit of ${total_profit:,.2f}.
Based on market trends, this performance is considered {sentiment_label}.
Analyze the sentiment of sales performance for this product.
"""
# Generate sentiment analysis using Gemini Flash 2.0
response = model.generate_content(sentiment_text, stream=True)
# Collect response text
response_text = "".join(chunk.text for chunk in response)
return response_text
analyze_sales_sentiment() işlevi, seçilen sektör ve ürüne göre veri kümesini filtreleyerek toplam satış ve toplam kârı hesaplayıp Gemini 2.0 Flash kullanarak yapay zekâ destekli bir duygu analizi üretir. Model, satış performansına ilişkin yapılandırılmış bir özetle yönlendirilir; böylece yalnızca sabit kâr eşiklerine dayanmak yerine duyguyu dinamik olarak değerlendirebilir.
Adım 8: Gradio Arayüzünü Oluşturma
Artık tüm temel mantık işlevlerine sahibiz. Sırada Gradio ile etkileşimli bir arayüz oluşturmak var.
with gr.Blocks() as demo:
gr.Markdown("# AI-Powered SaaS Sales Analysis")
industry_dropdown = gr.Dropdown(choices=unique_industries, label="Select an Industry")
product_dropdown = gr.Dropdown(choices=unique_products, label="Select a Product")
summarize_btn = gr.Button("Summarize Sales Trends")
summary_output = gr.Textbox(label="Sales Trend Summary")
summarize_btn.click(summarize_sales, inputs=[industry_dropdown, product_dropdown], outputs=summary_output)
demo.launch(debug=True)
Bu kod, yapay zekâ destekli SaaS satış analizi için etkileşimli bir Gradio arayüzü oluşturur. Kullanıcılar açılır menülerden bir sektör ve ürün seçip bir düğmeye tıklayarak satış özeti üretebilir. Seçilen girdiler, verileri işleyip içgörü döndüren summarize_sales() işlevine iletilir ve sonuç bir metin kutusunda görüntülenir. Gradio uygulaması daha sonra gerçek zamanlı etkileşim için başlatılır.

Hızlıca yaptığım bir testten çıktılar burada. Tüm sektörleri ve ürünleri seçtim, ardından modelden seçilen parametreler için bir satış özeti oluşturmasını ve duygu analizi yapmasını istedim.



Sonuç
Bu eğitimde, Gemini 2.0 Flash kullanarak gerçek zamanlı SaaS satış verisi analizi sağlayan yapay zekâ destekli bir SaaS satış içgörüleri aracı oluşturduk. RAG olmadan yapılandırılmış verileri işlemek için Gemini 2.0 Flash'in geniş bağlam penceresinden yararlandık ve kolay kullanıcı etkileşimi için Gradio tabanlı etkileşimli bir arayüz entegre ettik.
Bu eğitimi kendi kullanım durumunuza uyarlamanızı öneririm. Gemini 2.0 ile uygulama geliştirme hakkında daha fazla bilgi edinmek için şu eğitimleri tavsiye ederim:
ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.


