Die Entwicklung von KI-Agenten wird von Tag zu Tag einfacher. In diesem Beitrag gehen wir den Prozess der Verwendung des neuen BrightDataSERP-Tools von LangChain durch. Falls Sie mit dem Akronym nicht vertraut sind: SERP steht für “Search Engine Results Page”.
Dieses Tutorial ist anfängerfreundlich. Alles, was Sie brauchen, ist ein grundlegendes Verständnis von Python. Wenn Sie diesen Leitfaden beendet haben, können Sie die folgenden Fähigkeiten zu Ihrem Werkzeugkasten hinzufügen.
- Durchführen einer einfachen Suche mit BrightDataSERP
- Passen Sie Ihre SERP-Ausgabe an
- Saubere Ausgabe für LLM-freundliche Nutzung
- Erstellen eines KI-Agenten mit Suchfunktionen
Intro: Die Grenzen des Wissens über AI
Wenn Sie mit den LLMs vertraut sind, wissen Sie bereits, dass ihr Wissen statisch ist. Wenn sie für die Öffentlichkeit freigegeben werden, sind sie mit der Ausbildung und der Feinabstimmung fertig – es kann kein weiteres Wissen hinzugefügt werden.
Bevor OpenAI die Suchfunktionen hinzufügte, hatte ChatGPT ein Wissensabschneidedatum. LLMs haben immer noch Grenzdaten, basierend auf ihrer letzten Feinabstimmung. Die Modelle sind jedoch in der Lage, Zero-Shot-Inferenz zu verwenden. Mehr über den gesamten Trainingsprozess können Sie hier erfahren.
KI-Modelle werden mit einer statischen Wissensbasis eingesetzt. Durch Zero-Shot-Inferenz können die Modelle neue Daten sinnvoll verarbeiten, aber sie behalten die Informationen nicht dauerhaft bei.
Wie LangChain Beschränkungen angeht
LangChain ermöglicht es uns, Werkzeuge zu erstellen und sie mit verschiedenen LLMs zu verbinden. Wenn Sie Python-Funktionen schreiben können, können Sie LLMs diese Funktionen aufrufen lassen – nach ihrem eigenen Ermessen. Sie geben dem LLM Zugriff auf das Werkzeug. Es macht alles andere. Wenn Sie ihm eine Frage stellen, die er mit Vortraining beantworten kann, wird er das Tool nicht benutzen. Wenn Sie ihm eine Frage stellen, die es nicht kennt, wird es seine Werkzeuge benutzen, um zu versuchen, die Antwort zu finden.
LangChain bietet sogar vorgefertigte Werkzeuge für alle folgenden Anforderungen.
- Suche
- Code
- Produktivität
- Web-Browsing
- Datenbanken
- Finanzen
Die vollständige Liste der integrierten Tools von LangChain können Sie hier einsehen. Wir haben noch bessere Neuigkeiten. Bright Data ist eines von ihnen!
Verwendung von LangChain mit Bright Data
Nachdem wir nun die Funktionsweise erläutert haben, wollen wir uns ansehen, wie man LangChain mit Bright Data verwendet. Wir gehen davon aus, dass Sie über grundlegende Kenntnisse in Python verfügen. Wir gehen durch, wie Sie Ihre API-Schlüssel von OpenAI und Bright Data erhalten. Bevor Sie fortfahren, sollten Sie sich zunächst unseren Leitfaden zum Web-Scraping mit LangChain und Bright Data ansehen.
Voraussetzungen
Zunächst einmal müssen Sie die Bright Data-Tools von LangChain installieren. Der Pip-Install-Befehl
unten tut genau das.
pip install langchain-brightdata
Als Nächstes benötigen Sie einen Bright Data-API-Schlüssel und eine SERP-Instanz namens serp
. Sie können sich hier für eine kostenlose Testversion unserer SERP-API anmelden. Stellen Sie sicher, dass Ihre Zone den Namen serp
trägt. serp1
funktioniert nicht. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche “Hinzufügen” und schließen Sie die Einrichtung des Tools ab.
Als Nächstes können Sie Ihren API-Schlüssel über das Dashboard Ihrer neuen SERP-Zone abrufen.
Um Ihren OpenAI-Schlüssel zu erhalten, öffnen Sie die API-Schlüssel-Seite und klicken Sie auf die Schaltfläche “Neuen geheimen Schlüssel erstellen”.
Ein grundlegendes Beispiel
Wir beginnen mit einem einfachen Beispiel dafür, wie das Tool funktioniert. Tauschen Sie den API-Schlüssel unten gegen Ihren eigenen aus. Die BrightDataSERP-Klasse
übernimmt hier die Hauptarbeit. Wir legen nur die Konfiguration fest und geben die Ergebnisse aus. Normalerweise brauchen Sie .encode("utf-8")
nicht, aber wir hatten einige Druckprobleme mit Windows, die dadurch behoben wurden.
from langchain_brightdata import BrightDataSERP
api_key = "your-bright-data-api-key"
tool = BrightDataSERP(bright_data_api_key=api_key)
results = tool.invoke("Latest AI News")
print(results.encode("utf-8"))
Hier ist ein Ausschnitt aus einer Beispielausgabe. Wenn Sie dies (oder etwas Ähnliches) sehen, sind Sie auf dem richtigen Weg.
https://api.brightdata.com/request {'zone': 'serp', 'url': 'https://www.google.com/search?q=Latest%20AI%20News&gl=us&hl=en&num=10', 'format': 'raw'} {'Authorization': 'Bearer your-api-key', 'Content-Type': 'application/json'}
b'<!doctype html><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="en-MX"><head><meta charset="UTF-8"><meta content="origin" name="referrer"><link href="//www.gstatic.com/images/branding/searchlogo/ico/favicon.ico" rel="icon"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Latest AI News - Google Search</title><script nonce="IBYZiM7epIs5U67-92qXVg">window._hst=Date.now();</script><script nonce="IBYZiM7epIs5U67-92qXVg">
...
Erweiterte Verwendung
Im folgenden Beispiel verwenden wir kwargs, um eine benutzerdefinierte Konfiguration mit BrightDataSERP
festzulegen. Die vollständige Dokumentation zur Anpassung können Sie hier einsehen. Wir legen den Suchtyp auf "Shop"
fest, um relevantere Shopping-Ergebnisse zu erhalten.
from langchain_brightdata import BrightDataSERP
api_key = "your-bright-data-api-key"
#initialize the tool
serp_tool = BrightDataSERP(
bright_data_api_key=api_key,
search_engine="google",
country="us",
language="en",
results_count=10,
parse_results=True
)
#perform the search
results = serp_tool.invoke(
{
"query": "best electric vehicles",
"country": "us",
"language": "en",
"search_type": "shop",
"device_type": "mobile",
"results_count": 15,
}
)
print(results)
Sie können jede der folgenden Optionen anpassen, um Ihre Suchergebnisse zu verfeinern.
Abfrage
Land
Sprache
such_art
Gerät_Typ
Ergebnis_Zahl
Erstellen eines KI-Agenten mit Bright Data und OpenAI
Nachdem Sie nun ein grundlegendes Verständnis für die Verwendung von BrightDataSERP
haben, wollen wir uns ansehen, wie ein echter KI-Agent es verwendet. Wir gehen die Codeteile durch und zeigen dann, wie das Ganze funktioniert.
Die Einzelteile
Bevor wir anfangen, müssen Sie noch ein paar Dinge installieren.
Installieren Sie LangChain selbst.
pip install langchain
Installieren Sie OpenAI-Unterstützung für LangChain.
pip install langchain-openai
Installieren Sie LangGraph, um Agenten zu erstellen.
pip install langgraph
Im Zeitalter der künstlichen Intelligenz ist das vielleicht ein kleiner Schock, aber wir werden auch BeautifulSoup installieren. Sie werden noch früh genug sehen, warum.
pip install beautifulsoup4
Eine Suchfunktion erstellen
Die folgende Funktion ruft unsere Suchergebnisse ab – ähnlich wie das Beispiel von vorhin. Nachdem wir diese Ergebnisse erhalten haben, verwenden wir BeautifulSoup, um den Text aus ihnen zu ziehen. Jetzt werden wir viel weniger Token verwenden, wenn wir die Ergebnisse an unseren LLM übergeben. Alles, was er sieht, ist der Text der Website. Wir behalten \n
(Zeilenumbruch) Zeichen, damit der Agent das Seitenlayout besser verstehen kann.
Sobald wir den Text extrahiert haben, geben wir ihn zurück.
#create a function to return only the text from search results
def get_cleaned_search_results(query):
#initialize the tool
serp_tool = BrightDataSERP(
bright_data_api_key=bright_data_api_key,
search_engine="google",
country="us",
language="en",
results_count=5,
parse_results=False,
)
#get the results
results = serp_tool.invoke({
"query": query,
"country": "us",
"language": "en",
"results_count": 5,
})
#parse the text the old fashioned way----save on input tokens
soup = BeautifulSoup(results, "html.parser")
#return the results but keep the newlines, this lets the model see the layout without all the extra code
return soup.get_text(separator="\n")
Die Funktion in ein Werkzeug verwandeln
Jetzt verwenden wir die Tool-Klasse
von LangChain, um die Funktion zu verpacken. Dies ermöglicht es unserem Agenten, sie als Werkzeug aufzurufen. Wie Sie unten sehen, ist es ziemlich einfach. Wir geben dem Tool einen Namen und eine Beschreibung. Außerdem verweisen wir das Tool mit dem Argument func
auf eine Funktion.
#turn the function into a langchain tool
cleaned_search_tool = Tool.from_function(
name="CleanedBrightDataSearch",
func=get_cleaned_search_results,
description=(
"Use this tool to retrieve up-to-date Google search results when answering "
"questions that require recent information, product details, or current events. "
"Pass in the user's natural-language query."
),
)
Den Agenten erstellen
Der folgende Code erstellt unseren Agenten. ChatOpenAI
erstellt eine LLM-Instanz. Wir übergeben unseren LLM und unser Tool an create_react_agent()
, um den eigentlichen Agenten zu erstellen.
#start the llm
llm = ChatOpenAI(
model="gpt-4o",
openai_api_key=openai_api_key,
streaming=False,
#set the token limit arbitrarily, we used 512 because it's a small task
max_tokens=512
)
#give the llm access to the tool
agent = create_react_agent(llm, tools=[cleaned_search_tool])
Eine langweilige, aber funktionale Benutzeroberfläche
Jedes Programm braucht eine Laufzeit, egal wie primitiv es ist. Hier erstellen wir nur ein einfaches Terminal-Setup für den Benutzer, um mit dem Agenten zu interagieren. Der Benutzer gibt eine Eingabeaufforderung ein. Die Eingabeaufforderung wird an Nachrichten weitergegeben, und dann streamen wir die Ausgabe des Agenten.
#the user can ask the agent anything--like the chatgpt webapp
user_prompt = input("Ask me anything: ")
messages = [{"role": "user", "content": user_prompt}]
#stream the model output, the model should perform searches when necessary
for step in agent.stream({"messages": messages}, stream_mode="values"):
step["messages"][-1].pretty_print()
Alles zusammenfügen
Der vollständige Kodex
Hier ist unser vollständiges Code-Beispiel.
from langchain_openai import ChatOpenAI
from langchain_brightdata import BrightDataSERP
from langgraph.prebuilt import create_react_agent
from langchain.tools import Tool
from bs4 import BeautifulSoup
#put your creds here
openai_api_key = "your-openai-api-key"
bright_data_api_key = "your-bright-data-api-key"
#create a function to return only the text from search results
def get_cleaned_search_results(query):
#initialize the tool
serp_tool = BrightDataSERP(
bright_data_api_key=bright_data_api_key,
search_engine="google",
country="us",
language="en",
results_count=5,
parse_results=False,
)
#get the results
results = serp_tool.invoke({
"query": query,
"country": "us",
"language": "en",
"results_count": 5,
})
#parse the text the old fashioned way----save on input tokens
soup = BeautifulSoup(results, "html.parser")
#return the results but keep the newlines, this lets the model see the layout without all the extra code
return soup.get_text(separator="\n")
#turn the function into a langchain tool
cleaned_search_tool = Tool.from_function(
name="CleanedBrightDataSearch",
func=get_cleaned_search_results,
description=(
"Use this tool to retrieve up-to-date Google search results when answering "
"questions that require recent information, product details, or current events. "
"Pass in the user's natural-language query."
),
)
#start the llm
llm = ChatOpenAI(
model="gpt-4o",
openai_api_key=openai_api_key,
temperature=0.7,
streaming=False,
max_tokens=512
)
#give the llm access to the tool
agent = create_react_agent(llm, tools=[cleaned_search_tool])
#the user can ask the agent anything--like the chatgpt webapp
user_prompt = input("Ask me anything: ")
messages = [{"role": "user", "content": user_prompt}]
#stream the model output, the model should perform searches when necessary
for step in agent.stream({"messages": messages}, stream_mode="values"):
step["messages"][-1].pretty_print()
Was unser Agent sieht
Der Ausschnitt hier ist das, was der Agent sieht. Er enthält unsere Eingabeaufforderung und die Seite, die er zum Referenzieren abruft.
python bd-agent-example.py
Ask me anything: give me the latest spacex news
================================ Human Message =================================
give me the latest spacex news
================================== Ai Message ==================================
Tool Calls:
CleanedBrightDataSearch (call_IKoaponXVrNfVSRTfonU4ewo)
Call ID: call_IKoaponXVrNfVSRTfonU4ewo
Args:
__arg1: latest SpaceX news
https://api.brightdata.com/request {'zone': 'serp', 'url': 'https://www.google.com/search?q=latest%20SpaceX%20news&gl=us&hl=en&num=5', 'format': 'raw'} {'Authorization': 'Bearer d791e32cedf2d9657eaafd7a76b333f67ce5836c89d85691b4d6c07060b07b84', 'Content-Type': 'application/json'}
================================= Tool Message =================================
Name: CleanedBrightDataSearch
latest SpaceX news - Google Search
Please click
here
if you are not redirected within a few seconds.
Accessibility Links
Skip to main content
Accessibility help
Accessibility feedback
Press
/
to jump to the search box
latest SpaceX news
Sign in
Filters and Topics
AI Mode
All
News
Videos
Images
Short videos
Forums
More
About 85,800,000 results
(0.38 seconds)
Search Results
SpaceX - Updates
SpaceX
https://www.spacex.com
› updates
SpaceX
https://www.spacex.com
› updates
As early as this year,
Falcon 9 will launch Dragon's sixth commercial astronaut mission, Fram2
, which will be the first human spaceflight mission to explore ...
Videos
12:03
YouTube
·
GREAT SPACEX
SpaceX's Solution to Launch Starship Again after Test Site ...
YouTube
·
GREAT SPACEX
2 days ago
47:39
YouTube
·
GREAT SPACEX
COPV Destroyed Starship S36, What next? Honda's Hopper ...
YouTube
·
GREAT SPACEX
1 day ago
3:10
YouTube
·
CBS News
Watch: SpaceX Starship explodes, causes massive fiery burst ...
YouTube
·
CBS News
3 days ago
Feedback
View all
Top stories
USA Today
SpaceX Starship exploded again. What's next for Elon Musk's company after latest setback?
3 days ago
Soap Central
Everything to know about Elon Musk's latest SpaceX starship explosion during static fire test in Texas
3 days ago
The Guardian
SpaceX Starship breaks up over Indian Ocean in latest bumpy test
4 weeks ago
CBS News
SpaceX loses contact with its Starship on 9th test flight after last 2 went down in flames
4 weeks ago
More news
Twitter Results
SpaceX (@SpaceX) · X
X (Twitter)
https://x.com/SpaceX
Watch Falcon 9 launch Dragon and Ax-4 to the @Space_Station x.com/i/broadcasts/1YpJ…
2 hours ago
Falcon 9 delivers 27 @Starlink satellites to orbit from Florida
9 hours ago
Deployment of 27 @Starlink satellites confirmed
9 hours ago
Elon Musk promises more risky launches after sixth ...
Space
https://www.space.com
› ... › Private Spaceflight
Space
https://www.space.com
› ... › Private Spaceflight
1 day ago
—
Until
last
year, the FAA allowed
SpaceX
to try up to five Starship launches a year. This month, the figure was increased to 25. A lot can go ...
People also search for
Latest spacex news
nasa
Latest spacex news
live
SpaceX
launch today live
SpaceX
Starship
news
today
SpaceX
Starship launch date
SpaceX
launch tonight
SpaceX
launch today live countdown
SpaceX
recent landing
Page Navigation
1
2
3
4
5
6
7
8
9
10
Next
Footer Links
Google apps
Modell Ausgang
In dem folgenden Ausschnitt hat unser Modell die Überprüfung der Ergebnisse abgeschlossen. Wie Sie sehen können, haben wir eine saubere Zusammenfassung der Suchergebnisse.
================================== Ai Message ==================================
Here are some of the latest updates on SpaceX:
1. **Falcon 9 Launches**: SpaceX's Falcon 9 recently launched 27 Starlink satellites into orbit from Florida. The deployment of these satellites was confirmed about 9 hours ago.
2. **Starship Setbacks**: SpaceX's Starship program has faced some challenges recently. A Starship exploded during a test, which has been a setback for the company. Despite this, Elon Musk has indicated plans for more risky launches following the sixth astronaut mission.
3. **Increased Launch Capacity**: The FAA has increased the number of Starship launches SpaceX is permitted to conduct per year from 5 to 25, allowing for more frequent test launches.
These developments highlight ongoing progress and challenges within SpaceX's operations.
Schlussfolgerung
Die Entwicklung von KI wird immer einfacher. Mit LangChain und Bright Data können Sie einige der besten Suchmaschinen auf dem Markt nutzen – Google, Bing und mehr! Unser Beispiel hier war ziemlich minimalistisch, ein automatisierter Suchassistent.
Sie können dieses Projekt auf die nächste Stufe bringen und versuchen, mehrere Tools zu LangChain hinzuzufügen. Sie wissen jetzt, wie man Tools erstellt, SERP-Ergebnisse trimmt und wie man sie an einen KI-Agenten für eine verbesserte Ausgabe weitergibt. Nehmen Sie Ihre neuen Fähigkeiten und bauen Sie etwas.
LangChain bietet auch Integrationen mit den folgenden Tools.
Bei Bright Data bieten wir Produkte in jeder Form und Größe an, die Ihren Anforderungen an die Datenerfassung entsprechen. Melden Sie sich für eine kostenlose Testversion an und legen Sie noch heute los!