0Pricing
AI Agents · Ders

Aracı Araması İçin Tavily ve SerpAPI

Web araması araçları için API kurulumu, sorgu oluşturma ve sonuç ayrıştırma.

Aracı Araması İçin Tavily ve SerpAPI, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Aracıların Web Aramasına Neden İhtiyacı Var

LLM'lerin bir bilgi kesim tarihi vardır. Güncel olaylar, canlı fiyatlar, son haberler veya hızla değişen konular hakkındaki sorular için modelin eğitim verileri güncelliğini yitirmiştir.

Tavily ve SerpApi gibi web arama araçları, aracılara internete gerçek zamanlı erişim sağlayarak statik eğitim verileri ile güncel gerçeklik arasındaki boşluğu kapatır.

Tavily: Yapay Zekâ Aracıları için Özel Tasarlanmış

Tavily, özellikle yapay zekâ aracıları için tasarlanmış bir arama API'sidir. Genel web veri çekme yöntemlerinden farklı olarak önceden çıkarılmış içerikle birlikte temiz ve yapılandırılmış sonuçlar döndürür; HTML ayrıştırması gerekmez.

pip install tavily-python komutuyla yükleyin. API anahtarını tavily.com adresinden alın.

from tavily import TavilyClient
import os

client = TavilyClient(api_key=os.getenv('TAVILY_API_KEY'))

results = client.search(
    query='latest OpenAI GPT-5 release date',
    max_results=5
)

for r in results['results']:
    print(r['title'])
    print(r['url'])
    print(r['content'][:200])
    print('---')

Tavily Arama Parametreleri

Tavily, arama davranışını denetlemek için çeşitli parametreler sunar. Aracılar için en kullanışlı olanlar max_results, search_depth ve include_domains / exclude_domains parametreleridir.

# Basic search
results = client.search(
    query='Python async best practices 2024',
    max_results=5,
    search_depth='basic'  # 'basic' (fast) or 'advanced' (slower, deeper)
)

# Domain-filtered search
results = client.search(
    query='machine learning papers',
    max_results=5,
    include_domains=['arxiv.org', 'papers.nips.cc', 'openreview.net']
)

# Exclude low-quality domains
results = client.search(
    query='stock market today',
    max_results=5,
    exclude_domains=['pinterest.com', 'quora.com']
)

Tavily Sonuç Yapısı

Her Tavily sonucu şunları içerir: title, url, content (çıkarılmış metin), score (ilgililik) ve isteğe bağlı olarak published_date. content alanı temiz metindir; HTML etiketleri içermez.

results = client.search('Claude AI pricing 2024', max_results=3)

for r in results['results']:
    print(f"Title:   {r['title']}")
    print(f"URL:     {r['url']}")
    print(f"Score:   {r.get('score', 'N/A')}")
    print(f"Date:    {r.get('published_date', 'unknown')}")
    print(f"Content: {r['content'][:300]}")
    print()

# Tavily also returns 'answer' — a direct answer synthesized from results
if results.get('answer'):
    print('Direct answer:', results['answer'])

SerpApi: Google Aramasına Programatik Erişim

SerpApi, Google, Bing, YouTube ve diğer arama motorlarına yapılandırılmış erişim sağlar. Organik sonuçlar, bilgi panelleri, öne çıkan parçalar ve alışveriş sonuçları dahil zengin veriler döndürür.

pip install google-search-results komutuyla yükleyin.

from serpapi import GoogleSearch
import os

params = {
    'q': 'best Python web frameworks 2024',
    'api_key': os.getenv('SERPAPI_KEY'),
    'num': 5,              # number of results
    'hl': 'en',            # language
    'gl': 'us',            # country
    'safe': 'active'       # safe search
}

search = GoogleSearch(params)
results = search.get_dict()

for r in results.get('organic_results', []):
    print(r['title'])
    print(r['link'])
    print(r.get('snippet', ''))
    print()

SerpApi Sonuç Yapısı

SerpApi, Tavily'den daha zengin yapılandırılmış veriler döndürür. organic_results içindeki temel alanlar şunlardır: title, link, snippet, position. Öne çıkan parçalar ayrıca answer_box altında görünür.

def extract_serp_results(serp_data, max_results=5):
    results = []

    # Featured snippet / answer box (highest priority)
    if 'answer_box' in serp_data:
        box = serp_data['answer_box']
        results.append({
            'title': box.get('title', 'Featured Snippet'),
            'url':   box.get('link', ''),
            'snippet': box.get('answer') or box.get('snippet', ''),
            'is_featured': True
        })

    # Organic results
    for r in serp_data.get('organic_results', [])[:max_results]:
        results.append({
            'title':   r.get('title', ''),
            'url':     r.get('link', ''),
            'snippet': r.get('snippet', ''),
            'position': r.get('position', 0),
            'is_featured': False
        })

    return results

if __name__ == '__main__':
    demo_serp = {
        'answer_box': {'title': 'Python version', 'link': 'https://python.org', 'answer': '3.13'},
        'organic_results': [
            {'title': 'Python Docs', 'link': 'https://docs.python.org', 'snippet': 'Official docs', 'position': 1},
        ],
    }
    for r in extract_serp_results(demo_serp):
        print(f"{'[FEATURED] ' if r['is_featured'] else ''}{r['title']} - {r['url']}")

Güncellik Seçenekleri ve Tarih Filtreleme

Zamana duyarlı sorgular için sonuçları yayımlanma tarihine göre filtreleyin. Tavily, days parametresini; SerpApi ise tbs (zamana dayalı arama) parametresini destekler.

# Tavily: results from last 7 days
recent_results = client.search(
    query='AI news',
    max_results=5,
    days=7  # only results published in last 7 days
)

# SerpApi: results from last month
params = {
    'q': 'AI news',
    'api_key': os.getenv('SERPAPI_KEY'),
    'tbs': 'qdr:m',   # qdr:d=day, qdr:w=week, qdr:m=month, qdr:y=year
    'num': 5
}
search = GoogleSearch(params)
results = search.get_dict()

LangChain için Arama Aracı Oluşturma

Tavily veya SerpApi'yi bir LangChain aracısında kullanmak için arama işlevini bir Tool olarak sarmalayın. Aracı, sağladığınız açıklamaya göre bu işlevi diğer araçlar gibi çağırabilir.

from langchain.tools import Tool
from tavily import TavilyClient
import os

tavily = TavilyClient(api_key=os.getenv('TAVILY_API_KEY'))

def tavily_search(query: str) -> str:
    results = tavily.search(query=query, max_results=3, search_depth='basic')
    output = []
    for r in results['results']:
        output.append(f"Title: {r['title']}\nURL: {r['url']}\nContent: {r['content'][:500]}")
    return '\n\n'.join(output)

web_search_tool = Tool(
    name='web_search',
    func=tavily_search,
    description='Search the web for current information. Input: a search query string. Returns top results with title, URL, and content.'
)

Kalite Kontrolü için Alan Adı Filtreleme

Tüm arama sonuçları güvenilir değildir. Alan adı filtreleme, aramaları güvenilir kaynaklarla (araştırma için) sınırlandırmanıza veya istenmeyen sorgular için spam içeriği yoğun alan adlarını dışlamanıza olanak tanır.

TRUSTED_DOMAINS = {
    'medical':  ['nih.gov', 'who.int', 'mayoclinic.org', 'pubmed.ncbi.nlm.nih.gov'],
    'legal':    ['law.cornell.edu', 'supreme.justia.com', 'congress.gov'],
    'tech':     ['docs.python.org', 'developer.mozilla.org', 'stackoverflow.com'],
    'finance':  ['sec.gov', 'federalreserve.gov', 'bloomberg.com']
}

SPAM_DOMAINS = ['pinterest.com', 'quora.com', 'answers.yahoo.com', 'wikihow.com']

def domain_aware_search(query, domain_category=None):
    kwargs = {'query': query, 'max_results': 5, 'exclude_domains': SPAM_DOMAINS}
    if domain_category and domain_category in TRUSTED_DOMAINS:
        kwargs['include_domains'] = TRUSTED_DOMAINS[domain_category]
    return client.search(**kwargs)

Arama Hatalarını ve Hız Sınırlarını Ele Alma

Hem Tavily'nin hem de SerpApi'nin hız sınırları vardır. Üstel beklemeyle yeniden deneme mantığı uygulayın ve aramanın hiç sonuç döndürmediği durumu düzgün bir şekilde ele alın.

import time

def robust_search(query, max_retries=3):
    for attempt in range(max_retries):
        try:
            results = client.search(query=query, max_results=5)
            if results and results.get('results'):
                return results['results']
            print(f'No results for: {query}')
            return []
        except Exception as e:
            if '429' in str(e) or 'rate' in str(e).lower():
                wait = 2 ** attempt  # 1s, 2s, 4s
                print(f'Rate limited. Waiting {wait}s...')
                time.sleep(wait)
            else:
                print(f'Search error: {e}')
                return []
    return []

Sonuç Özeti Uzunluğunu Normalleştirme

Sonuç özetlerinin uzunlukları büyük farklılık gösterir: bazıları 50 karakter, bazıları ise 2000 karakter olabilir. Özet uzunluğunu normalleştirmek, her kaynağın LLM bağlamında eşit şekilde temsil edilmesini sağlar.

MAX_SNIPPET_CHARS = 600
MIN_SNIPPET_CHARS = 100

def normalize_snippets(results):
    normalized = []
    for r in results:
        content = r.get('content') or r.get('snippet', '')
        # Truncate long snippets at sentence boundary
        if len(content) > MAX_SNIPPET_CHARS:
            # Find last sentence end before limit
            cutoff = content.rfind('. ', 0, MAX_SNIPPET_CHARS)
            content = content[:cutoff + 1] if cutoff > 0 else content[:MAX_SNIPPET_CHARS]
        # Skip very short snippets
        if len(content) < MIN_SNIPPET_CHARS:
            continue
        normalized.append({**r, 'content': content})
    return normalized

if __name__ == '__main__':
    demo_results = [
        {'content': 'Short.'},
        {'content': 'A' * 200 + '. ' + 'B' * 500},
    ]
    for r in normalize_snippets(demo_results):
        print(f"Length {len(r['content'])}: {r['content'][:60]}...")

Bilgi Kontrolü

Yapay zekâ aracıları için Tavily'nin genel bir web veri çekme yaklaşımına göre temel avantajı nedir?

Özet: Aracı Araması için Tavily ve SerpApi

Web arama API'leri, aracılara eğitim bilgilerinin kesim tarihinin ötesindeki güncel bilgilere erişim sağlar. Tavily, temiz içerik çıkarma özelliğiyle yapay zekâ aracıları için özel olarak tasarlanmıştır; SerpApi ise öne çıkan parçalar ve bilgi panelleri dahil daha zengin yapılandırılmış Google verileri sunar.

Temel uygulamalar: kalite kontrolü için alan adı filtreleme kullanın, zamana duyarlı sorgular için güncellik filtreleri uygulayın, sonuç özeti uzunluklarını normalleştirin ve hız sınırlarını ele almak için beklemeli yeniden deneme mantığı uygulayın.

Sıkça Sorulan Sorular

“Aracı Araması İçin Tavily ve SerpAPI” dersi ücretsiz mi?

Evet — “Aracı Araması İçin Tavily ve SerpAPI” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Aracı Araması İçin Tavily ve SerpAPI” dersinde ne öğreneceğim?

Web araması araçları için API kurulumu, sorgu oluşturma ve sonuç ayrıştırma. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Aracı Araması İçin Tavily ve SerpAPI” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Aracı Araması İçin Tavily ve SerpAPI
  2. Arama Sonuçlarını Sıralama ve Filtreleme
  3. Derin Araştırma Döngüsü Kalıbı
  4. Web Aramasını RAG ile Birleştirme
← AI Agents Sayfasına Dön