Perplexity Search API Eğitimi: Tarayıcınızda Gerçek Zamanlı İddia Doğrulayıcı Oluşturun
Perplexity Search API’yi kullanarak gerçek zamanlı olarak olgusal iddiaları doğrulayan bir Chrome uzantısı oluşturmayı öğrenin. Node.js backend kurulumu ve API entegrasyon rehberi dahildir.
Perplexity kısa süre önce, tam sayfalar yerine sıralanmış, bağlam açısından zengin parçalar döndüren, ayrıntılı web erişimi için tasarlanmış Perplexity Search API’sini yayınladı. Gerçek-zamanlı doğruluk kontrolü, araştırma ve RAG hatları gibi hız ve hassasiyetin önemli olduğu kullanımlar için geliştirildi.
Bu eğitimde, Claim Checker adlı, herhangi bir web sayfasındaki olgusal ifadeleri gerçek zamanlı olarak (geri getirilen web kanıtlarına dayanarak) doğrulayan bir tarayıcı uzantısı oluşturacağız. Perplexity Search API’nin sürekli yenilenen indeksinin ve düşük gecikmeli erişim katmanının; anlamsal sinyaller ve çok-aşamalı yeniden sıralama ile birleştiğinde, en ilgili kanıtları hızla bulmayı nasıl kolaylaştırdığını göreceksiniz. Bu süreçte şunları öğreneceksiniz:
Perplexity Search API’yi kullanarak web’den yüksek kaliteli, sıralanmış kanıtlar çekmek ve arama sonuçlarını özel sıralama algoritmalarıyla işlemek.
API anahtarınızı güvenle yönetmek, CORS isteklerini ele almak ve alan adı çıkarımı ile tarihe dayalı sıralamayı içeren akıllı sonuç işleme uygulamak için bir Node.js backend geliştirmek.
Metin seçimini, yan panel arayüzlerini ve tarayıcı ile backend sunucunuz arasında sorunsuz iletişimi etkinleştiren içerik komut dosyalarına sahip bir Chrome/Edge uzantısı oluşturmak.
Kaynak URL’leri, başlıklar, alıntılar, alan adları ve yayın tarihleri dahil doğrulama sonuçlarını, gerçek zamanlı iddia işleme ile etkileşimli bir yan panelde görüntülemek.
Sonunda, tarayıcınız içinde sorunsuz çalışan uçtan uca bir doğruluk kontrol aracı elde edeceksiniz. Kullanıcılar, herhangi bir web sayfasında metin seçip, destekleyici kaynaklarla birlikte anında doğrulama sonuçları alabilir; tüm bunlar API kimlik bilgilerinin sunucu tarafında güvende tutulmasıyla gerçekleşir.
Perplexity Search API, hızlı ve ayrıntılı web arama sonuçları almak için geliştirici dostu bir yoldur.
Yalnızca tam sayfalar döndüren geleneksel arama API’lerinden farklı olarak, Perplexity sorgunuzla eşleşen tam cümleleri ve paragrafları içeren sıralanmış parçalar ve belge-altı bölümler sunar. Bu arama API’sinin bazı temel özellikleri şunlardır:
Maliyet etkin: Search API, 1.000 istek için 5 ABD doları olarak fiyatlandırılır ve token bazlı faturalama yoktur; bu da sık veya zamanlanmış kontroller çalıştıran uygulamalar için idealdir.
Yüksek kaliteli erişim: Leksik ve anlamsal sıralamayı çok-aşamalı yeniden sıralamayla birleştirir; böylece sürekli yenilenen devasa bir indeksten (~günde 200M sorgu) oldukça alakalı, güncel sonuçlar elde edersiniz.
Düşük gecikme: Perplexity arama API’si sorguları hızlı döndürür; böylece aynı anda birden fazla iddia doğrularken bile arayüzünüz duyarlı kalır.
Uzantımız için bu, herhangi bir cümleyi sorgu olarak geçirip, başlıklar, URL’ler ve bağlam parçalarıyla birlikte güvenilir destekleyici veya çelişen kanıtlar alabileceğimiz anlamına gelir; gerçek zamanlı doğruluk kontrolü için idealdir.
Perplexity Search API Projesi: Tarayıcı İddia Doğrulayıcı Uzantısı
Bu bölümde, Perplexity Search API’yi kullanarak olgusal iddiaları anında doğrulayan bir tarayıcı iddia doğrulayıcı uzantısı oluşturacağız. Bu proje şunları birleştirir:
Seçilen metni Perplexity Search API’ye gönderen ve sonuçları işleyen hafif bir Node.js backend
Doğrulama ayrıntılarını göstermek için yan panel arayüzüne sahip bir Chrome uzantısı
Herhangi bir web sayfasından kullanıcı tarafından seçilen metni yakalayan bir içerik komut dosyası
Projenin sonunda depo yapınız şu şekilde görünmelidir:
Haydi bu projenin her bir parçasını adım adım inceleyelim ve tarayıcı içinde güvenilir iddia doğrulaması sunmak için nasıl birlikte çalıştıklarını görelim.
Adım 1: Bağımlılıklar ve kütüphaneler
Başlamadan önce, aşağıdaki ön koşulların sağlandığından emin olun:
Bir Perplexity hesabı. Kaydolduktan veya oturum açtıktan sonra, API grubunuza ve ilgili ayarlara erişmek için sol kenar çubuğundan API bölümünü genişletin.
API Portal’ınızdaki API Billing sekmesine gidin ve ödeme yönteminiz ekleyin. Bu demo için yaklaşık 10 ABD doları kredi, istekleri karşılamak için yeterlidir.
Node.js sürüm 18 veya üzeri.
Chromium tabanlı tarayıcı (Google Chrome veya Microsoft Edge).
Ardından, backend için gerekli bağımlılıkları yükleyin:
Artık tüm bağımlılıkları kurduk. Sırada backend sunucumuzu ve uzantımızı inşa etmek var.
Adım 2: Backend’i oluşturun
server.js dosyası, Express kullanarak hafif bir Node.js backend’i kurar. Bu backend, tarayıcı uzantısı ile Perplexity Search API arasında köprü görevi görür. Kullanıcı tarafından seçilen veya girilen iddiaları alır, Perplexity’den ilgili kanıtları sorgular ve uzantının arayüzünde görüntülenmeye hazır, temizlenmiş ve yapılandırılmış bir yanıt döndürür.
const express =require('express');const cors =require('cors');require('dotenv').config();const app =express();constPORT=3000;
app.use(cors());
app.use(express.json());functionextractDomain(url){try{const urlObj =newURL(url);return urlObj.hostname.replace('www.','');}catch{return url;}}
app.post('/check-claim',async(req, res)=>{try{const{ claim }= req.body;if(!claim){return res.status(400).json({error:'Claim is required'});}if(!process.env.PERPLEXITY_API_KEY){return res.status(500).json({error:'Perplexity API key not configured',sources:[]});}const response =awaitfetch('https://api.perplexity.ai/search',{method:'POST',headers:{'Authorization': Bearer ${process.env.PERPLEXITY_API_KEY},'Content-Type':'application/json'},body:JSON.stringify({query: claim,max_results:20,max_tokens_per_page:1024})});if(!response.ok){thrownewError(Perplexity APIerror: ${response.status});}const data =await response.json();const searchResults = data.results ||[];if(searchResults.length ===0){return res.json({
claim,sources:[],totalSources:0,explanation:'No relevant sources found to verify this claim.',summary:'No sources found for fact-checking.'});}const sortedResults = searchResults.sort((a, b)=>{const dateA =newDate(a.last_updated || a.date ||0);const dateB =newDate(b.last_updated || b.date ||0);return dateB - dateA;});const sources = sortedResults.slice(0,3).map((result)=>({url: result.url,title: result.title,snippet: result.snippet ||'',domain:extractDomain(result.url),date: result.date ||null,lastUpdated: result.last_updated ||null}));const result ={
claim,
sources,totalSources: searchResults.length,explanation: ${searchResults.length} sources found, showing top 3.,summary: Found ${searchResults.length} relevant sources for fact-checking.};
res.json(result);}catch(error){
res.status(500).json({error: error.message,sources:[]});}});
app.get('/health',(req, res)=>{
res.json({status:'ok'});});
app.listen(PORT,()=>{
console.log(Server running on http://localhost:${PORT});
console.log('Make sure PERPLEXITY_API_KEY is set in .env file');});Altyapı:
Yukarıdaki kod, Claim Checker uzantısı için güvenlik ve mantık katmanıdır ve şu işlevleri yerine getirir:
Güvenli ve mantıklı backend:POST /check-claim rotası üzerinden bir iddia alır, girdiyi doğrular ve sunucuda saklanan API anahtarını kullanarak Perplexity Search API’yi çağırır.
İşleme ve yapılandırma: Sunucu, ilgili web kaynakları ve alıntıların bir listesini alır, last_updated ve tarih alanlarını kullanarak yeniliğe göre sıralar, ilk üçünü seçer ve uzantı için temiz bir JSON yanıtı döndürür.
Anahtar güvenliği: Bu backend’i çalıştırmak, API anahtarınızı tarayıcıdan gizli tutar ve veriler kullanıcıya ulaşmadan önce sıralama, filtreleme veya önbellekleme gibi ek mantıklar eklemenize olanak tanır.
Genişletilebilir tasarım: Bu yaklaşım, uzantıyı daha güvenli ve gelişmiş puanlama, çok-kaynak birleştirme veya analitik gibi gelecekteki iyileştirmeler için kolayca genişletilebilir hale getirir.
Artık sunucumuz hazır. Şimdi bir Chrome uzantısı oluşturalım.
Adım 3: Chrome uzantısını oluşturma
Bu adımda, Claim Checker’ın kullanıcı deneyimini sağlayan Chrome uzantısını oluşturacağız. Uzantı, herhangi bir web sayfasından iddiaları yakalamaktan, bunları backend’imize göndermekten ve doğrulama sonuçlarını sezgisel bir arayüzde görüntülemekten sorumludur.
Her dosyaya dalmadan önce, bu temel bileşenlerin ne yaptığına bakalım:
background.js: Bu betik bir servis çalışanı olarak çalışır ve kullanıcı eylemlerini dinlemek, yan paneli açmak ve iddiaları doğrulama için güvenle backend’e göndermek gibi arka plan görevlerini yönetir.
content.js: Bu içerik betiği, etkin web sayfasının içinde çalışır. Görünür makale metnini çıkarır, olası olgusal iddiaları belirler ve kullanıcının neyin kontrol edildiğini görebilmesi için bunları dinamik olarak vurgular.
sidepanel.js: Çıkarılan iddiaları ve doğrulama durumlarını gösteren etkileşimli yan panel arayüzünü kontrol eder. Sonuçları gerçek zamanlı günceller ve sayfadaki vurgularla ilişkilendirir.
popup.js: Kullanıcı uzantı simgesine tıkladığında açılan hızlı erişim açılır pencereyi çalıştırır. Yan paneli açmadan iddiaları kontrol etmenin hafif bir yolunu sunar.
Chrome uzantısı için birkaç ek yardımcı dosyayı GitHub deposunda bulabilirsiniz.
Adım 3.1: Arka plan betiği ve olay işleme
Chrome uzantısı kurulumumuz üzerine inşa ederek, background.js dosyası uzantının tepkisel kalmasını sağlayan merkezi denetleyicidir. Kullanıcı eylemlerini (uzantı simgesine tıklama gibi) dinler, gerektiğinde yan paneli açar ve iddiaları doğrulama için backend’e iletir.
Yukarıdaki kod, aşağıdakileri içerecek şekilde uzantının tepkiselliğine odaklanır:
Merkezi olay merkezi: Arka plan betiği, chrome.action.onClicked ve chrome.runtime.onMessage olmak üzere iki ana dinleyici kaydeder. İlki, kullanıcı uzantı simgesine tıkladığında tepki verir ve yan paneli açmaya çalışır. İkincisi, içerik betiğinden veya arayüz bileşenlerinden gelen checkClaim gibi özel mesajları dinler.
Güvenli API işleme:checkClaim() işlevi, seçilen iddiayı http://localhost:3000/check-claim adresindeki backend’e göndermek için fetch API’sini kullanır; API anahtarı sunucu tarafında saklandığından, tarayıcı hiçbir zaman onu açığa çıkarmaz ve hassas kimlik bilgileri güvende kalır.
Hata dayanıklılığı: Her iki olay dinleyicisi de çalışma zamanı hatalarını ele almak için try/catch blokları içerir. Yan panel açılamazsa, betik açılır pencereyi ayarlamaya geri döner. API çağrıları başarısız olduğunda, kullanıcıların sessiz başarısızlıklar yaşamaması için hataları günlüğe kaydeder ve arayüze yapılandırılmış hata mesajları döndürür.
Arka plan betiği iletişimi ve güvenli API çağrılarını hallederken, sıradaki adım doğrudan web sayfasıyla etkileşim kurmaktır.
Adım 3.2: İddiaları çıkarma ve vurgulama
content.js dosyası doğrudan web sayfasının içinde çalışır ve makale metnini çıkarmaktan, olası olgusal iddiaları belirlemekten ve kullanıcı için bunları görsel olarak vurgulamaktan sorumludur. İlgili metni yakalayarak ve kullanıcı etkileşimini mümkün kılarak, sayfa içeriği ile uzantının arka plan mantığı arasında köprü kurar.
content.js betiğinin önemli bölümlerini, anlamlı metni nasıl çıkardığını, olası iddiaları nasıl tespit ettiğini ve vurgulanan içeriği uzantının arayüzüne nasıl bağladığını anlamak için parçalara ayıralım:
Makale metni çıkarma:extractArticleText() işlevi, ana okunabilir içeriği almak için yaygın makale kapsayıcılarını tarar. Bu, uzantının gezinme menüleri veya reklamlardan ziyade anlamlı metne odaklanmasına yardımcı olur.
İddia tespit mantığı:extractClaims() işlevi, metni cümlelere böler, uzunluk ve yapı için filtreler uygular ve olgusal iddia olma olasılığı yüksek ifadeleri tespit etmek için regex tabanlı anahtar kelimeler kullanır.
Dinamik vurgulama:highlightTextOnPage() işlevi, tespit edilen iddiayı DOM içinde bulur ve biçimlendirilmiş bir <span> içine sarar. Kullanıcıların sayfadaki iddialarla yan paneldeki doğrulama sonuçlarını görsel olarak ilişkilendirebilmesi için üzerine gelme ve tıklama etkileşimleri ekler.
Mesaj işleme:chrome.runtime.onMessage dinleyicisi, iddiaları çıkarma, vurguları ekleme ve gerektiğinde temizleme gibi eylemleri koordine eder. Bu, sayfa ile uzantıyı senkronize tutar ve sorunsuz bir kullanıcı etkileşimi sağlar.
İçerik betiği sayfada metin çıkarma ve iddia vurgulamayı ele aldığından, sıradaki adım bu iddiaları ve doğrulama sonuçlarını kullanıcıya sunmaktır. Burada sidepanel.js arayüzü devreye girer.
Adım 3.3: Yan panel arayüzü
sidepanel.js dosyası, kullanıcıların çıkarılan iddiaları ve doğrulama sonuçlarını görebileceği etkileşimli yan paneli çalıştırır. İçerik betiği ve backend yanıtlarını uzantı içinde temiz, kaydırılabilir bir arayüze bağlar.
Dinamik iddia listesi: Kullanıcı “Check Claims” düğmesine tıkladığında, betik etkin sekmeden iddiaları ister, eski vurguları temizler ve yer tutucu durumlarla bir iddia listesi oluşturur.
Gerçek zamanlı doğrulama güncellemeleri: Her iddia, checkClaim eylemiyle chrome.runtime.sendMessage kullanılarak arka plan betiğine gönderilir. Backend sonuç döndürdüğünde, arayüz kaynaklar, alan adları ve alıntılarla anında güncellenir.
Etkileşimli bağlantı: Betik, highlightClaimInPanel mesajlarını dinler; böylece sayfadaki vurgulu metne tıklamak, yan paneldeki ilgili iddia ayrıntılarına kaydırır. Bu, sayfa vurguları ile doğrulama verileri arasında akıcı bir gezinme döngüsü oluşturur.
Sırada, önceki adımlarda oluşturulan uzantıyı başlatmayı ve kullanmayı kolaylaştırmak için hızlı erişim açılır penceresi ekleyeceğiz.
Adım 3.4: Hızlı erişim açılır pencere arayüzü
popup.js, kullanıcı uzantı simgesine tıkladığında görünen hafif bir açılır pencere arayüzüdür. Yan panelden farklı olarak, bu açılır pencere mevcut sayfadan ayrılmadan veya tam etkileşimli paneli açmadan iddiaları kontrol etmenin daha hızlı, isteğe bağlı bir yolunu sağlar.
İşte popup.js betiğinin, uzantı araç çubuğundan doğrudan isteğe bağlı bir iddia doğrulayıcıyı nasıl çalıştırdığı:
Sayfa taraması ve iddia gösterimi: Kullanıcı “Check” düğmesine tıkladığında, açılır pencere içerik betiği aracılığıyla etkin sekmeden metin ister, olası iddiaları hızla çıkarır ve bunları açılır pencerede listeler.
Backend doğrulaması: Her iddia, /check-claim API rotasını çağırmak üzere arka plan betiğine gönderilir. Açılır pencere, sunucudan dönen hüküm, güven çubukları, açıklamalar, karşı argümanlar ve kaynak bağlantılarıyla gerçek zamanlı güncellenir.
Artık uzantımız test edilmeye hazır.
Not: Bu projeye ait tüm kod dosyalarını GitHub deposunda bulabilirsiniz.
Sunucu çalışmaya başladıktan sonra Chrome uzantısını yükleyin:
Chrome’u açın ve “Extensions”a tıklayın(arama çubuğunun sağ tarafında).
“Developer mode”u açın ve “Load unpacked”e tıklayın (sol üst).
Ardından, tüm dosyaları içeren uzantılar klasörümüzü yükleyin ve onayı bekleyin.
Chrome uzantının eklendiğini onayladıktan sonra, herhangi bir web sayfasında Claim Checker simgesine tıklayın, doğrulamak istediğiniz metni seçin ve iddia kontrolünü çalıştırın.
Sonuçlara bakalım:
Sonuç
Artık tamamen Perplexity’nin Search API’siyle çalışan (LLM çağrısı gerektirmeyen) hızlı ve uygun maliyetli bir iddia doğrulayıcınız var. Bu demo, taze ve güvenilir arama sonuçları, parça düzeyinde alaka, düşük gecikme ve öngörülebilir fiyatlandırma gibi API’nin temel güçlü yanlarını öne çıkarır.
Buradan, gelişmiş filtreler ekleyerek, otomatik kontrolleri zamanlayarak veya bir RAG hattı için ön filtre olarak entegre ederek projeyi genişletebilirsiniz. Daha ileri gitmek için Perplexity API dokümanlarını ve hızlı başlangıç rehberlerini keşfederek daha gelişmiş arama ve filtreleme yeteneklerinin kilidini açın.
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.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Perplexity kısa süre önce, tam sayfalar yerine sıralanmış, bağlam açısından zengin parçalar döndüren, ayrıntılı web erişimi için tasarlanmış Perplexity Search API’sini yayınladı. Gerçek-zamanlı doğruluk kontrolü, araştırma ve RAG hatları gibi hız ve hassasiyetin önemli olduğu kullanımlar için geliştirildi.
Bu eğitimde, Claim Checker adlı, herhangi bir web sayfasındaki olgusal ifadeleri gerçek zamanlı olarak (geri getirilen web kanıtlarına dayanarak) doğrulayan bir tarayıcı uzantısı oluşturacağız. Perplexity Search API’nin sürekli yenilenen indeksinin ve düşük gecikmeli erişim katmanının; anlamsal sinyaller ve çok-aşamalı yeniden sıralama ile birleştiğinde, en ilgili kanıtları hızla bulmayı nasıl kolaylaştırdığını göreceksiniz. Bu süreçte şunları öğreneceksiniz:
Sonunda, tarayıcınız içinde sorunsuz çalışan uçtan uca bir doğruluk kontrol aracı elde edeceksiniz. Kullanıcılar, herhangi bir web sayfasında metin seçip, destekleyici kaynaklarla birlikte anında doğrulama sonuçları alabilir; tüm bunlar API kimlik bilgilerinin sunucu tarafında güvende tutulmasıyla gerçekleşir.
Ayrıca ayrı bir yazıda Perplexity’nin Comet Tarayıcısı rehberimize da göz atabilirsiniz.
Perplexity Search API Nedir?
Perplexity Search API, hızlı ve ayrıntılı web arama sonuçları almak için geliştirici dostu bir yoldur.
Yalnızca tam sayfalar döndüren geleneksel arama API’lerinden farklı olarak, Perplexity sorgunuzla eşleşen tam cümleleri ve paragrafları içeren sıralanmış parçalar ve belge-altı bölümler sunar. Bu arama API’sinin bazı temel özellikleri şunlardır:
Uzantımız için bu, herhangi bir cümleyi sorgu olarak geçirip, başlıklar, URL’ler ve bağlam parçalarıyla birlikte güvenilir destekleyici veya çelişen kanıtlar alabileceğimiz anlamına gelir; gerçek zamanlı doğruluk kontrolü için idealdir.
Perplexity Search API Projesi: Tarayıcı İddia Doğrulayıcı Uzantısı
Bu bölümde, Perplexity Search API’yi kullanarak olgusal iddiaları anında doğrulayan bir tarayıcı iddia doğrulayıcı uzantısı oluşturacağız. Bu proje şunları birleştirir:
Projenin sonunda depo yapınız şu şekilde görünmelidir:
Haydi bu projenin her bir parçasını adım adım inceleyelim ve tarayıcı içinde güvenilir iddia doğrulaması sunmak için nasıl birlikte çalıştıklarını görelim.
Adım 1: Bağımlılıklar ve kütüphaneler
Başlamadan önce, aşağıdaki ön koşulların sağlandığından emin olun:
Ardından, backend için gerekli bağımlılıkları yükleyin:
Sunucu dizininde bir
.envdosyası oluşturun ve Perplexity API anahtarınızı ekleyin:Artık tüm bağımlılıkları kurduk. Sırada backend sunucumuzu ve uzantımızı inşa etmek var.
Adım 2: Backend’i oluşturun
server.jsdosyası, Express kullanarak hafif bir Node.js backend’i kurar. Bu backend, tarayıcı uzantısı ile Perplexity Search API arasında köprü görevi görür. Kullanıcı tarafından seçilen veya girilen iddiaları alır, Perplexity’den ilgili kanıtları sorgular ve uzantının arayüzünde görüntülenmeye hazır, temizlenmiş ve yapılandırılmış bir yanıt döndürür.Yukarıdaki kod, Claim Checker uzantısı için güvenlik ve mantık katmanıdır ve şu işlevleri yerine getirir:
POST /check-claimrotası üzerinden bir iddia alır, girdiyi doğrular ve sunucuda saklanan API anahtarını kullanarak Perplexity Search API’yi çağırır.last_updatedve tarih alanlarını kullanarak yeniliğe göre sıralar, ilk üçünü seçer ve uzantı için temiz bir JSON yanıtı döndürür.Artık sunucumuz hazır. Şimdi bir Chrome uzantısı oluşturalım.
Adım 3: Chrome uzantısını oluşturma
Bu adımda, Claim Checker’ın kullanıcı deneyimini sağlayan Chrome uzantısını oluşturacağız. Uzantı, herhangi bir web sayfasından iddiaları yakalamaktan, bunları backend’imize göndermekten ve doğrulama sonuçlarını sezgisel bir arayüzde görüntülemekten sorumludur.
Her dosyaya dalmadan önce, bu temel bileşenlerin ne yaptığına bakalım:
background.js: Bu betik bir servis çalışanı olarak çalışır ve kullanıcı eylemlerini dinlemek, yan paneli açmak ve iddiaları doğrulama için güvenle backend’e göndermek gibi arka plan görevlerini yönetir.content.js: Bu içerik betiği, etkin web sayfasının içinde çalışır. Görünür makale metnini çıkarır, olası olgusal iddiaları belirler ve kullanıcının neyin kontrol edildiğini görebilmesi için bunları dinamik olarak vurgular.sidepanel.js: Çıkarılan iddiaları ve doğrulama durumlarını gösteren etkileşimli yan panel arayüzünü kontrol eder. Sonuçları gerçek zamanlı günceller ve sayfadaki vurgularla ilişkilendirir.popup.js: Kullanıcı uzantı simgesine tıkladığında açılan hızlı erişim açılır pencereyi çalıştırır. Yan paneli açmadan iddiaları kontrol etmenin hafif bir yolunu sunar.Chrome uzantısı için birkaç ek yardımcı dosyayı GitHub deposunda bulabilirsiniz.
Adım 3.1: Arka plan betiği ve olay işleme
Chrome uzantısı kurulumumuz üzerine inşa ederek,
background.jsdosyası uzantının tepkisel kalmasını sağlayan merkezi denetleyicidir. Kullanıcı eylemlerini (uzantı simgesine tıklama gibi) dinler, gerektiğinde yan paneli açar ve iddiaları doğrulama için backend’e iletir.Yukarıdaki kod, aşağıdakileri içerecek şekilde uzantının tepkiselliğine odaklanır:
chrome.action.onClickedvechrome.runtime.onMessageolmak üzere iki ana dinleyici kaydeder. İlki, kullanıcı uzantı simgesine tıkladığında tepki verir ve yan paneli açmaya çalışır. İkincisi, içerik betiğinden veya arayüz bileşenlerinden gelencheckClaimgibi özel mesajları dinler.checkClaim()işlevi, seçilen iddiayıhttp://localhost:3000/check-claimadresindeki backend’e göndermek içinfetchAPI’sini kullanır; API anahtarı sunucu tarafında saklandığından, tarayıcı hiçbir zaman onu açığa çıkarmaz ve hassas kimlik bilgileri güvende kalır.try/catchblokları içerir. Yan panel açılamazsa, betik açılır pencereyi ayarlamaya geri döner. API çağrıları başarısız olduğunda, kullanıcıların sessiz başarısızlıklar yaşamaması için hataları günlüğe kaydeder ve arayüze yapılandırılmış hata mesajları döndürür.Arka plan betiği iletişimi ve güvenli API çağrılarını hallederken, sıradaki adım doğrudan web sayfasıyla etkileşim kurmaktır.
Adım 3.2: İddiaları çıkarma ve vurgulama
content.jsdosyası doğrudan web sayfasının içinde çalışır ve makale metnini çıkarmaktan, olası olgusal iddiaları belirlemekten ve kullanıcı için bunları görsel olarak vurgulamaktan sorumludur. İlgili metni yakalayarak ve kullanıcı etkileşimini mümkün kılarak, sayfa içeriği ile uzantının arka plan mantığı arasında köprü kurar.content.jsbetiğinin önemli bölümlerini, anlamlı metni nasıl çıkardığını, olası iddiaları nasıl tespit ettiğini ve vurgulanan içeriği uzantının arayüzüne nasıl bağladığını anlamak için parçalara ayıralım:extractArticleText()işlevi, ana okunabilir içeriği almak için yaygın makale kapsayıcılarını tarar. Bu, uzantının gezinme menüleri veya reklamlardan ziyade anlamlı metne odaklanmasına yardımcı olur.extractClaims()işlevi, metni cümlelere böler, uzunluk ve yapı için filtreler uygular ve olgusal iddia olma olasılığı yüksek ifadeleri tespit etmek için regex tabanlı anahtar kelimeler kullanır.highlightTextOnPage()işlevi, tespit edilen iddiayı DOM içinde bulur ve biçimlendirilmiş bir<span>içine sarar. Kullanıcıların sayfadaki iddialarla yan paneldeki doğrulama sonuçlarını görsel olarak ilişkilendirebilmesi için üzerine gelme ve tıklama etkileşimleri ekler.chrome.runtime.onMessagedinleyicisi, iddiaları çıkarma, vurguları ekleme ve gerektiğinde temizleme gibi eylemleri koordine eder. Bu, sayfa ile uzantıyı senkronize tutar ve sorunsuz bir kullanıcı etkileşimi sağlar.İçerik betiği sayfada metin çıkarma ve iddia vurgulamayı ele aldığından, sıradaki adım bu iddiaları ve doğrulama sonuçlarını kullanıcıya sunmaktır. Burada
sidepanel.jsarayüzü devreye girer.Adım 3.3: Yan panel arayüzü
sidepanel.jsdosyası, kullanıcıların çıkarılan iddiaları ve doğrulama sonuçlarını görebileceği etkileşimli yan paneli çalıştırır. İçerik betiği ve backend yanıtlarını uzantı içinde temiz, kaydırılabilir bir arayüze bağlar.İşte yan panelin tarayıcınızda nasıl çalıştığı:
checkClaimeylemiylechrome.runtime.sendMessagekullanılarak arka plan betiğine gönderilir. Backend sonuç döndürdüğünde, arayüz kaynaklar, alan adları ve alıntılarla anında güncellenir.highlightClaimInPanelmesajlarını dinler; böylece sayfadaki vurgulu metne tıklamak, yan paneldeki ilgili iddia ayrıntılarına kaydırır. Bu, sayfa vurguları ile doğrulama verileri arasında akıcı bir gezinme döngüsü oluşturur.Sırada, önceki adımlarda oluşturulan uzantıyı başlatmayı ve kullanmayı kolaylaştırmak için hızlı erişim açılır penceresi ekleyeceğiz.
Adım 3.4: Hızlı erişim açılır pencere arayüzü
popup.js, kullanıcı uzantı simgesine tıkladığında görünen hafif bir açılır pencere arayüzüdür. Yan panelden farklı olarak, bu açılır pencere mevcut sayfadan ayrılmadan veya tam etkileşimli paneli açmadan iddiaları kontrol etmenin daha hızlı, isteğe bağlı bir yolunu sağlar.İşte
popup.jsbetiğinin, uzantı araç çubuğundan doğrudan isteğe bağlı bir iddia doğrulayıcıyı nasıl çalıştırdığı:/check-claimAPI rotasını çağırmak üzere arka plan betiğine gönderilir. Açılır pencere, sunucudan dönen hüküm, güven çubukları, açıklamalar, karşı argümanlar ve kaynak bağlantılarıyla gerçek zamanlı güncellenir.Artık uzantımız test edilmeye hazır.
Not: Bu projeye ait tüm kod dosyalarını GitHub deposunda bulabilirsiniz.
Adım 4: Uygulamayı çalıştırma
Backend sunucusunu aşağıdaki komutla başlatın:
Sunucu çalışmaya başladıktan sonra Chrome uzantısını yükleyin:
Sonuçlara bakalım:
Sonuç
Artık tamamen Perplexity’nin Search API’siyle çalışan (LLM çağrısı gerektirmeyen) hızlı ve uygun maliyetli bir iddia doğrulayıcınız var. Bu demo, taze ve güvenilir arama sonuçları, parça düzeyinde alaka, düşük gecikme ve öngörülebilir fiyatlandırma gibi API’nin temel güçlü yanlarını öne çıkarır.
Buradan, gelişmiş filtreler ekleyerek, otomatik kontrolleri zamanlayarak veya bir RAG hattı için ön filtre olarak entegre ederek projeyi genişletebilirsiniz. Daha ileri gitmek için Perplexity API dokümanlarını ve hızlı başlangıç rehberlerini keşfederek daha gelişmiş arama ve filtreleme yeteneklerinin kilidini açın.