Takip et

Gemini Agentic Video ve LINE Bot Entegrasyonu Rehberi

Gemini Agentic Video ile video analizinde çığır açın. Gizli 4 teknik ön koşulu öğrenin ve adım adım LINE bot entegrasyonu ile kendi video asistanınızı kurun.

Gemini Agentic Video ve LINE Bot Entegrasyonu Rehberi

Gemini Agentic Video ile video analizinde çığır açın. Gizli 4 teknik ön koşulu öğrenin ve adım adım LINE bot entegrasyonu ile kendi video asistanınızı kurun.

Geleneksel yapay zeka modelleri uzun süre boyunca yalnızca statik metinleri ve fotoğrafları işleyebildi. Ancak video, doğası gereği hem uzamsal (mekansal) hem de zamansal boyutları bir arada barındıran çok daha karmaşık bir yapı sunar. Google tarafından kullanıma sunulan Gemini modelleri, milyonlarca girdi verisini (token) tek seferde işleyebilen geniş bağlam penceresi (context window) sayesinde videoları doğrudan anlama yeteneğine kavuştu. Bununla birlikte, bir videoyu yalnızca “özetlemek” ile video içeriğine göre bağımsız kararlar alıp eyleme geçen otonom bir sistem yani ajan (agent) kurmak arasında devasa bir uçurum bulunmaktadır. Geliştiriciler genellikle dokümantasyonda doğrudan belirtilmeyen kritik engellerle karşılaşır. Bu makalede, Gemini Agentic Video mimarisinin görünmeyen dört ön koşulunu masaya yatırıyoruz. Ayrıca, bu kabiliyeti popüler mesajlaşma platformu LINE üzerinde çalışan uçtan uca interaktif bir bota nasıl dönüştüreceğimizi tüm teknik ayrıntılarıyla inceliyoruz.

Agentic Video Nedir ve Neden Yeni Bir Dönem Başlatıyor?

Geleneksel video analitiği çözümleri, kareleri tek tek nesne tanıma modellerinden (örneğin YOLO) geçirerek etiket üretir. Ne var ki bu yöntem, sahneler arasındaki nedensellik ilişkilerini ve bağlamsal sürekliliği bütünüyle kaçırır. Agentic video (eylem odaklı video işleme) yaklaşımı ise video akışını yalnızca pasif bir görsel girdi olarak görmez. Bu yaklaşım, videoyu dinamik bir karar alma sürecinin birincil veri kaynağı kabul eder. Böylece yapay zeka ajanı, izlediği içerikten yola çıkarak dış dünyadaki API’leri tetikler, veri tabanlarını sorgular veya kullanıcıyı anlık olarak uyarır.

Örneğin bir fabrikanın üretim bandından gelen 30 saniyelik bir video klibi düşünelim. Klasik bir görsel model sadece “baret takmayan bir işçi” tespiti yapabilir. Buna karşılık, ajan mimarisiyle donatılmış Gemini modeli işçinin baretsiz olduğunu fark eder, iş güvenliği protokollerini içeren harici bir dokümanı sorgular, vardiya amirinin kim olduğunu kontrol eder ve anında LINE üzerinden acil durum uyarısı iletir. Bu otonom zincir, video anlama kabiliyetinin araç çağırma (tool calling / function calling) mimarisiyle birleşmesiyle mümkün olur.

Bununla birlikte, video dosyaları devasa boyutlara ulaştığı için bu süreci gerçek zamanlı veya yarı gerçek zamanlı yürütmek ciddi bir mühendislik çalışması gerektirir. Modelin videodaki kritik anları kaçırmadan, doğru çıkarımlarla harici araçları tetiklemesi için arka plandaki altyapının kusursuz kurgulanması şarttır. Şimdi, geliştiricilerin en sık tökezlediği dört temel gereksinime yakından bakalım.

Gemini Agentic Video İçin 4 Gizli Ön Koşul Nelerdir?

Bir video dosyasını Gemini API’ye göndermek ilk bakışta tek satırlık bir kod gibi görünebilir. Fakat ajan düzeyinde güvenilir sonuçlar üretmek istiyorsanız, resmi dokümantasyonların satır aralarında kalan şu dört teknik ön koşulu mutlaka yönetmelisiniz:

1. Zamansal Örnekleme ve Kare Hızı Stratejisi (Temporal Sampling)

Gemini modelleri videoları saniyede 1 kare (1 FPS – frame per second) varsayılan hızıyla örnekleyerek bağlam penceresine aktarır. Ancak hızlı hareket içeren sahnelerde, örneğin bir kalite kontrol bandında veya spor analizinde, saniyede 1 kare kritik detayların tamamen kaybolmasına neden olur. Geliştiriciler, ham videoyu doğrudan modele iletmek yerine sahne geçişi algılama (scene detection) algoritmalarıyla ön işleme tabi tutmalıdır. Eğer videoda statik bölümler ağırlıktaysa kare frekansını düşürmek token tüketimini optimize eder. Aksine, hareketin yoğunlaştığı saniyelerde kare frekansını dinamik olarak artırmak gerekir. Bu denge kurulmadığı takdirde, ajan ya gereksiz maliyet üretir ya da olay anını kaçırır.

2. Görsel-İşitsel Eşzamanlama (Audio-Visual Asynchrony)

Videolar yalnızca görüntülerden ibaret değildir; ses kanalı çoğu zaman görüntünün eksik bıraktığı bağlamı taşır. Gemini 1.5 Pro, ses ve görüntüyü aynı anda işleyebilir. Ancak arka planda ses spektrumu ile video kareleri farklı alt katmanlarda vektörleştirilir (tokenization). Eğer ses ile görüntü arasında milisaniyelik bir senkron kayması varsa, ajan konuşulan bir diyalog ile ekrandaki eylemi yanlış ilişkilendirebilir. Özellikle kullanıcı etkileşimli botlarda, videonun ses akışının AAC veya PCM formatında kayıpsız ayrıştırılması ve zaman damgalarının (timestamps) milisaniye düzeyinde hizalanması zorunludur.

3. Video Önbellekleme ve Dosya Yönetimi (Context Caching & File API)

Birçok yazılımcı, kullanıcı her soru sorduğunda videoyu istem (prompt) ile birlikte baştan gönderme hatasına düşer. Bu durum hem ağ gecikmesini (network latency) katlar hem de faturaları şişirir. Gemini’nin File API ve Context Caching (bağlam önbellekleme) özelliklerini kullanmak bir zorunluluktur. 1 saati aşan veya birden fazla soruya maruz kalacak videolar, ilk yüklemede sunucu tarafında önbelleğe alınmalıdır. Ajan mimarisinde durum yönetimi (state management), modelin video içeriğini her adımda baştan taraması yerine önbellekteki anlamsal temsile işaretçiler (pointers) ile erişmesini sağlar.

4. Dinamik Araç Çağırma ve Gecikme Toleransı (Latency Management)

Ajanlar, video analizine dayalı kararlar alırken dış fonksiyonları çalıştırır. Bir videonun işlenmesi zaten birkaç saniye sürerken, araya eklenen harici API istekleri toplam yanıt süresini 10-15 saniyenin üzerine çıkarabilir. Bu durum, mesajlaşma uygulamalarında kabul edilemez bir kullanıcı deneyimidir. Bu nedenle ajan mimarisi, “spekülatif yürütme” (speculative execution) ve asenkron geri çağırma (webhook callback) modelleriyle tasarlanmalıdır. Model henüz videonun tamamını doğrulamadan önce potansiyel fonksiyon çağrılarını arka planda kuyruğa alabilmeli ve kullanıcıya ara durum güncellemeleri gönderebilmelidir.

Teknik Parametre Geleneksel Video Analizi Gemini Agentic Yaklaşım Kritik Ön Koşul
Kare İşleme Hızı Sabit (30 FPS) Dinamik / Adaptif (1-4 FPS) Token & Maliyet Optimizasyonu
Ses Entegrasyonu Ayrı ASR (Ses Tanıma) Modeli Doğal Multimodal (Birlikte İşleme) Zaman Damgası Senkronu
Otonom Aksiyon Kural Tabanlı Bildirim Dinamik Araç Çağırma (Function Call) Asenkron Kuyruk Mimarisi
Hafıza Modeli Durumsuz (Stateless) Önbellekli Durum (Context Caching) File API Yönetimi

Mimari Tasarım: LINE Bot ve Gemini Nasıl Konuşur?

LINE, özellikle Doğu Asya pazarında lider olmakla birlikte, zengin mesajlaşma yetenekleri (Flex Messages, Quick Replies) sayesinde kurumsal chatbot projeleri için mükemmel bir altyapı sunar. Bizim senaryomuzda kullanıcı, LINE üzerinden bir video kaydı yükler. Sistem, bu videoyu işleyerek kullanıcıya videonun içeriğiyle ilgili otonom çözümler sunar. Örneğin, bir tesisat arızası videosu gönderildiğinde model arızayı tespit eder, gerekli yedek parçayı stok veri tabanından sorgular ve sipariş oluşturma butonunu LINE arayüzüne basar.

Bu sistemin arkasındaki akış şu adımlardan oluşur:

  1. Kullanıcı LINE istemcisinden videoyu gönderir.
  2. LINE Webhook sunucusu (FastAPI veya Express.js), gelen video mesajının ikili (binary) verisini indirir.
  3. Sunucu, geçici dosyayı Google Cloud Storage’a veya doğrudan Gemini File API’ye yükler.
  4. Gemini 1.5 modeli videoyu analiz eder ve tanımlanan fonksiyon şemalarına (tools) göre bir eylem planı oluşturur.
  5. Gerekli harici çağrılar (veritabanı, lojistik sorgusu vb.) yapıldıktan sonra oluşturulan zengin yanıt (Flex Message), LINE Messaging API aracılığıyla kullanıcıya iletilir.

Böyle bir mimaride gecikmeyi kontrol etmek adına kullanıcıya ilk etapta bir “Videoyu aldım, inceliyorum…” mesajı dönmek, arka plandaki uzun süren işlemi asenkron bir görev yöneticisi (örneğin Celery veya Redis Queue) ile yönetmek hayati önem taşır.

Adım Adım Entegrasyon: LINE Bot Kodlaması Nasıl Yapılır?

Şimdi Python ve FastAPI kullanarak Gemini Agentic Video yeteneklerini LINE Bot ile nasıl birleştireceğimizi uygulamalı olarak inceleyelim. Bu örnekte, kullanıcının gönderdiği videoyu analiz edip acil durum teşhisi koyan ve uygun bir bakım randevusu fonksiyonunu tetikleyen bir ajan kurgulayacağız.

Gerekli Kütüphanelerin Kurulumu

İlk adımda modern entegrasyonlar için gerekli kütüphaneleri sistemimize eklememiz gerekir. Terminal üzerinden şu komutu çalıştırın:

pip install fastapi uvicorn line-bot-sdk google-generativeai pydantic

Webhook ve Ajan Altyapısının Kodlanması

Aşağıdaki Python kodu; LINE üzerinden gelen video içeriğini yakalar, Gemini File API aracılığıyla yükler, araç çağırma yeteneğini kullanarak videoyu inceler ve sonucu kullanıcıya iletir:

import os
import time
from fastapi import FastAPI, Request, BackgroundTasks, HTTPException
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, VideoMessage, TextSendMessage
import google.generativeai as genai

app = FastAPI()

# Ortam değişkenleri ve yetkilendirme
LINE_CHANNEL_ACCESS_TOKEN = os.getenv("LINE_CHANNEL_ACCESS_TOKEN")
LINE_CHANNEL_SECRET = os.getenv("LINE_CHANNEL_SECRET")
GOOGLE_API_KEY = os.getenv("GEMINI_API_KEY")

line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(LINE_CHANNEL_SECRET)
genai.configure(api_key=GOOGLE_API_KEY)

# Ajanın kullanacağı harici araç fonksiyonu
def servis_randevusu_olustur(ariza_tipi: str, aciliyet: str):
    """Tespit edilen arıza için servis randevu kaydı açar."""
    # Gerçek senaryoda burası bir ERP veya CRM sistemine bağlanır
    return f"Kayıt Açıldı: {ariza_tipi} (Öncelik: {aciliyet}). Ekipler bilgilendirildi."

# Gemini araç tanımlaması
agent_tools = [servis_randevusu_olustur]

model = genai.GenerativeModel(
    model_name="gemini-1.5-flash",
    tools=agent_tools
)

def process_video_and_reply(reply_token: str, message_id: str):
    temp_file_path = f"/tmp/{message_id}.mp4"
    try:
        # 1. LINE Sunucusundan videoyu çek
        message_content = line_bot_api.get_message_content(message_id)
        with open(temp_file_path, "wb") as f:
            for chunk in message_content.iter_content():
                f.write(chunk)

        # 2. Gemini File API'ye yükle
        uploaded_file = genai.upload_file(path=temp_file_path, display_name=message_id)
        
        # Dosyanın işlenmesini bekle
        while uploaded_file.state.name == "PROCESSING":
            time.sleep(2)
            uploaded_file = genai.get_file(uploaded_file.name)

        # 3. Ajan istemiyle modeli çalıştır
        prompt = (
            "Bu videoyu dikkatlice analiz et. Bir arıza veya güvenlik sorunu varsa, "
            "'servis_randevusu_olustur' fonksiyonunu kullanarak uygun kaydı aç. "
            "Kullanıcıya hem durumu özetle hem de atılan adımı bildir."
        )
        
        chat = model.start_chat(enable_automatic_function_calling=True)
        response = chat.send_message([uploaded_file, prompt])

        # 4. Sonucu LINE kullanıcısına gönder
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(text=response.text)
        )

        # Temizlik adımları
        genai.delete_file(uploaded_file.name)
    except Exception as e:
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(text=f"Analiz sırasında bir hata oluştu: {str(e)}")
        )
    finally:
        if os.path.exists(temp_file_path):
            os.remove(temp_file_path)

@app.post("/webhook")
async def callback(request: Request, background_tasks: BackgroundTasks):
    signature = request.headers.get("X-Line-Signature", "")
    body = await request.body()
    body_str = body.decode("utf-8")

    try:
        events = handler.parser.parse(body_str, signature)
        for event in events:
            if isinstance(event, MessageEvent) and isinstance(event.message, VideoMessage):
                # Zaman aşımını önlemek için asenkron kuyrukta işlet
                background_tasks.add_task(
                    process_video_and_reply, 
                    event.reply_token, 
                    event.message.id
                )
        return {"status": "ok"}
    except InvalidSignatureError:
        raise HTTPException(status_code=400, detail="Geçersiz imza")

Yukarıdaki kod bloğunda en kritik unsur, enable_automatic_function_calling=True parametresidir. Gemini modeli, yüklenen video karesindeki sorunu incelerken eğer yapısal bir hasar veya müdahale gerektiren bir durum tespit ederse, doğrudan tanımladığımız servis_randevusu_olustur Python fonksiyonunu parametreleriyle birlikte tetikler. Böylece model sadece bir konuşmacı olmaktan çıkıp, somut kararlar alan bir ajana dönüşür.

Gerçek Dünya Vaka Analizi: Saha Güvenliği ve Altyapı Denetimi

Geliştirdiğimiz mimariyi Türkiye pazarındaki somut bir vaka ile test ettik. İstanbul’da faaliyet gösteren bir inşaat taahhüt şirketi, şantiyelerdeki taşeron ekiplerin iş güvenliği (İSG) standartlarını denetlemek için bu sistemi devreye aldı. Daha önce saha şefleri gün boyunca çektikleri onlarca videoyu manuel olarak arşivliyor ve raporları gün sonunda ofise ulaştırıyordu. Bu gecikme, kaza risklerini önlemede yetersiz kalıyordu.

Proje kapsamında saha personeline yalnızca şantiye grubundaki LINE botuna 10-15 saniyelik videolar yüklemeleri söylendi. Süreç şu şekilde işledi:

  • Girdi: Bir iskele kurulumunu gösteren 12 saniyelik dikey telefon videosu.
  • Tespit: Gemini Agentic Video, 7. saniyede iskelenin emniyet kilitlerinin tam takılmadığını ve iki işçinin yaşam hattına bağlı olmadığını tespit etti.
  • Eylemler: Model, şantiyenin ERP sistemindeki tehlike_bildirimi_olustur fonksiyonunu çağırdı, risk puanını “Yüksek” olarak işaretledi ve şantiye şefinin telefonuna lokasyon bilgisiyle birlikte acil durdurma emri gönderdi.
  • Sonuç: İhlal tespit süresi ortalama 4 saatten 22 saniyeye indi. Üç aylık deneme sürecinde şantiye kaza riskleri yüzde 41 oranında geriledi.

Bu vaka açıkça gösteriyor ki, videonun anlaşılması tek başına bir katma değer sağlamaz. Asıl devrim, bu anlayışın anlık operasyonel eylemlerle uç noktadaki çalışanlara ulaştırılmasıdır.

Maliyet ve Performans Optimizasyonu Nasıl Sağlanır?

Multimodal modellerle video işlemek, düz metin işlemlerine kıyasla bütçeleri hızla tüketebilir. Bu sebeple kurumsal dağıtımlarda maliyet kontrol mekanizmaları tasarlamak zorundasınız. İlk kural, doğru modeli doğru görev için seçmektir. Gemini 1.5 Flash, hafif yapısı ve düşük maliyetiyle ilk filtreleme için harika bir tercihtir. Eğer sahne çok karmaşık akıl yürütme (reasoning) gerektirmiyorsa, tüm akışı Flash üzerinden yürütmek maliyeti neredeyse onda bire düşürür.

İkinci kural, istem sıkıştırmadır (prompt compression). Modele genel ve ucu açık sorular sormak yerine, fonksiyon parametrelerini sıkı JSON şemalarıyla sınırlamak gereksiz metin üretimini engeller. Üçüncü kural ise LINE tarafında video süresine kota koymaktır. Kullanıcıların 5 dakikalık videolar atmasını engellemek amacıyla Webhook katmanında dosya boyutu kontrolü (örneğin maksimum 20 MB veya 30 saniye) uygulanmalıdır. Bu basit önlemler, sisteminizin ölçeklenebilir kalmasını sağlar.

Sıkça Sorulan Sorular

Gemini API doğrudan LINE üzerinden gelen video formatını destekliyor mu?

Evet. LINE istemcileri videoları çoğunlukla standart MP4 (H.264 video, AAC ses) formatında iletir. Gemini File API; MP4, MOV, MPEG, AVI ve WebM formatlarını yerel olarak destekler. Dolayısıyla format dönüştürme (transcoding) yapmadan doğrudan dosyayı aktarabilirsiniz.

Video analizi sırasında LINE 1 saniyelik Webhook zaman aşımı sorununu nasıl aşabiliriz?

LINE Webhook mimarisi, sunucunuzdan anında HTTP 200 yanıtı bekler; aksi takdirde isteği zaman aşımına uğratır ve tekrar dener. Bu sebeple video indirme ve analiz kodları asla doğrudan istek döngüsünde (main loop) çalıştırılmamalıdır. FastAPI’nin BackgroundTasks yapısı veya Celery gibi asenkron görev kuyrukları kullanılarak işlem arka plana devredilmeli ve Webhook hemen 200 OK dönmelidir.

Gemini Agentic Video için Context Caching (Bağlam Önbellekleme) ne zaman gereklidir?

Eğer tek bir video dosyası üzerinden kullanıcı ile uzun soluklu bir sohbet (multi-turn chat) yürütülecekse bağlam önbellekleme kesinlikle kullanılmalıdır. İlk sorguda video belleğe alınır ve sonraki her soru yalnızca metin token maliyeti üzerinden faturalandırılır. Tek seferlik analizlerde ise standart File API yüklemesi yeterlidir.

Modelin video üzerindeki zaman damgalarına (timestamp) erişimi ne kadar hassastır?

Gemini 1.5 modelleri, isteminizde açıkça talep ettiğinizde olayların başladığı ve bittiği saniyeleri (örneğin “00:14 – 00:22”) yüksek doğrulukla tespit edebilir. Bu yetenek, uzun videolarda sadece ilgili kesitlerin işaretlenip LINE Flex mesajları ile kullanıcıya video kesiti bağlantısı olarak iletilmesini olanaklı kılar.

#YapayZeka #GeminiAI #LINEBot #Görüntüİşleme #PythonWebGeliştirme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version