HTTP-Clients für Agenten: httpx und requests
Synchrone und asynchrone HTTP-Requests, Sitzungsverwaltung und Header.
HTTP-Clients für Agenten: httpx und requests 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 HTTP-Clients für Agents wichtig sind
KI-Agents müssen häufig Daten aus externen Quellen abrufen: aus APIs, Websites und Diensten. Ein zuverlässiger HTTP-Client ist ein zentrales Werkzeug im Repertoire jedes Agents.
Python bietet zwei beliebte HTTP-Bibliotheken: requests (synchron, unkompliziert) und httpx (unterstützt sowohl synchrone als auch asynchrone Verarbeitung). Für die Entwicklung effizienter Agents ist es entscheidend zu verstehen, wann welche Bibliothek eingesetzt wird.
Grundlegende GET-Anfrage mit requests
Mit der Bibliothek requests lassen sich einfache HTTP-Aufrufe problemlos ausführen. Verwenden Sie requests.get(url), um eine Ressource abzurufen und die Antwort zu untersuchen.
Prüfen Sie immer den Statuscode, bevor Sie den Antworttext verwenden, damit Fehler nicht unbemerkt bleiben.
import requests
url = 'https://api.example.com/data'
response = requests.get(url)
print(response.status_code) # 200
print(response.text) # raw string body
print(response.json()) # parsed JSON dictHeader und Timeouts hinzufügen
Die meisten APIs erfordern Authentifizierungs-Header. Mit dem Parameter headers= können Sie ein Dictionary mit Headern übergeben. Setzen Sie immer einen timeout=, damit Ihr Agent bei einem langsamen Server nicht unbegrenzt hängen bleibt.
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json'
}
response = requests.get(
'https://api.example.com/items',
headers=headers,
timeout=10 # seconds
)
data = response.json()
print(data)raise_for_status() — Bei Fehlern sofort abbrechen
response.raise_for_status() löst bei Statuscodes 4xx und 5xx einen HTTPError aus. Ohne diesen Aufruf wird eine 404- oder 500-Antwort stillschweigend als Erfolg behandelt.
Dies ist eine bewährte Vorgehensweise bei Agents: Brechen Sie mit einer eindeutigen Fehlermeldung ab, damit der Agent weiß, dass er es erneut versuchen oder einen Fehler melden muss.
import requests
try:
response = requests.get('https://api.example.com/missing', timeout=10)
response.raise_for_status() # raises if status >= 400
data = response.json()
except requests.HTTPError as e:
print(f'HTTP error: {e}')
except requests.RequestException as e:
print(f'Network error: {e}')Einführung in httpx
httpx ist ein moderner HTTP-Client mit derselben API wie requests und zusätzlicher Unterstützung für asynchrone Verarbeitung. Außerdem erzwingt er standardmäßig Timeouts, wodurch er für Agents in Produktionsumgebungen sicherer ist.
Installieren Sie ihn mit pip install httpx. Die synchrone Verwendung sieht fast genauso aus wie bei requests.
import httpx
response = httpx.get(
'https://api.example.com/data',
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=10.0
)
response.raise_for_status()
data = response.json()
print(data)Asynchrones HTTP mit httpx.AsyncClient
Wenn Ihr Agent in einem asynchronen Kontext ausgeführt wird (z. B. mit FastAPI oder asyncio), verwenden Sie httpx.AsyncClient, damit die Ereignisschleife nicht blockiert wird. Verwenden Sie async with, um sicherzustellen, dass die Verbindung ordnungsgemäß geschlossen wird.
import httpx
import asyncio
async def fetch_data(url: str) -> dict:
async with httpx.AsyncClient(timeout=10.0) as client:
response = await client.get(
url,
headers={'Authorization': 'Bearer YOUR_KEY'}
)
response.raise_for_status()
return response.json()
# result = asyncio.run(fetch_data('https://api.example.com/data'))Mehrere asynchrone Anfragen parallel stellen
Ein großer Vorteil von asynchronem HTTP ist, mehrere URLs gleichzeitig mit asyncio.gather() abzurufen. Dadurch können Agents, die vor ihrer Antwort Daten von mehreren Endpunkten benötigen, erheblich schneller werden.
import httpx
import asyncio
async def fetch_all(urls: list) -> list:
async with httpx.AsyncClient(timeout=10.0) as client:
tasks = [client.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
return [r.json() for r in responses]
urls = [
'https://api.example.com/item/1',
'https://api.example.com/item/2',
'https://api.example.com/item/3'
]
# results = asyncio.run(fetch_all(urls))Sessions wiederverwenden und Connection Pooling nutzen
Für jede Anfrage eine neue HTTP-Verbindung zu erstellen, ist langsam. Beide Bibliotheken unterstützen Connection Pooling: requests.Session und httpx.Client verwenden TCP-Verbindungen wieder und teilen Header sowie Cookies über mehrere Anfragen hinweg.
Dies ist besonders nützlich für Agents, die viele Aufrufe an dieselbe API senden.
import httpx
# Create once, reuse for many requests
client = httpx.Client(
base_url='https://api.example.com',
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=10.0
)
response1 = client.get('/users')
response2 = client.get('/items')
response3 = client.get('/orders')
client.close() # always close when donePOST-Anfragen mit JSON-Body senden
Agents müssen häufig Daten senden und nicht nur lesen. Verwenden Sie den Parameter json=, um ein Python-Dictionary automatisch zu serialisieren und den richtigen Content-Type-Header zu setzen.
import httpx
payload = {
'query': 'latest AI news',
'max_results': 5,
'language': 'en'
}
response = httpx.post(
'https://api.example.com/search',
json=payload,
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=15.0
)
response.raise_for_status()
results = response.json()
print(results['items'])Die Antwort analysieren: text, json und content
Das Antwortobjekt besitzt drei wichtige Eigenschaften für den Inhalt:
.text— dekodierter String (HTML, XML, Klartext).json()— wandelt JSON in ein Python-Dictionary oder eine Python-Liste um.content— rohe Bytes (für Bilder oder Binärdateien)
Verwenden Sie je nach Inhaltstyp der API die jeweils passende Eigenschaft.
import httpx
response = httpx.get('https://api.example.com/report', timeout=10.0)
# For JSON APIs
data = response.json() # dict or list
# For HTML or plain text
html = response.text # str
# For binary files
image_bytes = response.content # bytes
print(type(data), type(html), type(image_bytes))Alles zusammenführen: Ein HTTP-Abruftool für Agents
Hier ist eine vollständige, wiederverwendbare Abruffunktion, die ein Agent als Tool aufrufen kann. Sie behandelt Fehler auf geeignete Weise, protokolliert die Anfrage und gibt strukturierte Daten zurück.
Dieses Muster ist eine solide Grundlage für jedes Agent-Tool zum Abrufen von Webinhalten.
import httpx
import logging
logger = logging.getLogger(__name__)
def agent_fetch(url: str, headers: dict = None) -> dict:
try:
response = httpx.get(
url,
headers=headers or {},
timeout=10.0
)
response.raise_for_status()
logger.info(f'Fetched {url} -> {response.status_code}')
return {'success': True, 'data': response.json()}
except httpx.HTTPStatusError as e:
return {'success': False, 'error': str(e)}
except httpx.RequestError as e:
return {'success': False, 'error': f'Network error: {e}'}Wissenscheck: HTTP-Clients
Testen Sie Ihr Verständnis von HTTP-Clients für Agents.
Zusammenfassung: HTTP-Clients für Agents
In dieser Lektion haben Sie gelernt, wie Sie Agents mit zuverlässigen Funktionen zum Abrufen von HTTP-Inhalten ausstatten:
- Verwenden Sie
requestsfür einfache synchrone Abrufe - Verwenden Sie
httpx.AsyncClientfür nicht blockierende asynchrone Anfragen - Setzen Sie immer
timeout=und rufen Sieraise_for_status()auf - Verwenden Sie Sessions oder Clients für mehrere Aufrufe an denselben Host wieder
- Verwenden Sie je nach Antworttyp
.json(),.textoder.content
Ein gut geschriebenes Abruftool ist das Bindeglied zwischen Ihrem Agent und dem Web.
Häufig gestellte Fragen
Ist die Lektion „HTTP-Clients für Agenten: httpx und requests“ kostenlos?
Ja — der vollständige Text von „HTTP-Clients für Agenten: httpx und requests“ 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 „HTTP-Clients für Agenten: httpx und requests“?
Synchrone und asynchrone HTTP-Requests, Sitzungsverwaltung und Header. 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 „HTTP-Clients für Agenten: httpx und requests“?
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
- HTTP-Clients für Agenten: httpx und requests
- HTML mit BeautifulSoup parsen
- Paginierung und dynamische Inhalte verarbeiten
- Rücksichtsvolle Scraping-Praktiken