0Pricing
AI Agents · บทเรียน

เอเจนต์วิจัยผ่านเว็บ

ผสานเครื่องมือค้นหา เครื่องมือดึงข้อมูล และ LLM เพื่อค้นคว้าหัวข้อหนึ่งแล้วเขียนบทสรุปพร้อมแหล่งอ้างอิง

เอเจนต์วิจัยผ่านเว็บ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เป้าหมายโครงการ

สร้างเอเจนต์ที่ค้นคว้าหัวข้อโดยค้นหาเว็บ ดึงหน้าเว็บ และเขียนสรุปพร้อมแหล่งอ้างอิง — คล้าย Perplexity ขนาดเล็ก

เครื่องมือที่ต้องใช้

  1. search — ส่งคำค้นไปยังส่วนเชื่อมต่อการค้นหา (Tavily, Serper, Brave) แล้วส่งคืนผลลัพธ์
  2. fetch_url — ดาวน์โหลดหน้าเว็บแล้วส่งคืนข้อความที่ทำความสะอาดแล้ว
  3. answer — เอเจนต์เขียนสรุปสุดท้ายพร้อมการอ้างอิง

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]   # truncate

Step 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'}

เพิ่มขีดจำกัดจำนวนขั้นตอน

หากไม่มีขีดจำกัด เอเจนต์อาจทำงานวนไปตลอด max_steps=8 เป็นค่าเริ่มต้นที่เหมาะสม

ตัดทอนหน้าเว็บที่ดึงมา

หน้าเว็บส่วนใหญ่มีขนาด 50KB ขึ้นไป ซึ่งใหญ่เกินไปมาก ให้ตัดทอนเหลือ 5000 อักขระ (ประมาณ 1300 โทเค็น) โดยทั่วไปโมเดลแทบไม่ต้องใช้มากกว่านี้

ปฏิบัติตาม robots.txt

การเรียกดูเว็บในระบบจริงต้องปฏิบัติตาม robots.txt และข้อกำหนดการให้บริการของเว็บไซต์ หากไม่แน่ใจ ให้ใช้บริการค้นหาและดึงข้อมูลที่มีการจัดการให้

แคชผลลัพธ์

คำค้นและ URL เดิมจะถูกเรียกใช้บ่อย ให้แคชผลลัพธ์ใน Redis เป็นเวลาหนึ่งชั่วโมง:

@lru_cache(maxsize=1000)
def cached_fetch(url):
    return fetch_url(url)

จัดการความล้มเหลว

ข้อผิดพลาดของเครือข่ายเกิดขึ้นเป็นประจำ ให้ส่งข้อผิดพลาดกลับไปยังโมเดลเพื่อให้โมเดลลองใช้แหล่งอื่น:

try:
    return fetch_url(url)
except Exception as e:
    return {'error': f'Could not fetch {url}: {e}'}

บังคับให้มีการอ้างอิง

ลงท้ายพรอมต์ระบบด้วย: “คำตอบสุดท้ายของคุณต้องมี URL สำหรับทุกข้ออ้าง เช่น [1] https://...” — และควรพิจารณาตรวจสอบสคีมาของผลลัพธ์ด้วย

เฝ้าดูค่าใช้จ่าย

เอเจนต์ค้นคว้ามีค่าใช้จ่ายสูง — เรียกใช้เครื่องมือ 5–15 ครั้งต่อคำถาม โดยแต่ละครั้งดึงข้อมูลหลายกิโลไบต์ กำหนดขีดจำกัดงบประมาณต่อคำค้น

ขีดจำกัดจำนวนขั้นตอน

เหตุใดจึงต้องกำหนดขีดจำกัด max_steps ให้กับวงจรการทำงานของเอเจนต์

สรุป

การค้นหา + การดึงข้อมูล + LLM + ขีดจำกัดจำนวนขั้นตอน = เอเจนต์ค้นคว้าที่ใช้งานได้ใน 50 บรรทัด โครงการที่ 3 อันยอดเยี่ยม

คำถามที่พบบ่อย

บทเรียน “เอเจนต์วิจัยผ่านเว็บ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เอเจนต์วิจัยผ่านเว็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เอเจนต์วิจัยผ่านเว็บ”

ผสานเครื่องมือค้นหา เครื่องมือดึงข้อมูล และ LLM เพื่อค้นคว้าหัวข้อหนึ่งแล้วเขียนบทสรุปพร้อมแหล่งอ้างอิง คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “เอเจนต์วิจัยผ่านเว็บ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บอตถามตอบบนเอกสารของคุณ
  2. เอเจนต์อธิบายโค้ด
  3. เอเจนต์วิจัยผ่านเว็บ
  4. ผู้ช่วย SQL สำหรับ DB ของคุณ
← กลับไปที่ AI Agents