0Pricing
AI Agents · Lektion

Tavily und SerpAPI für die Agentensuche

API-Einrichtung, Query-Erstellung und Ergebnisverarbeitung für Websuch-Tools.

Tavily und SerpAPI für die Agentensuche ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Warum Agenten eine Websuche benötigen

LLMs haben einen Wissensstand mit einem Stichtag. Bei Fragen zu aktuellen Ereignissen, Live-Preisen, aktuellen Nachrichten oder sich schnell verändernden Themen sind die Trainingsdaten des Modells veraltet.

Websuchtools wie Tavily und SerpApi geben Agenten Echtzeitzugriff auf das Internet und schließen damit die Lücke zwischen statischen Trainingsdaten und der aktuellen Realität.

Tavily: speziell für KI-Agenten entwickelt

Tavily ist eine Such-API, die speziell für KI-Agenten entwickelt wurde. Anders als beim allgemeinen Web-Scraping liefert sie saubere, strukturierte Ergebnisse mit bereits extrahierten Inhalten – HTML-Parsing ist nicht erforderlich.

Installieren Sie es mit pip install tavily-python. Einen API-Schlüssel erhalten Sie unter tavily.com.

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-Suchparameter

Tavily bietet mehrere Parameter zur Steuerung des Suchverhaltens. Für Agenten besonders nützlich sind max_results, search_depth und include_domains / exclude_domains.

# 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']
)

Struktur eines Tavily-Ergebnisses

Jedes Tavily-Ergebnis enthält: title, url, content (extrahierter Text), score (Relevanz) und optional published_date. Das Feld content enthält sauberen Text ohne HTML-Tags.

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: Programmatischer Zugriff auf die Google-Suche

SerpApi bietet strukturierten Zugriff auf Google, Bing, YouTube und andere Suchmaschinen. Die API liefert umfangreiche Daten, darunter organische Ergebnisse, Knowledge Panels, Featured Snippets und Einkaufsergebnisse.

Installieren Sie es mit pip install google-search-results.

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()

Struktur eines SerpApi-Ergebnisses

SerpApi liefert umfangreichere strukturierte Daten als Tavily. Wichtige Felder in organic_results sind: title, link, snippet und position. Featured Snippets erscheinen separat unter answer_box.

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']}")

Optionen für Aktualität und Datumsfilter

Bei zeitkritischen Suchanfragen können Sie die Ergebnisse nach Veröffentlichungsdatum filtern. Tavily unterstützt den Parameter days, SerpApi den Parameter tbs für die zeitbasierte Suche.

# 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()

Ein Suchtool für LangChain entwickeln

Um Tavily oder SerpApi in einem LangChain-Agenten zu verwenden, verpacken Sie die Suchfunktion als Tool. Der Agent kann es dann wie jedes andere Tool auf Grundlage der von Ihnen bereitgestellten Beschreibung aufrufen.

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.'
)

Domainfilterung zur Qualitätskontrolle

Nicht alle Suchergebnisse sind zuverlässig. Mit der Domainfilterung können Sie Suchvorgänge auf vertrauenswürdige Quellen beschränken, etwa für Recherchen, oder bei allgemeinen Suchanfragen stark von Spam betroffene Domains ausschließen.

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)

Umgang mit Suchfehlern und Rate-Limits

Sowohl Tavily als auch SerpApi haben Rate-Limits. Implementieren Sie eine Wiederholungslogik mit exponentiellem Backoff und behandeln Sie den Fall, dass die Suche keine Ergebnisse liefert, ordnungsgemäß.

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 []

Normalisierung der Snippet-Länge

Die Länge von Ergebnis-Snippets variiert stark: Manche sind 50 Zeichen lang, andere 2000 Zeichen. Durch die Normalisierung der Snippet-Länge erhält jede Quelle im LLM-Kontext eine gleichmäßige Darstellung.

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]}...")

Wissensüberprüfung

Was ist der entscheidende Vorteil von Tavily gegenüber einem allgemeinen Web-Scraping-Ansatz für KI-Agenten?

Zusammenfassung: Tavily und SerpApi für die Agentensuche

Websuch-APIs geben Agenten Zugriff auf aktuelle Informationen, die über ihren Trainingsstichtag hinausgehen. Tavily wurde speziell für KI-Agenten entwickelt und extrahiert Inhalte sauber; SerpApi liefert umfangreichere strukturierte Google-Daten, einschließlich Featured Snippets und Knowledge Panels.

Wichtige Vorgehensweisen: Verwenden Sie Domainfilterung zur Qualitätskontrolle, wenden Sie bei zeitkritischen Suchanfragen Aktualitätsfilter an, normalisieren Sie die Snippet-Längen und implementieren Sie zur Behandlung von Rate-Limits eine Wiederholungslogik mit Backoff.

Häufig gestellte Fragen

Ist die Lektion „Tavily und SerpAPI für die Agentensuche“ kostenlos?

Ja — der vollständige Text von „Tavily und SerpAPI für die Agentensuche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tavily und SerpAPI für die Agentensuche“?

API-Einrichtung, Query-Erstellung und Ergebnisverarbeitung für Websuch-Tools. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Agents zu starten?

Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Tavily und SerpAPI für die Agentensuche“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?

Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Tavily und SerpAPI für die Agentensuche
  2. Suchergebnisse bewerten und filtern
  3. Muster für Deep-Research-Schleifen
  4. Websuche mit RAG kombinieren
← Zurück zu AI Agents