Agen Riset Penjelajahan Web
Gabungkan alat pencarian, alat pengambilan, dan LLM untuk meneliti suatu topik serta menulis ringkasan dengan sumber.
Agen Riset Penjelajahan Web adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 3 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.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Tujuan Proyek
Buat agen yang meneliti suatu topik dengan mencari di web, mengambil halaman, dan menulis ringkasan bersumber — seperti versi kecil Perplexity.
Alat yang Anda Perlukan
- search — mengkueri API pencarian (Tavily, Serper, Brave) dan mengembalikan hasil
- fetch_url — mengunduh halaman dan mengembalikan teks yang telah dibersihkan
- answer — agen menulis ringkasan akhir dengan kutipan
Step 1: Search Tool
import requests
def search(query: str, k: int = 5) -> list[dict]:
r = requests.post(
'https://api.tavily.com/search',
json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
)
return r.json()['results'] # list of {url, title, snippet}Step 2: Fetch Tool
from bs4 import BeautifulSoup
def fetch_url(url: str) -> str:
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, 'html.parser')
for tag in soup(['script', 'style', 'nav', 'footer']):
tag.decompose()
return soup.get_text(separator='\n', strip=True)[:5000] # truncateStep 3: Tool Definitions
tools = [
{'type': 'function', 'function': {
'name': 'search',
'description': 'Search the web for a query, return top results with URLs',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}},
{'type': 'function', 'function': {
'name': 'fetch_url',
'description': 'Download the text of a URL',
'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
}}
]
import json
print(json.dumps(tools, indent=2))
Step 4: The Agent Loop
def research(question, max_steps=8):
messages = [
{'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
{'role': 'user', 'content': question}
]
for _ in range(max_steps):
r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
msg = r.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tc in msg.tool_calls:
result = dispatch(tc)
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
return 'Step limit reached'Tool Dispatcher
def dispatch(tc):
args = json.loads(tc.function.arguments)
if tc.function.name == 'search':
return search(**args)
if tc.function.name == 'fetch_url':
return fetch_url(**args)
return {'error': 'unknown tool'}Tambahkan Batas Langkah
Tanpa batas, agen dapat berputar tanpa henti. max_steps=8 adalah nilai bawaan yang wajar.
Potong Halaman yang Diambil
Sebagian besar halaman berukuran 50 KB atau lebih — terlalu besar. Potong menjadi 5000 karakter (sekitar 1300 token). Model jarang memerlukan lebih banyak.
Patuhi robots.txt
Penjelajahan web dalam produksi harus mematuhi robots.txt dan Ketentuan Layanan situs. Jika ragu, gunakan layanan pencarian/pengambilan terkelola.
Simpan Hasil dalam Tembolok
Kueri dan URL yang sama akan sering diminta. Simpan hasil dalam tembolok Redis selama satu jam:
@lru_cache(maxsize=1000)
def cached_fetch(url):
return fetch_url(url)Tangani Kegagalan
Kesalahan jaringan adalah hal biasa. Kembalikan kesalahan kepada model agar model dapat mencoba sumber lain:
try:
return fetch_url(url)
except Exception as e:
return {'error': f'Could not fetch {url}: {e}'}Paksa Penggunaan Kutipan
Akhiri instruksi sistem dengan: "Jawaban akhir Anda harus menyertakan URL untuk setiap klaim, seperti [1] https://..." — dan pertimbangkan pemeriksaan skema output.
Pantau Biaya
Agen penelitian itu mahal — 5–15 pemanggilan alat per pertanyaan, masing-masing mengambil data berukuran kilobita. Tetapkan batas anggaran per kueri.
Batas Langkah
Mengapa menetapkan batas max_steps pada perulangan agen?
Ringkasan
Pencarian + pengambilan + LLM + batas langkah = agen penelitian yang berfungsi dalam 50 baris. Proyek 3 yang sangat baik.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Agen Riset Penjelajahan Web” gratis?
Ya — teks lengkap “Agen Riset Penjelajahan Web” 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 “Agen Riset Penjelajahan Web”?
Gabungkan alat pencarian, alat pengambilan, dan LLM untuk meneliti suatu topik serta menulis ringkasan dengan sumber. 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 3 dari 4.
Berapa lama pelajaran “Agen Riset Penjelajahan Web” 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
- Bot Tanya Jawab untuk Dokumen Anda
- Agen Penjelas Kode
- Agen Riset Penjelajahan Web
- Asisten SQL untuk DB Anda