0Pricing
AI Agents · Pelajaran

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 dict

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

Mengirim 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 requests untuk pengambilan sinkron yang sederhana
  • Gunakan httpx.AsyncClient untuk permintaan asinkron tanpa pemblokiran
  • Selalu tetapkan timeout= dan panggil raise_for_status()
  • Gunakan kembali sesi/klien untuk beberapa pemanggilan ke host yang sama
  • Gunakan .json(), .text, atau .content berdasarkan 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

  1. Klien HTTP untuk Agen: httpx dan requests
  2. Mengurai HTML dengan BeautifulSoup
  3. Menangani Paginasi dan Konten Dinamis
  4. Praktik Scraping yang Bertanggung Jawab
← Kembali ke AI Agents