Klien HTTP untuk Agen: httpx dan requests
Permintaan HTTP sinkron dan asinkron, pengelolaan sesi, serta header.
Klien HTTP untuk Agen: httpx dan requests adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Mengapa Klien HTTP Penting bagi Agen
Agen AI sering perlu mengambil data dari sumber eksternal: API, situs web, dan layanan. Klien HTTP yang andal adalah alat inti dalam perangkat agen mana pun.
Python memiliki dua pustaka HTTP yang populer: requests (sinkron, sederhana) dan httpx (mendukung sinkron dan asinkron). Memahami kapan harus menggunakan masing-masing pustaka sangat penting untuk membangun agen yang efisien.
Permintaan GET Dasar dengan requests
Pustaka requests memudahkan pemanggilan HTTP sederhana. Gunakan requests.get(url) untuk mengambil suatu sumber daya dan memeriksa responsnya.
Selalu periksa kode status sebelum menggunakan isi respons agar kegagalan tidak terjadi secara diam-diam.
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 dictMenambahkan Header dan Batas Waktu
Sebagian besar API memerlukan header autentikasi. Parameter headers= memungkinkan Anda meneruskan kamus header. Selalu tetapkan timeout= agar agen Anda tidak menunggu tanpa batas pada server yang lambat.
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() — Gagal Cepat saat Terjadi Kesalahan
response.raise_for_status() memunculkan HTTPError untuk kode status 4xx dan 5xx. Tanpanya, respons 404 atau 500 akan diperlakukan secara diam-diam sebagai keberhasilan.
Ini adalah praktik terbaik dalam agen: gagalkan proses secara jelas agar agen mengetahui bahwa ia harus mencoba lagi atau melaporkan kesalahan.
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}')Pengenalan httpx
httpx adalah klien HTTP modern dengan API yang sama seperti requests, tetapi memiliki dukungan asinkron tambahan. Pustaka ini juga menerapkan batas waktu secara bawaan, sehingga lebih aman untuk agen produksi.
Instal dengan pip install httpx. Penggunaan sinkron terlihat hampir sama dengan 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)HTTP Asinkron dengan httpx.AsyncClient
Saat agen Anda berjalan dalam konteks asinkron (misalnya, dengan FastAPI atau asyncio), gunakan httpx.AsyncClient agar tidak memblokir perulangan peristiwa. Bungkus dengan async with untuk memastikan koneksi ditutup dengan benar.
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'))Membuat Beberapa Permintaan Asinkron Secara Bersamaan
Salah satu keunggulan utama HTTP asinkron adalah kemampuan mengambil beberapa URL sekaligus dengan asyncio.gather(). Hal ini dapat mempercepat agen secara signifikan ketika agen perlu mendapatkan data dari beberapa titik akhir sebelum merespons.
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))Penggunaan Ulang Sesi dan Pengumpulan Koneksi
Membuat koneksi HTTP baru untuk setiap permintaan berlangsung lambat. Kedua pustaka mendukung pengumpulan koneksi: requests.Session dan httpx.Client menggunakan kembali koneksi TCP serta berbagi header dan cookie di antara berbagai permintaan.
Hal ini sangat berguna bagi agen yang melakukan banyak pemanggilan ke API yang sama.
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 doneMengirim Permintaan POST dengan Isi JSON
Agen sering perlu mengirim data, bukan hanya membacanya. Gunakan parameter json= untuk secara otomatis membuat serialisasi dict Python dan menetapkan header Content-Type yang benar.
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'])Mengurai Respons: text, json, dan content
Objek respons memiliki tiga properti isi utama:
.text— string yang telah didekode (HTML, XML, teks biasa).json()— mengurai JSON menjadi dict/list Python.content— byte mentah (untuk gambar atau berkas biner)
Gunakan properti yang sesuai berdasarkan jenis isi API.
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))Menyatukan Semuanya: Alat Pengambilan HTTP Agen
Berikut fungsi pengambilan yang lengkap dan dapat digunakan kembali, yang dapat dipanggil agen sebagai alat. Fungsi ini menangani kesalahan dengan baik, mencatat permintaan, dan mengembalikan data terstruktur.
Pola ini merupakan dasar yang kuat untuk alat agen apa pun yang mengambil data dari web.
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}'}Pemeriksaan Pengetahuan: Klien HTTP
Uji pemahaman Anda tentang klien HTTP untuk agen.
Ringkasan: Klien HTTP untuk Agen
Dalam pelajaran ini, Anda telah mempelajari cara membekali agen dengan kemampuan pengambilan HTTP yang andal:
- Gunakan
requestsuntuk pengambilan sinkron yang sederhana - Gunakan
httpx.AsyncClientuntuk permintaan asinkron tanpa pemblokiran - Selalu tetapkan
timeout=dan panggilraise_for_status() - Gunakan kembali sesi/klien untuk beberapa pemanggilan ke host yang sama
- Gunakan
.json(),.text, atau.contentberdasarkan jenis respons
Alat pengambilan yang ditulis dengan baik adalah penghubung antara agen Anda dan web.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Klien HTTP untuk Agen: httpx dan requests” gratis?
Ya — teks lengkap “Klien HTTP untuk Agen: httpx dan requests” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Klien HTTP untuk Agen: httpx dan requests”?
Permintaan HTTP sinkron dan asinkron, pengelolaan sesi, serta header. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Klien HTTP untuk Agen: httpx dan requests” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Klien HTTP untuk Agen: httpx dan requests
- Mengurai HTML dengan BeautifulSoup
- Menangani Paginasi dan Konten Dinamis
- Praktik Scraping yang Bertanggung Jawab