Zum Hauptinhalt springen
Die Olostep LangChain-Integration bietet umfassende Werkzeuge zum Erstellen von KI-Agenten, die Daten von jeder Website suchen, extrahieren, analysieren und strukturieren können. Perfekt für LangChain- und LangGraph-Anwendungen.

Funktionen

Die Integration bietet Zugriff auf alle 5 Olostep API-Funktionen:

Scrapes

Inhalte von jeder einzelnen URL in mehreren Formaten extrahieren (Markdown, HTML, JSON, Text)

Batches

Bis zu 10.000 URLs parallel verarbeiten. Batch-Jobs werden in 5-8 Minuten abgeschlossen

Answers

KI-gesteuerte Websuche mit natürlichen Sprachabfragen und strukturiertem Output

Maps

Alle URLs einer Website für die Analyse der Seitenstruktur extrahieren

Crawls

Autonomes Entdecken und Extrahieren ganzer Websites durch Verfolgen von Links

Installation

pip install langchain-olostep

Einrichtung

Setzen Sie Ihren Olostep API-Schlüssel als Umgebungsvariable:
export OLOSTEP_API_KEY="your_olostep_api_key_here"
Holen Sie sich Ihren API-Schlüssel vom Olostep Dashboard.

Verfügbare Werkzeuge

scrape_website

Inhalte von einer einzelnen URL extrahieren. Unterstützt mehrere Formate und JavaScript-Rendering.
url
string
erforderlich
Website-URL zum Extrahieren (muss http:// oder https:// enthalten)
format
string
Standard:"markdown"
Ausgabeformat: markdown, html, json oder text
country
string
Ländercode für ortsspezifische Inhalte (z.B. “US”, “GB”, “CA”)
wait_before_scraping
integer
Wartezeit in Millisekunden für JavaScript-Rendering (0-10000)
parser
string
Optionaler Parser-ID für spezialisierte Extraktion (z.B. “@olostep/amazon-product”)
from langchain_olostep import scrape_website
import asyncio

# Eine Website extrahieren
content = asyncio.run(scrape_website.ainvoke({
    "url": "https://example.com",
    "format": "markdown"
}))

print(content)

scrape_batch

Mehrere URLs parallel verarbeiten (bis zu 10.000 gleichzeitig).
urls
array
erforderlich
Liste der zu extrahierenden URLs
format
string
Standard:"markdown"
Ausgabeformat für alle URLs: markdown, html, json oder text
country
string
Ländercode für ortsspezifische Inhalte
wait_before_scraping
integer
Wartezeit in Millisekunden für JavaScript-Rendering
parser
string
Optionaler Parser-ID für spezialisierte Extraktion
from langchain_olostep import scrape_batch
import asyncio

# Mehrere URLs extrahieren
result = asyncio.run(scrape_batch.ainvoke({
    "urls": [
        "https://example1.com",
        "https://example2.com",
        "https://example3.com"
    ],
    "format": "markdown"
}))

print(result)
# Gibt zurück: {"batch_id": "batch_xxx", "status": "in_progress", ...}

answer_question

Das Web durchsuchen und KI-gesteuerte Antworten mit Quellen erhalten. Perfekt für Datenanreicherung und Forschung.
task
string
erforderlich
Frage oder Aufgabe, nach der gesucht werden soll
json_schema
object
Optionales JSON-Schema-Diktat/String, das das gewünschte Ausgabeformat beschreibt
from langchain_olostep import answer_question
import asyncio

# Eine einfache Frage stellen
result = asyncio.run(answer_question.ainvoke({
    "task": "What is the capital of France?"
}))

print(result)
# Gibt zurück: {"answer": {"result": "Paris"}, "sources": [...]}

extract_urls

Alle URLs von einer Website für die Analyse der Seitenstruktur extrahieren.
url
string
erforderlich
Website-URL, von der URLs extrahiert werden sollen
search_query
string
Optionale Suchabfrage zum Filtern von URLs
top_n
integer
Begrenzung der Anzahl der zurückgegebenen URLs
include_urls
array
Glob-Muster zum Einschließen (z.B. [“/blog/**”])
exclude_urls
array
Glob-Muster zum Ausschließen (z.B. [“/admin/**”])
from langchain_olostep import extract_urls
import asyncio

# Alle URLs von einer Website abrufen
result = asyncio.run(extract_urls.ainvoke({
    "url": "https://example.com",
    "top_n": 100
}))

print(result)
# Gibt zurück: {"urls": [...], "total_urls": 100, ...}

crawl_website

Autonomes Entdecken und Extrahieren ganzer Websites durch Verfolgen von Links.
start_url
string
erforderlich
Start-URL für den Crawl
max_pages
integer
Standard:"100"
Maximale Anzahl der zu durchsuchenden Seiten
include_urls
array
Glob-Muster zum Einschließen (z.B. [”/**”] für alle)
exclude_urls
array
Glob-Muster zum Ausschließen (z.B. [“/admin/**”])
max_depth
integer
Maximale Tiefe zum Crawlen von der start_url aus
include_external
boolean
Standard:"false"
Externe URLs einbeziehen
from langchain_olostep import crawl_website
import asyncio

# Gesamte Dokumentationsseite durchsuchen
result = asyncio.run(crawl_website.ainvoke({
    "start_url": "https://docs.example.com",
    "max_pages": 100
}))

print(result)
# Gibt zurück: {"crawl_id": "crawl_xxx", "status": "in_progress", ...}

LangChain-Agenten-Integration

Intelligente Agenten erstellen, die das Web durchsuchen und extrahieren können:
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain_olostep import (
    scrape_website,
    answer_question,
    extract_urls
)

# Agent mit Olostep-Werkzeugen erstellen
tools = [scrape_website, answer_question, extract_urls]
llm = ChatOpenAI(model="gpt-4o-mini")

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# Den Agenten verwenden
result = agent.run("""
Research the company at https://company.com:
1. Scrape their about page
2. Search for their latest funding round
3. Extract all their product pages
""")

print(result)

LangGraph-Integration

Komplexe mehrstufige Workflows mit LangGraph erstellen:
from langgraph.graph import StateGraph, END
from langchain_olostep import (
    scrape_website,
    scrape_batch,
    answer_question,
    extract_urls
)
from langchain_openai import ChatOpenAI
import json

def create_research_agent():
    workflow = StateGraph(dict)
    
    def discover_pages(state):
        # Alle URLs von der Zielseite extrahieren
        result = extract_urls.invoke({
            "url": state["target_url"],
            "include_urls": ["/product/**"],
            "top_n": 50
        })
        state["urls"] = json.loads(result)["urls"]
        return state
    
    def scrape_pages(state):
        # Entdeckte Seiten im Batch extrahieren
        result = scrape_batch.invoke({
            "urls": state["urls"],
            "format": "markdown"
        })
        state["batch_id"] = json.loads(result)["batch_id"]
        return state
    
    def answer_questions(state):
        # KI verwenden, um Fragen zu den Daten zu beantworten
        result = answer_question.invoke({
            "task": state["research_question"],
            "json_schema": state["desired_format"]
        })
        state["answer"] = json.loads(result)["answer"]
        return state
    
    workflow.add_node("discover", discover_pages)
    workflow.add_node("scrape", scrape_pages)
    workflow.add_node("analyze", answer_questions)
    
    workflow.set_entry_point("discover")
    workflow.add_edge("discover", "scrape")
    workflow.add_edge("scrape", "analyze")
    workflow.add_edge("analyze", END)
    
    return workflow.compile()

# Den Agenten verwenden
agent = create_research_agent()
result = agent.invoke({
    "target_url": "https://store.com",
    "research_question": "What are the top 5 most expensive products?",
    "desired_format": {
        "products": [{"name": "", "price": "", "url": ""}]
    }
})

Erweiterte Anwendungsfälle

Datenanreicherung

Tabellendaten mit Webinformationen anreichern:
from langchain_olostep import answer_question

companies = ["Stripe", "Shopify", "Square"]

for company in companies:
    result = answer_question.invoke({
        "task": f"Find information about {company}",
        "json_schema": {
            "ceo": "",
            "headquarters": "",
            "employee_count": "",
            "latest_funding": ""
        }
    })
    print(f"{company}: {result}")

E-Commerce-Produkt-Scraping

Produktdaten mit spezialisierten Parsern extrahieren:
from langchain_olostep import scrape_website

# Amazon-Produkt extrahieren
result = scrape_website.invoke({
    "url": "https://www.amazon.com/dp/PRODUCT_ID",
    "parser": "@olostep/amazon-product",
    "format": "json"
})
# Gibt strukturierte Produktdaten zurück: Preis, Titel, Bewertung usw.

SEO-Audit

Gesamte Websites für SEO analysieren:
from langchain_olostep import extract_urls, scrape_batch
import json

# 1. Alle Seiten entdecken
urls_result = extract_urls.invoke({
    "url": "https://yoursite.com",
    "top_n": 1000
})

# 2. Alle Seiten extrahieren
urls = json.loads(urls_result)["urls"]
batch_result = scrape_batch.invoke({
    "urls": urls,
    "format": "html"
})

Dokumentations-Scraping

Dokumentationen durchsuchen und extrahieren:
from langchain_olostep import crawl_website

# Gesamte Dokumentationsseite durchsuchen
result = crawl_website.invoke({
    "start_url": "https://docs.example.com",
    "max_pages": 500,
    "include_urls": ["/docs/**"],
    "exclude_urls": ["/api/**", "/v1/**"]
})

Spezialisierte Parser

Olostep bietet vorgefertigte Parser für beliebte Websites:
  • @olostep/google-search - Google-Suchergebnisse
Verwenden Sie sie mit dem parser-Parameter:
scrape_website.invoke({
    "url": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    "parser": "@olostep/google-search"
})

Fehlerbehandlung

from langchain_core.exceptions import LangChainException

try:
    result = await scrape_website.ainvoke({
        "url": "https://example.com"
    })
except LangChainException as e:
    print(f"Scraping failed: {e}")

Best Practices

Wenn mehr als 3-5 URLs extrahiert werden, verwenden Sie scrape_batch anstelle mehrerer scrape_website-Aufrufe. Die Batch-Verarbeitung ist viel schneller und kostengünstiger.
Für JavaScript-lastige Seiten verwenden Sie den Parameter wait_before_scraping (2000-5000ms ist typisch). Dies stellt sicher, dass dynamische Inhalte vollständig geladen sind.
Für beliebte Websites (Amazon, LinkedIn, Google) verwenden Sie unsere vorgefertigten Parser, um automatisch strukturierte Daten zu erhalten.
Bei der Verwendung von extract_urls oder crawl_website verwenden Sie Glob-Muster, um sich auf relevante Seiten zu konzentrieren und unnötige Verarbeitung zu vermeiden.
Implementieren Sie ein exponentielles Backoff für Rate-Limit-Fehler. Die API behandelt die meisten Rate-Limits intern automatisch.

Support

Verwandte Ressourcen

Scrapes API

Erfahren Sie mehr über den Scrapes-Endpunkt

Batches API

Erfahren Sie mehr über den Batches-Endpunkt

Answers API

Erfahren Sie mehr über den Answers-Endpunkt

Maps API

Erfahren Sie mehr über den Maps-Endpunkt

Crawls API

Erfahren Sie mehr über den Crawls-Endpunkt

Python SDK

Entdecken Sie das Python SDK