0Pricing
AI Agents · 강의

웹 탐색 연구 에이전트

검색 도구, 가져오기 도구, LLM을 결합해 주제를 조사하고 출처가 포함된 요약을 작성해보세요.

웹 탐색 연구 에이전트은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

프로젝트 목표

웹을 검색하고, 페이지를 가져오고, 출처가 있는 요약을 작성하여 주제를 조사하는 에이전트를 구축합니다. Perplexity의 작은 버전과 같은 프로젝트입니다.

필요한 도구

  1. search — 검색 API(Tavily, Serper, Brave)에 query를 보내고 결과를 반환
  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와 사이트의 서비스 약관을 반드시 준수해야 합니다. 확실하지 않다면 관리형 검색·가져오기 서비스를 사용하십시오.

결과 캐시하기

동일한 query와 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번 도구를 호출하고, 호출마다 수 KB를 가져옵니다. query별 예산 상한을 설정하십시오.

단계 상한

에이전트 반복 실행에 max_steps 제한을 설정하는 이유는 무엇일까요?

정리

검색 + 가져오기 + LLM + 단계 상한을 조합하면 50줄로 작동하는 조사 에이전트를 만들 수 있습니다. 훌륭한 세 번째 프로젝트입니다.

자주 묻는 질문

“웹 탐색 연구 에이전트” 강의는 무료인가요?

네 — “웹 탐색 연구 에이전트” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

“웹 탐색 연구 에이전트”에서 뭘 배우나요?

검색 도구, 가져오기 도구, LLM을 결합해 주제를 조사하고 출처가 포함된 요약을 작성해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Agents을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“웹 탐색 연구 에이전트” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 문서 기반 질의응답 봇
  2. 코드 설명 에이전트
  3. 웹 탐색 연구 에이전트
  4. DB용 SQL 어시스턴트
← AI Agents(으)로 돌아가기