0Pricing
AI Agents · Lektion

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 dict

Header 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 done

POST-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 requests für einfache synchrone Abrufe
  • Verwenden Sie httpx.AsyncClient für nicht blockierende asynchrone Anfragen
  • Setzen Sie immer timeout= und rufen Sie raise_for_status() auf
  • Verwenden Sie Sessions oder Clients für mehrere Aufrufe an denselben Host wieder
  • Verwenden Sie je nach Antworttyp .json(), .text oder .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

  1. HTTP-Clients für Agenten: httpx und requests
  2. HTML mit BeautifulSoup parsen
  3. Paginierung und dynamische Inhalte verarbeiten
  4. Rücksichtsvolle Scraping-Praktiken
← Zurück zu AI Agents