LLM 모델의 데이터 학습 시점 한계(Knowledge Cutoff)를 극복하기 위해, 직접 실시간 인터넷 서핑을 수행하여 최신 뉴스와 데이터를 탐색하고 출처를 명시하여 답하는 AI 에이전트를 제작합니다.
1. 웹 서핑 에이전트 전문 용어 사전 (Glossary)
- Search API (Tavily / SerpAPI): AI 에이전트 전용으로 광고와 불필요한 태그를 제거하고 본문 핵심 텍스트만 깨끗하게 반환해 주는 전용 검색 API입니다.
- Web Scraping (웹 스크래핑): 수집된 웹페이지 URL에 접속하여 HTML 구조를 분석하고 본문 텍스트를 정제해내는 기술입니다.
- Knowledge Cutoff: 특정 LLM 모델의 사전 학습 데이터가 차단된 최신 날짜 시점을 뜻합니다.
2. Tavily API 연동 웹 탐색 AI 에이전트 파이썬 코드
import requests
from openai import OpenAI
client = OpenAI()
def search_web_tavily(query, tavily_api_key):
"""Tavily API로 웹 실시간 정보 탐색"""
url = "https://api.tavily.com/search"
payload = {
"api_key": tavily_api_key,
"query": query,
"search_depth": "basic",
"max_results": 3
}
response = requests.post(url, json=payload).json()
context = ""
for item in response.get("results", []):
context += f"
[출처: {item['url']}]
제목: {item['title']}
내용: {item['content']}
"
return context
def web_agent(user_query, tavily_key):
# 1. 실시간 웹 서핑 수행
search_results = search_web_tavily(user_query, tavily_key)
# 2. 웹 서핑 결과를 컨텍스트로 결합하여 LLM 답변 요청
prompt = f"""
다음 실시간 웹 서핑 검색 결과를 바탕으로 사용자 질문에 답변해 줘. 반드시 출처 URL을 명시해 줘.
[실시간 웹 서핑 데이터]
{search_results}
[질문]
{user_query}
"""
res = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
return res.choices[0].message.content
3. 자주 묻는 질문 (Q&A)
Q. 일반 웹 크롤링(BeautifulSoup) 대신 Tavily나 SerpAPI를 쓰는 이유는? A. 일반 웹사이트는 보안 차단(CAPTCHA, Cloudflare)이 자주 걸리고 헤더/푸터 광고 태그가 섞여 있어 토큰이 낭비됩니다. 반면 Tavily는 AI 연동 전용으로 본문 텍스트만 정제하여 전달하므로 토큰을 80% 이상 절약합니다.